SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Universidad de Cuenca
Programación III
Estructura de Archivos
Codificación de Huffman
Integrantes:
● Jefferson Arias
● Daniel Gomez
● Jonnathan Peñaranda
● Gabriela Verdugo
Concepto
● La codificación Huffman es un algoritmo usado para compresión de datos.
● El algoritmo de codificación/compresión Huffman se propuso en 1952 como
una forma sencilla y óptima de mapear cada símbolo de un alfabeto con un
código (codeword) de longitud óptima.
● La codificación Huffman usa un método específico para elegir la
representación de cada símbolo, que da lugar a un código prefijo que
representa los caracteres más comunes usando las cadenas de bits más
cortas, y viceversa.
Procedimiento de asignación
● El proceso de asignación de códigos se lleva a cabo mediante la
construcción de un árbol binario:
○ Recorrer el árbol en pre-orden hacia el nodo que contiene el carácter con
su frecuencia.
○ Los nodos menos probables se unen sucesivamente para formar otro
nodo de mayor probabilidad, de forma que cada uno de los enlaces
añade un bit al código de los símbolos que estamos juntando.
○ Este proceso termina cuando sólo se dispone de un nodo, de forma que
éste representa la raíz del árbol.
Ejemplo 1.
● Palabra a codificar : LAPTOP
1. Contar el número de peticiones de cada carácter es decir el número de
repeticiones de cada uno de los caracteres
L A P T O P
L A P T O P
1
L A P T O P
1 1
L A P T O P
1 1 1
L A P T O P
1 1 1 1
L A P T O P
1 1 1 1 1
L A P T O P
1 1 1 1 1 2
L A T O P
1 1 1 1 2
● Se pone en una lista enlazada los caracteres y sus frecuencias. Y eliminamos
los que se repiten (Se deja uno solo).
● El siguiente paso es crear un nuevo árbol binario pasando los dos primeros
nodos como hojas del árbol.
L 1 A 1 T 1 O 1 P 2
Null:2
L:1 A:1
El nodo raíz se guarda como null junto con la suma de las frecuencias de los
nodos hijos.
● La lista quedaría de esta manera:
● El siguiente paso es insertar nuestro árbol a la lista de nodos de forma
ordenada; como la frecuencia de nuestro nodo raíz es dos, entonces se
colocaría al final de la lista ya que en este caso no hay frecuencias más altas.
T 1 O 1 P 2
T 1 O 1 P 2 Null 2
L:1 A:1
● Repetimos el mismo paso volvemos a tomar los dos primero nodos de la lista
y formamos el árbol con el nodo raíz que en la frecuencia es la suma de los
hijos.
Null:2
T:1 O:1
● Ahora insertamos el árbol de manera ordenada en la lista de nodos que
teníamos definida anteriormente.
P 2 Null 2 Null 2
L:1 A:1 T:1 O:1
● Volvemos a tomar los dos nodos siguientes y formamos el árbol.
Null:4
P:2 Null:2
L:1 A:1
● Ahora insertamos el árbol de manera ordenada a nuestra lista.
Null 2 Null 4
T:1 O:1 P:2 Null:2
L:1 A:1
● Volvemos a tomar los dos primeros nodos de esta lista.
Null:6
Null:2 Null:4
T:1
O:1 P:2 Null:2
L:1 A:1
● Ahora es momento de poner los pesos de nuestro árbol.
Null:6
Null:3 Null:3
T:1 O:1 Null:2
L:1 A:1
P:2
0 1
0 1
0
1
1
0
● Los valores de cada una de las letras son:
P : 10
T: 00
O: 01
A: 111
L: 110
● Entonces la palabra entera es la unión de el valor de cada letra.
L A P T O P
110 111 10 00 01 10
CODIFICACIÓN DE HUFFMAN
Ejemplo 2.
● Palabra a codificar : LAPTOP
● A cada una de las letras le ponemos las frecuencia con la que se repiten
tomándolo del procedimiento anterior quedaría de la siguiente forma.
L A P T O P
L A P T O P
1 1 1 1 1 2
● Para formar el árbol tomamos los nodos de dos en dos con los menores
pesos y vamos formando los árboles.
Null:2
L:1 A:1
Null:2
T:1 O:1
Null:2
P:2
● Lo siguiente que se debe hacer es tomar los árboles de dos en dos
para formar un solo árbol
Null:2
L:1
A:1
Null:2
T:1 O:1
Null:4
Null:2
L:1 A:1
Null:2
T:1 O:1
Null:4
Null:2
P:2
Null:6
● Ahora debemos etiquetar cada una de las aristas.
Null:2
L:1 A:1
Null:2
T:1 O:1
Null:4
Null:2
P:2
Null:6
0 1
10
0 0
0
1 1
● Los valores de cada una de las letras son:
P : 10
T: 010
O: 011
A: 001
L: 000
● Entonces la palabra entera es la unión de el valor de cada letra.
L A P T O P
000 001 10 010 10 10
CODIFICACIÓN DE HUFFMAN
Factor de Comprensión.
● La compresión de datos es la reducción del volumen de datos tratables para
representar una determinada información empleando una menor cantidad de
espacio.
● El espacio que ocupa una información codificada (datos, señal digital, etc.)
sin compresión es el cociente entre la frecuencia de muestreo y la resolución.
Por tanto, cuantos más bits se empleen mayor será el tamaño del archivo.
Conclusiones.
● La codificación de Huffman es útil para la codificación de las palabras y
ponerlas en binario ya que el árbol que se forma para la codificación es
binario.
● Los resultados de la codificación en algunos casos son diferentes
dependiendo del recorrido que se use para el árbol pero existe coincidencia
en algunas letras que es el mismo resultado en binario.
Bibliografía.
● http://www.grc.upv.es/docencia/tdm/practicas/P1.pdf
● http://joselu.webs.uvigo.es/material/Algoritmo%20de%20Huffman.pdf
● https://learn.yancyparedes.net/2013/10/an-implementation-of-the-huffman-c
ode-for-compressing-and-decompressing-strings/

Más contenido relacionado

La actualidad más candente

Algoritmos intercalación
Algoritmos intercalaciónAlgoritmos intercalación
Algoritmos intercalaciónPaul Arévalo
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externoFernando Solis
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y NodosBoris Salleg
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Ana Castro
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de GrafosSandra Biondi
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisionesemiru48
 

La actualidad más candente (20)

Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Pt7seccion2
Pt7seccion2Pt7seccion2
Pt7seccion2
 
Tipos de Datos Abstractos.
Tipos de Datos Abstractos.Tipos de Datos Abstractos.
Tipos de Datos Abstractos.
 
Algoritmos intercalación
Algoritmos intercalaciónAlgoritmos intercalación
Algoritmos intercalación
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Listas
ListasListas
Listas
 
4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo4. algoritmo de ordenamiento externo
4. algoritmo de ordenamiento externo
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Ordenamiento parte 2
Ordenamiento parte 2Ordenamiento parte 2
Ordenamiento parte 2
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de Grafos
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 

Similar a Codificación de Huffman

Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datosvanessa peñafiel
 
UNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IUNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IJULIO
 
Tabla periódica de los elementos químicos
Tabla periódica de los elementos químicosTabla periódica de los elementos químicos
Tabla periódica de los elementos químicosZoila Andrade
 
Codificación de huffman
Codificación de huffmanCodificación de huffman
Codificación de huffmanMateo Quizhpi
 
Algoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colasAlgoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colasVivianaParraga3
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 

Similar a Codificación de Huffman (10)

Huffman y-lzw
Huffman y-lzwHuffman y-lzw
Huffman y-lzw
 
Árboles binarios
Árboles binariosÁrboles binarios
Árboles binarios
 
Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datos
 
UNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IUNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{I
 
Codificación de Huffman
Codificación de HuffmanCodificación de Huffman
Codificación de Huffman
 
Tabla periódica de los elementos químicos
Tabla periódica de los elementos químicosTabla periódica de los elementos químicos
Tabla periódica de los elementos químicos
 
Pilas
PilasPilas
Pilas
 
Codificación de huffman
Codificación de huffmanCodificación de huffman
Codificación de huffman
 
Algoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colasAlgoritmos y Estructura de Datoa, aplicación colas
Algoritmos y Estructura de Datoa, aplicación colas
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 

Más de Daniel Gomez Jaramillo

Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...Daniel Gomez Jaramillo
 
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.Daniel Gomez Jaramillo
 
Sistema de gestión de base de datos SQL UC
Sistema de gestión de base de datos SQL UCSistema de gestión de base de datos SQL UC
Sistema de gestión de base de datos SQL UCDaniel Gomez Jaramillo
 
Algoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivosAlgoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivosDaniel Gomez Jaramillo
 

Más de Daniel Gomez Jaramillo (16)

DotVVM Fundamentals
DotVVM FundamentalsDotVVM Fundamentals
DotVVM Fundamentals
 
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
 
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
 
HTML y Alojamiento en Azure.
HTML y Alojamiento en Azure. HTML y Alojamiento en Azure.
HTML y Alojamiento en Azure.
 
Internet y seguridad en redes
Internet y seguridad en redesInternet y seguridad en redes
Internet y seguridad en redes
 
Sistema de gestión de base de datos SQL UC
Sistema de gestión de base de datos SQL UCSistema de gestión de base de datos SQL UC
Sistema de gestión de base de datos SQL UC
 
Colecciones en Scala
Colecciones en ScalaColecciones en Scala
Colecciones en Scala
 
Algoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivosAlgoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivos
 
Reproductor de música DG Player
Reproductor de música DG PlayerReproductor de música DG Player
Reproductor de música DG Player
 
Colecciones en Python
Colecciones en PythonColecciones en Python
Colecciones en Python
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
 
Fuerzas de rozamiento
Fuerzas de rozamientoFuerzas de rozamiento
Fuerzas de rozamiento
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Programación dinámica
Programación dinámicaProgramación dinámica
Programación dinámica
 

Codificación de Huffman

  • 1. Universidad de Cuenca Programación III Estructura de Archivos Codificación de Huffman Integrantes: ● Jefferson Arias ● Daniel Gomez ● Jonnathan Peñaranda ● Gabriela Verdugo
  • 2. Concepto ● La codificación Huffman es un algoritmo usado para compresión de datos. ● El algoritmo de codificación/compresión Huffman se propuso en 1952 como una forma sencilla y óptima de mapear cada símbolo de un alfabeto con un código (codeword) de longitud óptima. ● La codificación Huffman usa un método específico para elegir la representación de cada símbolo, que da lugar a un código prefijo que representa los caracteres más comunes usando las cadenas de bits más cortas, y viceversa.
  • 3. Procedimiento de asignación ● El proceso de asignación de códigos se lleva a cabo mediante la construcción de un árbol binario: ○ Recorrer el árbol en pre-orden hacia el nodo que contiene el carácter con su frecuencia. ○ Los nodos menos probables se unen sucesivamente para formar otro nodo de mayor probabilidad, de forma que cada uno de los enlaces añade un bit al código de los símbolos que estamos juntando. ○ Este proceso termina cuando sólo se dispone de un nodo, de forma que éste representa la raíz del árbol.
  • 4. Ejemplo 1. ● Palabra a codificar : LAPTOP 1. Contar el número de peticiones de cada carácter es decir el número de repeticiones de cada uno de los caracteres L A P T O P
  • 5. L A P T O P 1
  • 6. L A P T O P 1 1
  • 7. L A P T O P 1 1 1
  • 8. L A P T O P 1 1 1 1
  • 9. L A P T O P 1 1 1 1 1
  • 10. L A P T O P 1 1 1 1 1 2
  • 11. L A T O P 1 1 1 1 2
  • 12. ● Se pone en una lista enlazada los caracteres y sus frecuencias. Y eliminamos los que se repiten (Se deja uno solo). ● El siguiente paso es crear un nuevo árbol binario pasando los dos primeros nodos como hojas del árbol. L 1 A 1 T 1 O 1 P 2
  • 13. Null:2 L:1 A:1 El nodo raíz se guarda como null junto con la suma de las frecuencias de los nodos hijos.
  • 14. ● La lista quedaría de esta manera: ● El siguiente paso es insertar nuestro árbol a la lista de nodos de forma ordenada; como la frecuencia de nuestro nodo raíz es dos, entonces se colocaría al final de la lista ya que en este caso no hay frecuencias más altas. T 1 O 1 P 2
  • 15. T 1 O 1 P 2 Null 2 L:1 A:1
  • 16. ● Repetimos el mismo paso volvemos a tomar los dos primero nodos de la lista y formamos el árbol con el nodo raíz que en la frecuencia es la suma de los hijos. Null:2 T:1 O:1
  • 17. ● Ahora insertamos el árbol de manera ordenada en la lista de nodos que teníamos definida anteriormente. P 2 Null 2 Null 2 L:1 A:1 T:1 O:1
  • 18. ● Volvemos a tomar los dos nodos siguientes y formamos el árbol. Null:4 P:2 Null:2 L:1 A:1
  • 19. ● Ahora insertamos el árbol de manera ordenada a nuestra lista. Null 2 Null 4 T:1 O:1 P:2 Null:2 L:1 A:1
  • 20. ● Volvemos a tomar los dos primeros nodos de esta lista. Null:6 Null:2 Null:4 T:1 O:1 P:2 Null:2 L:1 A:1
  • 21. ● Ahora es momento de poner los pesos de nuestro árbol. Null:6 Null:3 Null:3 T:1 O:1 Null:2 L:1 A:1 P:2 0 1 0 1 0 1 1 0
  • 22. ● Los valores de cada una de las letras son: P : 10 T: 00 O: 01 A: 111 L: 110
  • 23. ● Entonces la palabra entera es la unión de el valor de cada letra. L A P T O P 110 111 10 00 01 10 CODIFICACIÓN DE HUFFMAN
  • 24. Ejemplo 2. ● Palabra a codificar : LAPTOP ● A cada una de las letras le ponemos las frecuencia con la que se repiten tomándolo del procedimiento anterior quedaría de la siguiente forma. L A P T O P
  • 25. L A P T O P 1 1 1 1 1 2
  • 26. ● Para formar el árbol tomamos los nodos de dos en dos con los menores pesos y vamos formando los árboles. Null:2 L:1 A:1 Null:2 T:1 O:1
  • 27. Null:2 P:2 ● Lo siguiente que se debe hacer es tomar los árboles de dos en dos para formar un solo árbol
  • 30. ● Ahora debemos etiquetar cada una de las aristas.
  • 32. ● Los valores de cada una de las letras son: P : 10 T: 010 O: 011 A: 001 L: 000
  • 33. ● Entonces la palabra entera es la unión de el valor de cada letra. L A P T O P 000 001 10 010 10 10 CODIFICACIÓN DE HUFFMAN
  • 34. Factor de Comprensión. ● La compresión de datos es la reducción del volumen de datos tratables para representar una determinada información empleando una menor cantidad de espacio. ● El espacio que ocupa una información codificada (datos, señal digital, etc.) sin compresión es el cociente entre la frecuencia de muestreo y la resolución. Por tanto, cuantos más bits se empleen mayor será el tamaño del archivo.
  • 35. Conclusiones. ● La codificación de Huffman es útil para la codificación de las palabras y ponerlas en binario ya que el árbol que se forma para la codificación es binario. ● Los resultados de la codificación en algunos casos son diferentes dependiendo del recorrido que se use para el árbol pero existe coincidencia en algunas letras que es el mismo resultado en binario.
  • 36. Bibliografía. ● http://www.grc.upv.es/docencia/tdm/practicas/P1.pdf ● http://joselu.webs.uvigo.es/material/Algoritmo%20de%20Huffman.pdf ● https://learn.yancyparedes.net/2013/10/an-implementation-of-the-huffman-c ode-for-compressing-and-decompressing-strings/