La codificación de Huffman es una técnica de compresión de datos que asigna códigos binarios prefijos más cortos a los símbolos más frecuentes de un documento. Esto se logra mediante la construcción de un árbol binario donde los nodos finales representan los símbolos y sus frecuencias, y los caminos desde la raíz a cada nodo forman los códigos prefijos asignados.
2. 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
3. Obtención del Código Prefijo
1. Construcción de un árbol dirigido con raíz binario
a. Nodos de la izquierda serán etiquetados con 1 o con 0
b. 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
4. 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
5. 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
6. 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
7. 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
8. 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
12. Sustitución
Una 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
14. 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
15. 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