Codificación de huffman

16

Click here to load reader

Transcript of Codificación de huffman

Page 1: Codificación de huffman

Codificación de Huffman

David BuñayMateo Quizhpi Erick Barzallo

Page 2: Codificación de huffman

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

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

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

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

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

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

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

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

15 20 20 20 25

20 20 25 35

R

2520 20

15 20

Page 11: Codificación de huffman

10 10 15 20 20 25

15 20 20 20 25

R

2520 20

15

10 10

Page 12: Codificación de huffman

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

R

+( )

*

x y

Caracter x y * + ( )

Frecuencia 10 10 15 25 20 20

Page 14: Codificación de huffman

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

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

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