Está en la página 1de 4

UNIVERSIDAD NACIONAL DE LOJA

Área: de la energía, las industrias y los recursos naturales no renovables

Teoría de la información y codificación


Romeo Eduardo Luna A.
13 de July de 2021
6toB

CÓDIGO DE HUFFMAN
En 1952, David Huffman propuso un método estadístico que permitía asignar un código
binario a los diversos símbolos a comprimir (píxeles o caracteres, por ejemplo). La
longitud de cada código no es idéntica para todos los símbolos: se asignan códigos
cortos a los símbolos utilizados con más frecuencia (los que aparecen más a menudo),
mientras que los símbolos menos frecuentes reciben códigos binarios más largos. La
expresión Código de Longitud Variable (VLC) se utiliza para indicar este tipo de código
porque ningún código es el prefijo de otro. De este modo, la sucesión final de códigos
con longitudes variables será en promedio más pequeña que la obtenida con códigos de
longitudes constantes.

La codificación de Huffman es una técnica para la compresión de datos, ampliamente


usada y muy efectiva.

Es un método general de codificación y compresión diseñada para minimizar el número


medio de bits necesarios para transmitir un símbolo cuando se debe transmitir varias
copias independientes y estadísticamente equivalentes de dicho símbolo.

Este método determina cómo los distintos valores del símbolo deben representarse
como cadenas binarias.

Descripción

El algoritmo consiste en la creación de un árbol binario que tiene cada uno de los
símbolos por hoja, y construido de tal forma que siguiéndolo desde la raíz a cada una de
sus hojas se obtiene el código Huffman asociado.

Limitaciones

Para poder utilizar el algoritmo de Huffman es necesario conocer de antemano las


frecuencias de aparición de cada símbolo, y su eficiencia depende de lo próximas a las
frecuencias reales que sean las estimadas. Algunas implementaciones del algoritmo de
Huffman son adaptativas, actualizando las frecuencias de cada símbolo conforme
recorre el texto. La eficiencia de la codificación de Huffman también depende del
balance que exista entre los hijos de cada nodo del árbol, siendo más eficiente conforme
menor sea la diferencia de frecuencias entre los dos hijos de cada nodo.
Códigos Huffman n -arios

Es posible crear códigos de Huffman ternarios, cuaternarios, y, en general, n-arios. Para


ello sólo es necesario realizar dos modificaciones al algoritmo: 1. Los árboles a crear
tendrán tantas ramas como símbolos posibles puedan aparecer en los códigos Huffman.
Por ejemplo, si es ternario se crearán árboles con tres ramas; si es cuaternario, con
cuatro. 2. Si se expresa como s el número de símbolos en el alfabeto a codificar, y n el
número de símbolos que aparecen en el código Huffman, entonces s-1 debe ser múltiplo
de n-1. Es decir, para un código ternario, s debe valer 3, 5, 7, etc. Si esta condición no se
cumple, entonces se deben añadir símbolos "nulos" con frecuencia 0, que servirán sólo
como relleno a la hora de construir el árbol.

DESARROLLO DE LA CODIFICACIÓN

 Las letras del alfabeto de mensajes en la columna principal se escriben en orden


decreciente de las probabilidades.

 Las dos últimas letras se unen en una letra auxiliar a la que se le atribuye la
probabilidad suma.

 Las probabilidades de las letras que no han participado en la unión y la probabilidad


suma obtenida, se ordenan descendentemente en una columna adicional.

 Los pasos anteriores se repiten hasta obtener la única letra auxiliar con probabilidad
igual a 1.

S P(S)
S1 0.22
S2 0.20
S3 0.16
S4 0.16
S5 0.10
S6 0.10
S7 0.04
S8 0.02

S P(S) 1 2 3 4 5 6 7
S1 0.22 0.22 0.22 0.26 0.32 0.42 0.58 1
S2 0.20 0.20 0.20 0.22 0.26 0.32 0.42
S3 0.16 0.16 0.16 0.20 0.22 0.26
S4 0.16 0.16 0.16 0.16 0.20
S5 0.10 0.10 0.16 0.16
S6 0.10 0.10 0.10
S7 0.04 0.06
S8 0.02
A continuación se construye el árbol de codificación.

A partir del punto correspondiente a la probabilidad 1, se tazan 2 ramas.

La de mayor probabilidad a la izquierda con la probabilidad como ponderación y con 1


como marca.

0 1

A la derecha se pondera con la probabilidad menor y marca 0.

1
0.58 0.42
1 0
0.2
2 6

0.2
0.31

2
0.2
0 1 0

0
6 6 0.10
0.1 0.11
0.

0
16

1 0
0
0.0
0.1

1 0
6
0.0
4
0.0

1 0
2

Para obtener la palabra código de cada símbolo, se parte de la raíz del árbol y se
recorren las ramas hasta llegar a la hoja del símbolo, escribiendo los 0 y 1 del recorrido.

S Palabras Código
S1 01
S2 00
S3 111
S4 110
S5 100

Conclusiones
 El código Huffman es una manera de lograr compresión de la información sin
perdidas de manera que la información enviada pueda llegar completa por
otro lado no utiliza información de redundancia.

 Debido a que es un código prefijo no hay necesidad de enviar caracteres


especiales entre cada uno de los símbolos, asiendo aún más eficiente la
compresión.
 Para poder utilizar el código de Huffman es necesario conocer de antemano
las frecuencias de aparición de cada símbolo, y su eficiencia depende de la
proximidad a las frecuencias reales que sean las estimadas.

 Algunas implementaciones del algoritmo de Huffman son adaptativas,


actualizando las frecuencias de cada símbolo conforme recorre el texto

Bibliografía:
[1] ALGORITMO DE COMPRESIÓN DE HUFFMAN
http://www.maytics.web44.net/web_documents/algoritmo_de_compresi_n_de_huffman
.pdf
[2] TOGNERI, Roberto, J.S de SILVA, Christopher; Fundamentals of Information
Theory and Coding Design; 2006.
[3] ABRAMSON, Norman; Teoría de la Información y Codificación; Quinta Edición;
1981

También podría gustarte