You are on page 1of 2

CODIFICACIN HUFFMAN

Fue desarrollado por David A. Huffman mientras era estudiante de doctorado en el MIT, y publicado en "A Method for the Construction of Minimum-Redundancy Codes". La codificacin Huffman es un algoritmo usado para la compresin de datos. El trmino se refiere al uso de una tabla de cdigos de longitud variable para codificar un determinado smbolo (como puede ser un carcter en un archivo), donde la tabla ha sido rellenada de una manera especfica basndose en la probabilidad estimada de aparicin de cada posible valor de dicho smbolo. La codificacin Huffman usa un mtodo especfico para elegir la representacin de cada smbolo, que da lugar a un cdigo prefijo (es decir, la cadena de bits que representa a un smbolo en particular nunca es prefijo de la cadena de bits de un smbolo distinto) que representa los caracteres ms comunes usando las cadenas de bits ms cortas, y viceversa. Huffman fue capaz de disear el mtodo de compresin ms eficiente de este tipo: ninguna representacin alternativa de un conjunto de smbolos de entrada produce una salida media ms pequea cuando las frecuencias de los smbolos coinciden con las usadas para crear el cdigo. Posteriormente se encontr un mtodo para llevar esto a cabo en un tiempo lineal si las probabilidades de los smbolos de entrada (tambin conocidas como "pesos") estn ordenadas. Para un grupo de smbolos con una distribucin de probabilidad uniforme y un nmero de miembros que es potencia de dos, la codificacin Huffman es equivalente a una codificacin en bloque binaria, por ejemplo, la codificacin ASCII. La codificacin Huffman es un mtodo para crear cdigos prefijo tan extendido que el trmino "codificacin Huffman" es ampliamente usado como sinnimo de "cdigo prefijo", incluso cuando dicho cdigo no se ha producido con el algoritmo de Huffman.

TCNICA BSICA
La tcnica utilizada es el propio algoritmo de Huffman. Consiste en la creacin de un rbol binario en el que se etiquetan los nodos hoja con los caracteres, junto a sus frecuencias, y de forma consecutiva se van uniendo cada pareja de nodos que menos frecuencia sumen, pasando a crear un nuevo nodo intermedio etiquetado con dicha suma. Se procede a realizar esta accin hasta que no quedan nodos hoja por unir a ningn nodo superior, y se ha formado el rbol binario. Posteriormente se etiquetan las aristas que unen cada uno de los nodos con ceros y unos (hijo derecho e izquierdo, respectivamente.

CONSTRUCCIN DEL RBOL


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: 1. Comenzar con un cdigo vaco 2. Iniciar el recorrido del rbol en la hoja asociada al smbolo 3. Comenzar un recorrido del rbol hacia arriba 4. Cada vez que se suba un nivel, aadir al cdigo la etiqueta de la rama que se ha recorrido 5. Tras llegar a la raz, invertir el cdigo 6. El resultado es el cdigo Huffman deseado Para obtener un smbolo a partir de un cdigo se debe hacer as: 1. Comenzar el recorrido del rbol en la raz de ste 2. Extraer el primer smbolo del cdigo a descodificar 3. Descender por la rama etiquetada con ese smbolo 4. Volver al paso 2 hasta que se llegue a una hoja, que ser el smbolo asociado al cdigo 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.

BIBLIOGRAFA [1] Algoritmo de Huffman. [En lnea] Disponible en:

http://webs.uvigo.es/joselu/material/Algoritmo%20de%20Huffman.pdf [2] Introduccin a sistemas de compresin con/sin prdidas. [En lnea] Disponible en: http://ocw.innova.uned.es/mm2/tcm/contenidos/pdf/tema2.pdf