SlideShare una empresa de Scribd logo
2
Lo más leído
10
Lo más leído
16
Lo más leído
CODIGOS DE HUFFMAN ESTRUCTURAS DE DATOS
CODIFICACION La palabra codigo ya nos indica algo “secreto” Codificar un texto  Reemplazarlo con códigos que solo nosotros conozcamos Para obtener el texto original Se debe decodificar En el envío de información es muy popular Para ocular la información y volver el envio mas seguro
UNA FORMA Codigos binarios  Que represente cada letra del alfabeto. Si el alfabeto esta conformado por A, B, C, y D Podemos codificar cada letra con 010, 100, 000, 111 La cadena ABACCDA quedaria 010100010000000111010
ANALIZANDO Ventajas Es muy facil codificar y decodificar Solo reemplazar Cada código tiene la misma longitud Desventajas La cadena resultante es muy larga comparada con el mensaje Como se podra reducir la cadena codificada?
MEJORAR LA CODIFICACION A  es la letra que mas se repite en el mensaje, Debería tener un código pequeño(menos espacio) La letra que menos aparece Puede tener un codigo mas grande El codigo de cada letra Puede depender de la frecuencia de la letra en la cadena O del idioma
UN EJEMPLO A, B, C, D Se le puede asignar 0, 110, 10, 111 Entonces ABACCDA es 011001010111 Ya!, mas pequeña Codificar es super facil Y Decodificar???
DECODIFICANDO 0 1 1 0 0 1 0 1 0 1 1 1 A Puede ser  B, C o D ? Puede ser  B o D ? B A Puede ser  B, C o D ? C Puede ser  B, C o D C Puede ser  B, C o D ? Puede ser  B o C ? D Para decodificar hay que elegir. El valor del codigo depende del valor siguiente: 1 o 0, binario  A 0 B 110 C 10 D 111
CONCLUSION Para decodificar Escoger primer bit Determinar código entre ABCD A B C D Si es 0, es la letra A Si no, la letra podria ser BCD A(0) B C D(1) 0 1 1 0 0 1 0 1 0 1 1 1 Si es 0: C Si no, Determinar codigo entre BD C(0) B D(1) Si es 0: B Si no, es D Escoger siguiente bit Determinar codigo entre BCD Escoger siguiente bit Determinar codigo entre BD B(0) D(1) Arbol de Huffman   Si logro generar un arbol asi, podre obtener los codigos:  codificar Y luego podre volver a la informacion inicial:  decodificar A 0 B 110 C 10 D 111
CONSTRUIR EL ARBOL Necesitamos la frecuencia de cada letra en la cadena Ej:  ABACCDA  Empecemos con las dos letras de menor frecuencia Se unen y crean un nuevo simbolo La frecuencia del nuevo es la suma de los dos ant. Se desechan los dos anteriores El grupo de letras se vuelve mas pequeño Todo se repite hasta que no queden mas letras ind. Notemos que c/letra es una hoja BD Una vez construido el arbol, obtendremos los codigos de c/letra A 3 B 1 C 2 D 1 A 3 B 1 C 2 D 1 B(0) 1 D(1) 1 A 3 C 2 B D 2 C(0) 2 BD(1) 2 CBD 4 C B D 4 A(0) 3 CBD(1) 4 ACBD 7 ABCD 7
CONSEGUIR LOS CODIGOS Es una busqueda binaria Los codigos se van acumulando a medida que se busca la letra Las letras siempre son hojas Si letra buscada esta En el subarbol izquierdo, se acumula un 0 o En el subarbol derecho, se acumula un 1 0 1 11 110 1 10 1 11 111 CBD 4 B(0) 1 D(1) 1 C(0) 2 BD(1) 2 A(0) 3 CBD(1) 4 ACBD 7 A B C D
EJERCICIO EN CLASE Construya el arbol de Huffman con la siguientes frecuencias A 15 B 6 C 7 D 12 E 25 F 4 G 6 H 3 I 15
DECIDIENDO QUE USAR Los nodos con menor frecuencia Salen primero Se unen, se crea un nuevo nodo Este se vuelve a ubicar en el listado de letras Cola de Prioridad , prioridad: la frecuencia Primero, se construyen hojas para c/letra Para facilitar la ubicación de un nodo hoja al crear codigos Estos son alamacenados a una cola de Prioridad A 3 B 1 C 2 D 1 A 3 B 1 C 2 D 1
DECLARACION DE TDA: ARBOL E INFO typedef struct { string Cadena; int frecuencia; char bit; }Info; Cada elemento del nodo tiene: una cadena, frecuencia y un bit Es ideal agrupar toda esta informacion en un nuevo tipo de dato typedef struct { Generico G; NodoArbol *izq, *der; }NodoAB; Cada Nodo tendra Info, sub. Iza. Y subarbol der:
LA COLA DE PRIORIDAD La cola de Prioridad almacenará nodos de Arbol.  Se la puede implementar como una lista ordenada o un arreglo Si fuese lista, cada nodo seria y la cola: typedef LSE Cola; typedef struct { Generico G; //La informacion que almacena es NodoAB * NodoCola *sig; }Nodo_LSE;
IMPLENTACION: CONSTRUIR ARBOL Arbol ConstruirHuffman(Info_Nodo Frecuencias[], int n){ Cola Q; Info_Arbol I; Arbol nuevo, aizq, ader; VaciarCola(Q); //Construir nodos hojas for(i = 0; i < n; i++){ nuevo = NuevaHoja(Frecuencias[i]); EnCola(Q, nuevo); } //Construir arbol while(TRUE){ aizq = Desencola(Q); ader = Desencola(Q); aizq->I.bit = ‘0’; ader->I.bit = ‘1’; tmp.frec = aizq->I.frec + ader->I.frec; tmp.cadena =  StringConcat(aizq->I.cadena, ader->I.cadena); nuevo = NuevaHoja(tmp); nuevo->izq = aizq;  nuevo->der = ader; if(QEstaVacia(Q)) break; EnCola(C, nuevo); } return nuevo; }
IMPLEMENTACION: ASIGNAR CODIGOS string CodificarLetra(char L, Arbol H){ Arbol p; string strcodigo=“”; p = A; while(!EsHoja(p) && !EstaVacio(p)){ if(FindChar(p->izq->I.cadena, L) >= 0){ strcodigo =  Concat(strcodigo, “0”); p = p->izq; } else if (FindChar(p->der->I.cadena, L) >= 0){ strcodigo =  Concat(strcodigo, “1”); p = p->der; } else { strcodigo = CopyString(“”); break; } } return strcodigo; }

Más contenido relacionado

PPT
CodificacióN De Canal
PPT
Modulación delta
PDF
Probabilidad de error en modulación digital
PPTX
Codigos Corrector de Errores
PPT
Espectro Ensanchado - Telecomunicaciones III
PPTX
Modulación
PPT
Codigos de Linea - Telecomunicaciones III
PPT
Lecture 6 formateo de señales en pcm
CodificacióN De Canal
Modulación delta
Probabilidad de error en modulación digital
Codigos Corrector de Errores
Espectro Ensanchado - Telecomunicaciones III
Modulación
Codigos de Linea - Telecomunicaciones III
Lecture 6 formateo de señales en pcm

La actualidad más candente (20)

PPTX
PPTX
Codificación de línea
PPTX
Métodos para la detección y corrección de errores
PDF
Árboles binarios, ABB y AVL
PPTX
3.PCM Digitalizacion de señal analogica
PPT
1 modulación psk
DOCX
Practica de guias de onda (autoguardado)
PDF
Detección de errores CRC
PPTX
Códigos y Modos de Transmisión de Datos
PPTX
Codigos de linea 171121 (1).pptx
PPTX
Modulación por desplazamiento de fase (psk) exposicion
PDF
CONJUNTO DE INSTRUCCIONES PIC16F877A
PPTX
4.TDM Multiplexacion por division de tiempo
PPTX
Capacidad del canal
PPTX
Tablas Hash
PPTX
PPTX
Mezclador FDM
PPT
Ejercicios
PPT
Direccionamiento ip
Codificación de línea
Métodos para la detección y corrección de errores
Árboles binarios, ABB y AVL
3.PCM Digitalizacion de señal analogica
1 modulación psk
Practica de guias de onda (autoguardado)
Detección de errores CRC
Códigos y Modos de Transmisión de Datos
Codigos de linea 171121 (1).pptx
Modulación por desplazamiento de fase (psk) exposicion
CONJUNTO DE INSTRUCCIONES PIC16F877A
4.TDM Multiplexacion por division de tiempo
Capacidad del canal
Tablas Hash
Mezclador FDM
Ejercicios
Direccionamiento ip
Publicidad

Similar a CODIGO DE HUFFMAN (20)

PPTX
TPerterterteertertrerterter terterterterterterN°7 - AB.pptx
DOCX
Codigo Binario
DOCX
Parte 3 digitales cesar hernandez
PDF
CODIGO DE CARGA para ingenieria universidad
PDF
Algoritmos de compresion
PPTX
Codigos binarios
PPSX
6 Codificación de fuente.ppsx
DOCX
Codigos digitales
PPTX
Codigos binarios
PPT
PPT
Lecture 3 codificación fuente
PDF
Codigos..
DOCX
Codigos
PDF
7 Códigos binarios sistemas digitales: principios y aplicaciones
PPT
Arblores en C++ para el uso e implementacion de los mismos.
PPTX
sumadores, codificadores, decodificadores,multiplexores, demultiplexores
PDF
Puerto paralelo
PDF
Puerto paralelo
PPT
12. Arboles.ppt
PPTX
CODIGO BCD E1.pptx
TPerterterteertertrerterter terterterterterterN°7 - AB.pptx
Codigo Binario
Parte 3 digitales cesar hernandez
CODIGO DE CARGA para ingenieria universidad
Algoritmos de compresion
Codigos binarios
6 Codificación de fuente.ppsx
Codigos digitales
Codigos binarios
Lecture 3 codificación fuente
Codigos..
Codigos
7 Códigos binarios sistemas digitales: principios y aplicaciones
Arblores en C++ para el uso e implementacion de los mismos.
sumadores, codificadores, decodificadores,multiplexores, demultiplexores
Puerto paralelo
Puerto paralelo
12. Arboles.ppt
CODIGO BCD E1.pptx
Publicidad

Más de Gustavo Salazar Loor (20)

PDF
Max Plus Compilar vhdl
PPT
Electronica I Clase07
PPT
Electronica I Clase07
PPT
Electronica I Clase06
PPT
Electronica I Clase05
PPT
Electronica I Clase04
PPT
Electronica I Clase03
PPT
Electronica I Clase02
PPT
Electronica I Clase01
PPT
ARBOLES MULTICAMINOS
PPT
LISTAS ESPECIALES
PPT
RESPIRACION Y FERMENTACION
Max Plus Compilar vhdl
Electronica I Clase07
Electronica I Clase07
Electronica I Clase06
Electronica I Clase05
Electronica I Clase04
Electronica I Clase03
Electronica I Clase02
Electronica I Clase01
ARBOLES MULTICAMINOS
LISTAS ESPECIALES
RESPIRACION Y FERMENTACION

Último (20)

PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
Metodologías Activas con herramientas IAG
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
biología es un libro sobre casi todo el tema de biología
PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
Lección 6 Escuela Sab. A través del mar rojo.pdf
Cosacos y hombres del Este en el Heer.ppt
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Metodologías Activas con herramientas IAG
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
ciencias-1.pdf libro cuarto basico niños
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
caso clínico iam clinica y semiología l3.pptx
biología es un libro sobre casi todo el tema de biología
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
Tomo 1 de biologia gratis ultra plusenmas

CODIGO DE HUFFMAN

  • 1. CODIGOS DE HUFFMAN ESTRUCTURAS DE DATOS
  • 2. CODIFICACION La palabra codigo ya nos indica algo “secreto” Codificar un texto Reemplazarlo con códigos que solo nosotros conozcamos Para obtener el texto original Se debe decodificar En el envío de información es muy popular Para ocular la información y volver el envio mas seguro
  • 3. UNA FORMA Codigos binarios Que represente cada letra del alfabeto. Si el alfabeto esta conformado por A, B, C, y D Podemos codificar cada letra con 010, 100, 000, 111 La cadena ABACCDA quedaria 010100010000000111010
  • 4. ANALIZANDO Ventajas Es muy facil codificar y decodificar Solo reemplazar Cada código tiene la misma longitud Desventajas La cadena resultante es muy larga comparada con el mensaje Como se podra reducir la cadena codificada?
  • 5. MEJORAR LA CODIFICACION A es la letra que mas se repite en el mensaje, Debería tener un código pequeño(menos espacio) La letra que menos aparece Puede tener un codigo mas grande El codigo de cada letra Puede depender de la frecuencia de la letra en la cadena O del idioma
  • 6. UN EJEMPLO A, B, C, D Se le puede asignar 0, 110, 10, 111 Entonces ABACCDA es 011001010111 Ya!, mas pequeña Codificar es super facil Y Decodificar???
  • 7. DECODIFICANDO 0 1 1 0 0 1 0 1 0 1 1 1 A Puede ser B, C o D ? Puede ser B o D ? B A Puede ser B, C o D ? C Puede ser B, C o D C Puede ser B, C o D ? Puede ser B o C ? D Para decodificar hay que elegir. El valor del codigo depende del valor siguiente: 1 o 0, binario A 0 B 110 C 10 D 111
  • 8. CONCLUSION Para decodificar Escoger primer bit Determinar código entre ABCD A B C D Si es 0, es la letra A Si no, la letra podria ser BCD A(0) B C D(1) 0 1 1 0 0 1 0 1 0 1 1 1 Si es 0: C Si no, Determinar codigo entre BD C(0) B D(1) Si es 0: B Si no, es D Escoger siguiente bit Determinar codigo entre BCD Escoger siguiente bit Determinar codigo entre BD B(0) D(1) Arbol de Huffman Si logro generar un arbol asi, podre obtener los codigos: codificar Y luego podre volver a la informacion inicial: decodificar A 0 B 110 C 10 D 111
  • 9. CONSTRUIR EL ARBOL Necesitamos la frecuencia de cada letra en la cadena Ej: ABACCDA Empecemos con las dos letras de menor frecuencia Se unen y crean un nuevo simbolo La frecuencia del nuevo es la suma de los dos ant. Se desechan los dos anteriores El grupo de letras se vuelve mas pequeño Todo se repite hasta que no queden mas letras ind. Notemos que c/letra es una hoja BD Una vez construido el arbol, obtendremos los codigos de c/letra A 3 B 1 C 2 D 1 A 3 B 1 C 2 D 1 B(0) 1 D(1) 1 A 3 C 2 B D 2 C(0) 2 BD(1) 2 CBD 4 C B D 4 A(0) 3 CBD(1) 4 ACBD 7 ABCD 7
  • 10. CONSEGUIR LOS CODIGOS Es una busqueda binaria Los codigos se van acumulando a medida que se busca la letra Las letras siempre son hojas Si letra buscada esta En el subarbol izquierdo, se acumula un 0 o En el subarbol derecho, se acumula un 1 0 1 11 110 1 10 1 11 111 CBD 4 B(0) 1 D(1) 1 C(0) 2 BD(1) 2 A(0) 3 CBD(1) 4 ACBD 7 A B C D
  • 11. EJERCICIO EN CLASE Construya el arbol de Huffman con la siguientes frecuencias A 15 B 6 C 7 D 12 E 25 F 4 G 6 H 3 I 15
  • 12. DECIDIENDO QUE USAR Los nodos con menor frecuencia Salen primero Se unen, se crea un nuevo nodo Este se vuelve a ubicar en el listado de letras Cola de Prioridad , prioridad: la frecuencia Primero, se construyen hojas para c/letra Para facilitar la ubicación de un nodo hoja al crear codigos Estos son alamacenados a una cola de Prioridad A 3 B 1 C 2 D 1 A 3 B 1 C 2 D 1
  • 13. DECLARACION DE TDA: ARBOL E INFO typedef struct { string Cadena; int frecuencia; char bit; }Info; Cada elemento del nodo tiene: una cadena, frecuencia y un bit Es ideal agrupar toda esta informacion en un nuevo tipo de dato typedef struct { Generico G; NodoArbol *izq, *der; }NodoAB; Cada Nodo tendra Info, sub. Iza. Y subarbol der:
  • 14. LA COLA DE PRIORIDAD La cola de Prioridad almacenará nodos de Arbol. Se la puede implementar como una lista ordenada o un arreglo Si fuese lista, cada nodo seria y la cola: typedef LSE Cola; typedef struct { Generico G; //La informacion que almacena es NodoAB * NodoCola *sig; }Nodo_LSE;
  • 15. IMPLENTACION: CONSTRUIR ARBOL Arbol ConstruirHuffman(Info_Nodo Frecuencias[], int n){ Cola Q; Info_Arbol I; Arbol nuevo, aizq, ader; VaciarCola(Q); //Construir nodos hojas for(i = 0; i < n; i++){ nuevo = NuevaHoja(Frecuencias[i]); EnCola(Q, nuevo); } //Construir arbol while(TRUE){ aizq = Desencola(Q); ader = Desencola(Q); aizq->I.bit = ‘0’; ader->I.bit = ‘1’; tmp.frec = aizq->I.frec + ader->I.frec; tmp.cadena = StringConcat(aizq->I.cadena, ader->I.cadena); nuevo = NuevaHoja(tmp); nuevo->izq = aizq; nuevo->der = ader; if(QEstaVacia(Q)) break; EnCola(C, nuevo); } return nuevo; }
  • 16. IMPLEMENTACION: ASIGNAR CODIGOS string CodificarLetra(char L, Arbol H){ Arbol p; string strcodigo=“”; p = A; while(!EsHoja(p) && !EstaVacio(p)){ if(FindChar(p->izq->I.cadena, L) >= 0){ strcodigo = Concat(strcodigo, “0”); p = p->izq; } else if (FindChar(p->der->I.cadena, L) >= 0){ strcodigo = Concat(strcodigo, “1”); p = p->der; } else { strcodigo = CopyString(“”); break; } } return strcodigo; }