Sie sind auf Seite 1von 5

TELECOMUNICACIONES III

PRIMER INFORME DE LABORATORIO


Cdigos instantneos y algoritmo de Huffman
Universidad Nacional de Ingeniera
Facultad de Ingeniera Elctrica y Electrnica

Enrique Arauco, Javierth 20107507J


Salcedo Mamani Kiara 20111106F
Ygnacio Espinoza, Alexis 20122209F
Zarate Encarnacion, Guiller 20101019C

I. Resumen Para obtener un smbolo a partir de un cdigo se debe


hacer as:
Este informe tiene como objetivo conocer los cdigos 1.Comenzar el recorrido del rbol en la raz de ste
instantneos por medio del mtodo de codificacin 2.Extraer el primer smbolo del cdigo a descodificar
de Huffman , as como sus diferentes tipos de 3.Descender por la rama etiquetada con ese smbolo
problemas 4.Volver al paso 2 hasta que se llegue a una hoja, que
Aplicaciones para cdigos binarios , terciarios y su ser el smbolo asociado al cdigo
representacin algortmica en Matlab. 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.
II. Introduccin Ejemplo de uso:
rbol para construir el cdigo Huffman del ejemplo.
El algoritmo consiste en la creacin de un rbol
Smbolo Frecuencia
binario que tiene cada uno de los smbolos por hoja, y
A 0,15
construido de tal forma que siguindolo desde la raz a
cada una de sus hojas se obtiene el cdigo Huffman B 0,30
asociado. C 0,20
1.Se crean varios rboles, uno por cada uno de los D 0,05
smbolos del alfabeto, consistiendo cada uno de los E 0,15
rboles en un nodo sin hijos, y etiquetado cada uno F 0,05
con su smbolo asociado y su frecuencia de aparicin. 0,10
2.Se toman los dos rboles de menor frecuencia, y se G
unen creando un nuevo rbol. La etiqueta de la raz Se puede ver con facilidad cul es el cdigo del
ser la suma de las frecuencias de las races de los dos smbolo E: subiendo por el rbol se recorren ramas
rboles que se unen, y cada uno de estos rboles ser etiquetadas con 1, 1 y 0; por lo tanto, el cdigo es 011.
un hijo del nuevo rbol. Tambin se etiquetan las dos Para obtener el cdigo de D se recorren las
ramas del nuevo rbol: con un 0 la de la izquierda, y ramas 0, 1,1 y 1, por lo que el cdigo es 1110.
con un 1 la de la derecha. La operacin inversa tambin es fcil de realizar: dado
3.Se repite el paso 2 hasta que slo quede un rbol. el cdigo 10 se recorren desde la raz las ramas 1 y 0,
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 obtenindose el smbolo C. Para descodificar 010 se
etiqueta de la rama que se ha recorrido recorren las ramas 0, 1 y 0, obtenindose el
5.Tras llegar a la raz, invertir el cdigo smbolo A.
6.El resultado es el cdigo Huffman deseado
La tabla describe el alfabeto a codificar, junto con las Un cdigo instantneo se dir que es optimo si no
frecuencias de sus smbolos. En el grfico se muestra existe otro cdigo instantneo con una longitud media
el rbol construido a partir de este alfabeto siguiendo (L) menor.
el algoritmo descrito.
Observando la longitud media, para la segunda
III. Ejercicios 2.7
A1 1/5 01 2/ 1 2/5 1 3/5 0
1. Determinar cules de los siguientes cdigos son de
5
decodifcacin nica:
A2 1/5 000 1/ 01 2/5 00 1/5 1
a) C = {0; 10; 11}, b) C = {0; 01; 11}, c) C = {0; 01; 10} y
5
d) C = {110; 11; 100; 00; 10}.
A3 1/5 001 1/ 000 1/5 01
5
El cdigo es de decodificacin nica, si el 0 marca el
inicio de cada A4 1/5 10 1/ 001
palabra-cdigo. Pero no es instantneo. 5
En conclusin ninguno de las 4 palabras cdigo es A5 1/5 11
nico. distribucin sera:

2. Encontrar el cdigo binario de Huffman para los L = li*(1/5) = (1/5)* li


smbolos fuente
{a1, a2, a3, a4, a5} Es decir L solo depende de la suma de las longitudes
con probabilidades: 1/3, 1/5, 1/5, 2/15, 2/15. individuales de cada palabra-cdigo. En el segundo
Deducir razonadamente que el cdigo obtenido caso dicha suma es:
tambin es ptimo para la
distribucin de probabilidades: li = 2 + 3 + 3 + 2 + 2 = 12
1/5, 1/5, 1/5, 1/5, 1/5.
Y en el primero fue:
Hallando el cdigo Huffman para la primera
distribucin de probabilidades: li = 2 + 2 + 2 + 3 + 3 = 12

A 1/3 00 1/3 0 2/5 1 3/ 0 Ya que estas sumas son iguales, se puede decir que el
1 0 5 primer cdigo Huffman hallado tambin es ptimo
A 1/5 10 4/1 0 1/3 0 2/ 1 para la segunda distribucin de probabilidades iguales
2 5 1 0 5 a (1/5).
A 1/5 11 1/5 1 4/1 0
Dicha longitud sera:
3 0 5 1
A 2/1 01 1/5 1
L = (1/5)* li = (1/5)*12 = 2.4
4 5 0 1
A 2/1 01
3. Probar que no existe ninguna codificacin binaria
5 5 1
instantnea de los enteros { 0,1, 9} con las
longitudes 0,1,2,2,3,3,3,3,4,4.
C = {00, 10, 11, 010, 011}
Desigualdad de Kraf
n

qLk 1 ,
k=1
q = 2, nmero de smbolos del alfabeto
destino(codificacin binaria)
Hallando el cdigo Huffman para la segunda n=10: nmero de palabras cdigo del alfabeto destino
distribucin de probabilidades: Lk: longitud de cada palabra-cdigo del alfabeto
destino
C = {01, 000, 001, 10, 11} Haciendo:
10

Este cdigo hallado es el ptimo para la distribucin


K= 2Lk
k=1
de probabilidad planteada. K= 2 +2-1+2-2+2-2+2-3+2-3+2-3+2-3+2-4+2-4 = 2.625
0

Como K=2.6251, entonces no existe dicha


El concepto de un ptimo en lo que a un cdigo se codificacin binaria, ya que no cumple la desigualdad
refiere es: de Kraf.
4. Se considera la fuente {a1, a5} con L = 1.83
probabilidades: 0.4, 0.3, 0.1, 0.1, 0.1.
Encontrar un cdigo ptimo con alfabeto ternario.
Hallando el cdigo Huffman

C = {0, 1, 20, 21, 22}


5. Encontrar un cdigo binario de Huffman para una
fuente S = {a1, a6}
con probabilidades:
A1 6/21 00 6/21 00 6/21 00 9/21 1 12/21
A2 5/21 10 5/21 10 6/21 01 6/21 00 9/21
A3 4/21 11 4/21 11 5/21 10 6/21 01
A4 3/21 010 3/21 010 4/21 11
A5 2/21 0110 3/21 011
A6 1/21 0111
A1 0.4 0 0.4 0
1/21, 2/21, 3/21,
A2 0.3 1 0.3 1
4/21, 5/21, 6/21.
A3 0.1 20 0.3 2
A4 0.1 21
C = {00, 10, 11, 010,
0110, A5 0.1 22 0111}

6. Consideremos la fuente {a1, a2, a3, a4, a5}


con probabilidades 0.15, 0.04, 0.26,
0.05, 0.50.
a) Calcular la entropa de esta fuente.
b) Encontrar un cdigo de Huffman.
c) Determinar la longitud media del cdigo obtenido.

a) Entropa:
H(x)= H=-(0.5)*log(0.5)- (0.26)*log(0.26)-
(0.15)*log(0.15)- (0.05)*log(0.05)- (0.04)*log(0.04)=
1.81768 bits

2.8. Prcticas de Programacin

b) Hallando el cdigo Huffman 1)Dados el alfabeto fuente S y la funcin de


probabilidad P, elaborar un programa de Matlab
para determinar un cdigo binario de Huffman y
A 0.5 0 0.5 0 0.5 0 0. 0 codificar y decodificar un mensaje fuente de longitud
1 5 arbitraria.
A 0.2 10 0.2 10 0.2 1 0. 1
2 6 6 6 0 5
A 0.1 110 0.1 11 0.2 1
3 5 5 0 4 1
A 0.0 111 0.0 11
4 5 0 9 1 Cdigo:
A 0.0 111
5 4 1
Resultados:
c) Longitud media del cdigo:
L=li*pi
L=(0.5)*1+(0.26)*2+(0.15)*3+(0.05)*4+(0.04)*4=
p = [0.7 0.2 0.1];
dict = huffmandict(symbols,p) %codigo
Huffman (sin extender)

lengthExt = length(p)^2; %longitud


extendida tomando los smbolos en pares
symbolsExt = 1:lengthExt;

%se crea el vector de probabilidades


extendido
aux = 1;
for j=1:length(p)
for k=1:length(p)
pExt(aux) = p(j)*p(k);
aux = aux +1;
end
end

[dictExt, avglenExt] =
huffmandict(symbolsExt,pExt) %codigo
Huffman Extendido

mens = randsrc(10,1,[symbolsExt; pExt]);


%sear a codificarse con el codigo
extendido
mens = mens';
cmens = huffmanenco(mens,dictExt);
%seal codificada con codigo extendido
dmens = huffmandeco(cmens,dictExt);
%seal decodificada con el codigo
extendido
symbolsExt
pExt
mens
cmens
dmens
isequal(mens,dmens) %comparador de
seales sig y dsig, 1=iguales ,
0=diferente

Finalmente para verificar si el mensaje codificado y


decodificado son iguales:

isequal(mens,decodmens)

Se obtiene:

3.5. Prcticas de Programacin Resultados de la compilacin:


1) Dados el alfabeto fuente S y la funcin de
probabilidad P, elaborar un programa de Matlab para
determinar un cdigo extendido (binario) de
Huffman y codificar y decodificar un mensaje fuente
de longitud arbitraria.

Cdigo de Matlab

symbols = 1:3;
erGraph/video/mpeg/mpegfaq/huffman_tutorial.ht
ml

3- Sistemas de comunicaciones electrnicas, Tomassi

4- PDF del curso

III. Conclusiones

1- Pueden haber mltiples cdigos ptimos para


determinada distribucin de probabilidad.

2. Que por medio de la programacin de Matlab


podemos hacer codificacin y decodificacin en forma
muy rpida y segura pues al hacerlo a mano trae
muchos errores y prdida de tiempo

III. Bibliografia

1-
https://www.cs.cf.ac.uk/Dave/Multimedia/node210.ht
ml

2-
https://www.siggraph.org/education/materials/Hyp

Das könnte Ihnen auch gefallen