Está en la página 1de 21

CÓDIGO DE HUFFMAN

• En 1952 David Huffman propuso un método


estadístico que permitía asignar un código binario a
diversos símbolos (píxeles o caracteres)

• Un carácter requiere un byte (8 bits) para su


representación en una computadora

• Mediante esta técnica se pueden representar


mensajes utilizando menos bits
• La idea es asignar códigos más cortos a los
símbolos utilizados con más frecuencia

• Los símbolos que aparecen menos reciben códigos


binarios más largos

• Otra características muy importantes es que ningún


código es prefijo de otro
• El codificador de Huffman crea una
estructura de árbol ordenada con todos los
símbolos y la frecuencia con la que aparecen

• Las ramas se construyen de forma recursiva


comenzando con los símbolos menos
frecuentes
CONSTRUCCIÓN DEL ÁRBOL

• Se ordena en primer lugar los símbolos según su frecuencia de


aparición
• Los dos símbolos con menor frecuencia de aparición se
eliminan sucesivamente de la lista y se conectan a un nodo cuyo
peso es igual a la suma de la frecuencia de los dos símbolos
• El símbolo con menor peso es asignado a la rama 0, el otro a la
rama 1, y así sucesivamente hasta que se obtiene un nodo
principal llamado raíz
CÓDIGO GENERADO

• El código de cada símbolo corresponde a la sucesión de


códigos en el camino, comenzando desde el carácter hasta
la raíz

• De esta manera , cuanto más dentro del árbol esté el


símbolo, más largo será el código
EJEMPLO

• Tres tristes tigres tragaban trigo en sus tres tristes trastos en sus tres tristes
trastos tragaban trigo tres tristes tigres

CARÁCTER FRECUENCIA
T 1
b 2
u 2
n 4
o 4
g 6
i 8
a 8
e 12
r 16
/s 19
t 21
s 22
CARÁCTER FRECUENCIA
T 1
b 2
u 2
n 4
o 4
g 6
i 8
a 8
e 12
r 16
/s 19
t 21
s 22

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
3
Tb
0 1

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s

5
1
Tbu
3
Tb
0 1 0
1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
5
1
Tbu
3 8
Tb no
0 1 0 0 1

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s

11
5
Tbu Tbug
3 8
Tb no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
11
5
Tbu Tbug
3 16
8
Tb noi
no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s

19
11
5 Tbug
Tbu Tbug a
3 16
8
Tb noi
no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
19
Tbug
a
11 16
Tbug noie
16
5
noi
Tbu
3 8
Tb no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
35
Tbugar
19
Tbug
a
11 28
Tbug noie
16
5
noi
Tbu
3 8
Tb no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
35
Tbugar
19
Tbug
a
11 28
Tbug noie
16
5
noi
Tbu
3 40
8
Tb /s t
no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
35
Tbugar
19
50
Tbug
a
11 28
Tbug noie
16
5
noi
Tbu
3 40
8
Tb /s t
no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
75
Tbugar /s t
35
Tbugar
19
50
Tbug
a noies
11 28
Tbug noie
16
5
noi
Tbu
3 40
8
Tb /s t
no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
125

75 Tbugar /s tnoies
Tbugar /s t
35
Tbugar
19
50
Tbug
a noies
11 28
Tbug noie
16
5
noi
Tbu
3 40
8
Tb /s t
no

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
CARÁCTER FRECUENCIA CÓDIGO
T 1 1011010 125
b 2 1011011
u 2 101100 1
n 4 01100
0
o 4 01101 75
g 6 10111
1 35
i 8 0111
a 8 1010 19 0
e 12 010
r 16 100 50
1 1
/s 19 110
t 21 111
11 28
s 22 00

0 1

16
5
1 1
0
3 40
8

0 1 0 0 1 1 1 0 0 0 0 0
1

1 2 2 4 4 6 8 8 12 16 19 21 22
T b u n o g i a e r /s t s
CODIFICACIÓN DEL MENSAJE

• Tres tristes tigres tragaban trigo en sus tres tristes trastos en


CARÁCTER CÓDIGO
T 1011010
sus tres tristes trastos tragaban trigo tres tristes tigres
b 1011011
u 101100
n 01100 • Sustituimos cada carácter con su código correspondiente.
o 01101
• 10110101000100011011110001110011101000110111011110
g 10111
i 0111
11110001000110111100101010111101010110111010011001
a 1010 10111100011110111011011100100110011000101100001101
e 010 11100010001101111000111001110100011011110010100011
r 100 10110100110010011001100010110000110111100010001101
/s 110 11100011100111010001101111001010001110110100110111
t 111 10010101011110101011011101001100110111100011110111
s 00
011011101111000100011011110001110011101000110111011
11011110001000
CARÁCTER FRECUENCIA CÓDIGO BITS TOTAL BITS
T 1 1011010 7 7
b 2 1011011 7 14
u 2 101100 6 12
n 4 01100 5 20
o 4 01101 5 20
g 6 10111 5 30
i 8 0111 4 32
a 8 1010 4 32
e 12 010 3 36
r 16 100 3 48
/s 19 110 3 57
t 21 111 3 63
s 22 00 2 44
TOTAL 125 415

El mensaje codificado tiene un tamaño de 415 bits, ósea 52


bytes contra los 125 bytes que teníamos originalmente
DECODIFICACIÓN

CARÁCTER CÓDIGO • 10110101000100011011110001110011101000


T 1011010
b 1011011 • Tres tristes
u 101100
n 01100
o 01101
g 10111
i 0111
a 1010
e 010
r 100
/s 110
t 111
s 00

También podría gustarte