Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo de Huffman PDF
Algoritmo de Huffman PDF
Este algoritmo toma un alfabeto de n smbolos, junto con sus frecuencias de aparicin
asociadas, y produce un cdigo de Huffman para ese alfabeto y esas frecuencias.
Contenidos:
1. Descripcin.
2. Limitaciones.
3. Variaciones del algoritmo
1. Descripcin
El algoritmo consiste en la creacin de un rbol binario que tiene cada uno de los
smbolos por hoja, y construido de tal forma que siguindolo desde la raz a cada una de
sus hojas se obtiene el cdigo Huffman asociado.
1. Se crean varios rboles, uno por cada uno de los smbolos del alfabeto,
consistiendo cada uno de los rboles en un nodo sin hijos, y etiquetado cada uno
con su smbolo asociado y su frecuencia de aparicin.
2. Se toman los dos rboles de menor frecuencia, y se unen creando un nuevo
rbol. La etiqueta de la raz ser la suma de las frecuencias de las races de los
dos rboles que se unen, y cada uno de estos rboles ser un hijo del nuevo
rbol. Tambin se etiquetan las dos ramas del nuevo rbol: con un 0 la de la
izquierda, y con un 1 la de la derecha.
3. Se repite el paso 2 hasta que slo quede un rbol.
Con este rbol se puede conocer el cdigo asociado a un smbolo, as como obtener el
smbolo asociado a un determinado cdigo.
Para obtener el cdigo asociado a un smbolo se debe proceder del siguiente modo:
En la prctica, casi siempre se utiliza el rbol para obtener todos los cdigos de una sola
vez; luego se guardan en tablas y se descarta el rbol.
1. 1. Ejemplo de uso
La tabla describe el alfabeto a codificar, junto con las frecuencias de sus smbolos. En el
grfico se muestra el rbol construido a partir de este alfabeto siguiendo el algoritmo
descrito.
Se puede ver con facilidad cul es el cdigo del smbolo E: subiendo por el rbol se
recorren ramas etiquetadas con 1, 1 y 0; por lo tanto, el cdigo es 011. Para obtener el
cdigo de D se recorren las ramas 0, 1, 1 y 1, por lo que el cdigo es 1110.
2. Limitaciones
Una manera de resolver este problema consiste en agrupar los smbolos en palabras
antes de ejecutar el algoritmo. Por ejemplo, si se tiene la cadena de longitud 64
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB
1111111111111111111111111111111111111111111111111111111111111110
Tambin de longitud 64. Sin embargo, si antes de utilizar el algoritmo, se agrupan los
smbolos en las palabras "AA", "AB" y "B" (que se codifican como 1, 01 y 00), el
algoritmo devuelve la siguiente cadena:
111111111111111111111111111111101
que tiene longitud 32, la mitad que si no se hubiera agrupado. Si observa el rbol de
Huffman, se puede comprobar que la diferencia de frecuencias entre las ramas del rbol
es menor que en el caso anterior.
1. Los rboles a crear tendrn tantos hijos como smbolos posibles puedan aparecer
en los cdigos Huffman. Por ejemplo, si es ternario se crearn rboles con tres
hijos; si es cuaternario, con cuatro.
2. Si se expresa como s el nmero de smbolos en el alfabeto a codificar, y n el
nmero de smbolos que aparecen en el cdigo Huffman, entonces s-1 debe ser
mltiplo de n-1. Es decir, para un cdigo ternario, s debe valer 3, 5, 7, etc. Si
esta condicin no se cumple, entonces se deben aadir smbolos "nulos" con
frecuencia 0, que servirn slo como relleno a la hora de construir el rbol.