Huffman

download Huffman

of 2

Transcript of Huffman

CODIFICACIN HUFFMANFue desarrollado porDavid A. Huffmanmientras era estudiante de doctorado en elMIT, y publicado en "A Method for the Construction of Minimum-Redundancy Codes".Lacodificacin Huffmanes unalgoritmousado parala 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 uncdigo 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 unadistribucin de probabilidad uniformey un nmero de miembros que es potencia de dos, la codificacin Huffman es equivalente a una codificacin en bloque binaria, por ejemplo, la codificacinASCII. 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 BSICALa tcnica utilizada es el propioalgoritmo de Huffman. Consiste en la creacin de unrbol binarioen 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 RBOLEl algoritmo consiste en la creacin de unrbol binarioque 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 vaco2. Iniciar el recorrido del rbol en la hoja asociada al smbolo3. Comenzar un recorrido del rbol hacia arriba4. Cada vez que se suba un nivel, aadir al cdigo la etiqueta de la rama que se ha recorrido5. Tras llegar a la raz, invertir el cdigo6. El resultado es el cdigo Huffman deseadoPara obtener un smbolo a partir de un cdigo se debe hacer as:1. Comenzar el recorrido del rbol en la raz de ste2. Extraer el primer smbolo del cdigo a descodificar3. Descender por la rama etiquetada con ese smbolo4. Volver al paso 2 hasta que se llegue a una hoja, que ser el smbolo asociado al cdigoEn 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