Sunteți pe pagina 1din 4

Ing. Luis Fernando Asela M.

1
CODIGOS DE HUFFMAN

Definicin: La codificacin de Huffman es una tcnica para la compresin de datos,
ampliamente usada y muy efectiva.

Ejemplo: Se tiene un fichero con 100.000 caracteres. Se sabe que aparecen 6 caracteres
diferentes y la frecuencia de aparicin de cada uno de ellos se da segn la tabla.

a b c d e f
Frecuencia
(En miles)
45 13 12 16 9 5

Cmo codificar los caracteres para comprimir el espacio ocupado utilizando un cdigo
binario?

Solucin 1: Cdigo de longitud fija.

Para codificar 6 caracteres se necesitan 3 bits.

Cdigo fijo 000 001 010 011 100 101

El nmero total de bits a utilizar ser: 100.000 caracteres x 3 bits = 300.000 bits

Solucin 2: Cdigo de longitud variable en el que los ms frecuentes tienen el cdigo ms
corto.
Al aplicar el procedimiento para hallar los cdigos, se obtienen datos como los dados en la
tabla a continuacin.

Variable 0 101 100 111 1101 1100

El nmero total de bits a utilizar ser: Nmero total de bits de la a + nmero total de bits
de la b + nmero total de bits de la c + nmero total de bits de la d + nmero total de bits
de la e + nmero total de bits de la f = (45.000 x 1bit) + (13.000 x 3bits) +(12.000 x 3bits)
+(16.000 x 3bits) +(9.000 x 4bits) +(5.000 x 4bits) = 224.000 bits

Se puede observar el ahorro al utilizar el cdigo de longitud variable.

Una de las caractersticas de este cdigo es que ninguna secuencia es prefijo de otra. Esto
significa que al decodificar un dato en el receptor, solamente hay una opcin de hacerlo y
es la correcta.
Ejemplo:
Se codifica en el transmisor la palabra aabacd 001010100111 001010100111.
En el receptor se decodifica y sin ambigedades 001010100111 aabacd.
Es la nica posibilidad!

Para hallar los cdigos de cada uno de los caracteres se utiliza el rbol binario.
Un rbol binario es una forma de representar el cdigo prefijo que simplifica el proceso de
decodificacin. En un rbol binario se tienen varias partes:

Ing. Luis Fernando Asela M.
2
las hojas son los caracteres,

el camino de la raz a la hojas con la interpretacin 0 a la izquierda y 1 a la derecha nos
da el cdigo de cada hoja.
Este sera el rbol binario de la codificacin de longitud fija del ejemplo:



1 0 0
8 6
1 4
5 8
2 8
1 4
0
0
1
1
a : 4 5 b : 1 3
b b : 1
f : 5 c : 1 2 d : 1 6 e : 9
0
0
0
0
1 1
1

Y ste el de la codificacin de longitud variable:



a : 4 5
b : 1 3
b b : 1
3
c : 1 2 d : 1 6
e : 9 f : 5
0
0
0
0
0
1
1
1
1
1 0 0
5 5
2 5 3 0
1 4
1


Huffman invent un algoritmo que construye una codificacin prefijo ptimo.

Ejemplo: Se tiene un fichero con 100.000 caracteres. Se sabe que aparecen 6
caracteres diferentes y la frecuencia de aparicin de cada uno de ellos se da segn la
tabla.

a b c d e f
Frecuencia
(En miles)
45 13 12 16 9 5


Fase 1: Caracteres colocados en orden creciente de frecuencia.


Ing. Luis Fernando Asela M.
3


f : 5 e : 9 c : 1 2 b : 1 3 d : 1 6 a : 4 5

Fase 2 y posteriores: Fusionar hasta obtener un slo rbol manteniendo la ordenacin
creciente.



c : 1 2 b : 1 3 d : 1 6 a : 4 5 1 4
f : 5 e : 9
0
1
1 4
f : 5 e : 9
0
1
d : 1 6 a : 4 5 2 5
c : 1 2 b : 1 3
0
1





2 5
c : 1 2 b : 1 3
0
1
a : 4 5
3 0
d : 1 6
1 4
f : 5 e : 9
0
1
0
1



Ing. Luis Fernando Asela M.
4


3 0
d : 1 6 1 4
f : 5 e : 9
0
1
0
1
2 5
c : 1 2 b : 1 3
0
1
a : 4 5 5 5
0 1
a : 4 5
b : 1 3
b b : 1
3
c : 1 2 d : 1 6
e : 9 f : 5
0
0
0
0
0
1
1
1
1
1 0 0
5 5
2 5 3 0
1 4
1

Se introduce un nuevo concepto llamado la Entropa (H).
La entropa sencillamente es la informacin promedio que se enva por carcter.

Bits
Donde Pi es la probabilidad del i-simo carcter.
Para el caso del cdigo de longitud fija del ejemplo, el valor de la entropa ser:
H = (0,45 x 3 bits) + (0,13 x 3 bits) +(0,12 x 3 bits) +(0,16 x 3 bits) +(0,09 x 3 bits) +(0,05
x 3 bits) = 3 bits.
Esto quiere decir que en promedio el nmero de bits enviados por carcter es de 3 bits.
De dnde salen los valores 0.45, 0.13, 0.12, 0.16, 0.09, 0.05?
Por ejemplo: Para la letra a, 0.45 viene de la siguiente regla de 3 donde la probabilidad
mxima para 100 es 1
100 (el valor mximo) --------------- 1
45---------------------------- X



Para el caso del cdigo de longitud variable, el valor de la entropa ser:
H = (0,45 x 1 bits) + (0,13 x 3 bits) +(0,12 x 3 bits) +(0,16 x 3 bits) +(0,09 x 4 bits) +(0,05
x 4 bits) = 2,24 bits.
Esto quiere decir que en promedio el nmero de bits enviados por carcter es de 2,24 bits.

S-ar putea să vă placă și