Codificación de huffman
Click here to load reader
-
Upload
mateo-quizhpi -
Category
Software
-
view
46 -
download
2
Transcript of Codificación de huffman
![Page 1: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/1.jpg)
Codificación de Huffman
David BuñayMateo Quizhpi Erick Barzallo
![Page 2: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/2.jpg)
Codificación de Huffman - Es una técnica utilizada para la compresión de datos, ya sean archivos o
mensajes de texto- Permite el ahorro de espacio como también la reducción del tiempo de
transmisión de datos - Uso de código prefijo
- Conjunto de P de cadenas binarias asociadas a un conjunto de símbolos (0s 1s) en el cual el principio de una cadena no puede ser otra cadena.
Ejemplo: x-> 001 y-> 110 z->10 + -> 11
![Page 3: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/3.jpg)
Obtención del Código Prefijo
1. Construcción de un árbol dirigido con raíz binarioa. Nodos de la izquierda serán etiquetados con 1 o con 0b. Nodos de la derecha serán etiquetados con 0 o con 1
2. Los vértices finales se les asignan los caracteres
Los símbolos menos probables tendrán códigos más largos, y los más probables tendrán códigos más cortos
![Page 4: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/4.jpg)
Ejemplo- En un fichero de x caracteres se tiene 6 caracteres con las siguientes
frecuencias de aparición
1. Ordenar las frecuencias de menor a mayor
Caracter x y * + ( )
Frecuencia 10 10 15 25 20 20
10 10 15 20 20 25
![Page 5: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/5.jpg)
2. Se toman los valores más pequeños y sumar, formando una nueva sublista manteniendo el orden de menor a mayor. 1ra suma
3. Se vuelve a repetir el paso anterior, sumar los valores más pequeños y formar una nueva sublista manteniendo el orden de menor a mayor. 2da suma
10 10 15 20 20 25
15 20 20 20 25
15 20 20 20 25
20 20 25 35
![Page 6: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/6.jpg)
4. Realizamos las 4ta suma
5. Procedemos con la 5ta suma
6. Cuando se tiene una sublista de dos elementos, finaliza las sumas
20 20 25 35
25 35 40
40 60
25 35 40
40 60
![Page 7: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/7.jpg)
Construcción del Árbol
Para la construcción del árbol binario seguimos los siguientes pasos:
1. Crear la raíz del árbol con los respectivos vértices, los cuales corresponden a los dos últimos valores de la lista
40 60 R
40 60
![Page 8: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/8.jpg)
2. Regresamos en las sublistas cambiando los valores de los nodos con los sumandos correspondientes
40 60
25 35 40
R
40 60
R
40
25 35
![Page 9: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/9.jpg)
3. Continuamos regresando en las sublistas
20 20 25 35
25 35 40
R
40
25 35
R
25 3520 20
![Page 10: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/10.jpg)
15 20 20 20 25
20 20 25 35
R
2520 20
15 20
![Page 11: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/11.jpg)
10 10 15 20 20 25
15 20 20 20 25
R
2520 20
15
10 10
![Page 12: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/12.jpg)
SustituciónUna vez que se obtenga por completo el árbol, reemplazamos los nodos finales que corresponden a las frecuencias de los caracteres para la obtención del código prefijo
R
2520 20
15
10 10
![Page 13: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/13.jpg)
R
+( )
*
x y
Caracter x y * + ( )
Frecuencia 10 10 15 25 20 20
![Page 14: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/14.jpg)
Finalmente se colocan las etiquetas de los respectivos nodos, recordando que para este ejemplo las etiquetas serán 0 a la izquierda y 1 a la derecha
R
+( )
*
x y
0
0 1 0
0
0
1
1
1
1
![Page 15: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/15.jpg)
Para la formación del binario de cada carácter, se debe leer desde la raíz principal para obtener el código correspondiente
Caracter x y * + ( )
Frecuencia 10 10 15 25 20 20
Código 1110 1111 110 10 00 01
![Page 16: Codificación de huffman](https://reader038.fdocuments.mx/reader038/viewer/2022100521/58f1a0921a28ab6c688b45b7/html5/thumbnails/16.jpg)
Bibliografía
- Universitat Politècnica de València, (2013). Teoría de Grafos en la vida real. Árboles. Codificación de Huffman. ©. [video] Available at: https://www.youtube.com/watch?v=W6WZT12ruGQ
- Algoritmos y Estructuras de Datos. (2016). 1st ed. [ebook] Santa Fe, Argentina: Universidad Nacional del Litoral, pp.166 - 169. Available at: http://www.cimec.org.ar/~mstorti/aed/aednotes.pdf