Está en la página 1de 5

Laboratorio de Telecomunicaciones III FIEE-UNI 2017-2

INFORME PREVIO N°1


Facultad de Ingeniería Eléctrica y Electrónica - UNI
Languasco Ramos Abel Ricardo Toribio Dionicio Ricardo
abel_ricardo2004@hotmail.com ricardo_2618@hotmail.com

la longitud media del código como 𝐿(𝐶) =


Abstract: ∑ 𝑝𝑘 𝐿𝑘 .
En el informe previo de este primer laboratorio se
soluciona los ejercicios propuestos de codificación Un código instantáneo se dirá que es óptimo si no
instantánea, además se ha creado programas para existe otro código instantáneo con una longitud
determinar un código binario y extendido de media menor.
Huffman por medio del software MATLAB.
Algoritmo de Huffman
I. MARCO TEÓRICO:
Vamos a estudiar un algoritmo debido a Huffman
Para llevar a cabo esta experiencia se debe para determinar un código óptimo.
conocer ciertos términos y su aplicación. Desarrollaremos solo el caso binario para facilitar
la comprensión.
Códigos instantáneos: Ejemplo. Aplicar el método de Huffman para
obtener un código instantáneo óptimo para una
Un código de longitud variable se dice fuente con alfabeto 𝑆 = {𝑎1 , … , 𝑎6 }
instantáneo (o libre de contexto) si en cualquier
texto codificado con él se puede decodificar cada 𝑝(𝑎1 ) = 0.3, 𝑝(𝑎2 ) = 0.25, 𝑝(𝑎3 ) = 0.2,
uno de los símbolos solo a partir de los bits que 𝑝(𝑎4 ) = 𝑝(𝑎5 ) = 0.1, 𝑝(𝑎6 ) = 0.05
lo codifican y no de los que lo preceden o
suceden. Presenta la siguiente propiedad, sea C
un código que codifica a cada símbolo Si
perteneciente a un alfabeto S con un Xi
determinado. C es un código instantáneo si y solo
si Xi no es prefijo de Xj para i distinto de j.

Teorema de Kraft

Sean 𝑆 = {𝑎1 , … , 𝑎𝑛 } el alfabeto de cierta fuente


de información que se requiere codificar
(mediante un alfabeto A de q símbolos).

1) Si C es un código instantáneo cuyas palabras –


código tienen longitudes 𝐿𝑘 ,…, 𝐿𝑛 entonces Por tanto, el código óptimo resultante es
∑ 𝑞 −𝐿𝑘 ≤ 1 𝐶 = {00, 01, 11, 101, 1000, 1001}

2) Si se verifica la desigualdad ∑ 𝑞 −𝐿𝑘 ≤ 1 existe


un código instantáneo cuyas palabras-código II. CÁLCULOS Y RESULTADOS
tienen por longitudes los números 𝐿𝑖
1.- Determinar cuáles de los siguientes códigos
Códigos instantáneos óptimos son de decodificación única:
a) C={0, 10, 11}
Sean 𝑆 = {𝑎1 , … , 𝑎𝑛 } el alfabeto de cierta fuente b) C={0, 01, 11}
de información, 𝑝𝑘 la probabilidad de transmitir c) C={0, 01, 10}
𝑎𝑘 y 𝐶 = {𝑐1 , … , 𝑐𝑛 } un código para S. d) C={110, 11, 100, 00, 10}
Recordemos que, si denotamos por 𝐿𝑘 (k=1,…,
n) las longitudes de las palabras código, se define

1
Laboratorio de Telecomunicaciones III FIEE-UNI 2017-2
.

Solución: Por lo tanto el código obtenido también es óptimo


Para que un código sea de decodificación única, para la distribución de probabilidades 1/5, 1/5, 1/5,
cada mensaje que se recibe debe corresponder con 1/5, 1/5
una sola lista de palabras, por lo tanto los códigos
a) b) y d) son de decodificación única y el código 3.- Probar que no existe ninguna codificación
c) no lo será, debido a que el mensaje 010 puede binaria instantánea de los enteros {0, 1,…, 9} con
interpretarse como 0-10 y como 01-0. En los las longitudes 0, 1, 2, 2, 3, 3, 3, 3, 4, 4.
demás casos, los mensajes solo tienen una única
interpretación. Solución:

2.- Encontrar el código binario de Huffman para Según Kraft, se debe cumplir lo siguiente:
los símbolos fuente ∑ 𝑞 −𝐿𝑘 ≤ 1
{𝑎1 , 𝑎2 , 𝑎3 , 𝑎4 , 𝑎5 }
Con probabilidades: Entonces:
1/3, 1/5, 1/5, 2/15, 2/15 1 1 1 1 1 1 1 1 1
+ + + + + + + +
Deducir razonadamente que el código obtenido 21 22 22 23 23 23 23 24 24
también es óptimo para la distribución de 13
= ≥1
probabilidades: 8
1/5, 1/5, 1/5, 1/5, 1/5 Por lo tanto, no existe ninguna codificación
binaria instantánea con dichas longitudes
Solución: 4.- Se considera la fuente {𝑎1 , … , 𝑎5 } con
probabilidades 0.4, 0.3, 0.1, 0.1. Encontrar un
Procedemos a calcular el código de Huffman: código óptimo con alfabeto ternario.

Solución:

Procedemos a calcular el código de Huffman:

Por lo tanto, el código resultante es:


𝐶 = {00, 10, 11, 010, 011}
Para el caso para la distribución de
probabilidades: Por lo tanto, el código resultante es:
1/5, 1/5, 1/5, 1/5, 1/5 𝐶 = {0, 1, 20, 21, 22}
Calculamos la longitud media de cada uno y
comparamos: 5.- Encontrar un código binario de Huffman para
𝐿(𝐶) = ∑ 𝑝𝑘 𝐿𝑘 una fuente S={𝑎1 , … , 𝑎6 } con probabilidades:
1 1 1 2 2 1/21, 2/21, 3/21, 4/21, 5/21, 6/21.
𝐿(𝐶) = × 2 + × 2 + × 2 + ×3+
3 5 5 15 15
34 Solución:
×3= Procedemos a calcular el código de Huffman:
15

1 1 1 1 1
𝐿 (𝐶) = × 2 + × 2 + × 2 + × 3 + × 3 Por lo tanto, el código resultante es:
5 5 5 5 5
12 𝐶 = {0001, 0000, 001, 11, 10, 01}
=
5
Entonces: 6.- Consideremos la fuente {𝑎1 , 𝑎2 , 𝑎3 , 𝑎4 , 𝑎5 } con
𝐿′ (𝐶) > 𝐿(𝐶) probabilidades 0.15, 0.04, 0.26, 0.05, 0.50.
a) Calcular la entropía de esta fuente.

2
Laboratorio de Telecomunicaciones III FIEE-UNI 2017-2
.

Solución: 𝐿(𝐶) = ∑ 𝑝𝑘 𝐿𝑘
𝐿(𝐶) = 0.15 × 3 + 0.04 × 4 + 0.26 × 2 + 0.05
× 4 + 0.5 × 1
𝐿(𝐶) = 1.83

III. PROGRAMACION EN MATLAB

1. Dados el alfabeto fuente S y la función de


probabilidad P, elaborar un programa de Matlab para
determinar un código binario de Huffman y codificar
y decodificar un mensaje fuente de longitud
arbitraria.

Código del programa:

%% Experiencia Nª 1
Para calcular la entropía usamos la fórmula:
𝑛 𝑛
1
𝐻(𝑠) = ∑ 𝑝𝑘 log = − ∑ 𝑝𝑘 log 𝑝𝑘
𝑝𝑘 clc;
𝑘=1 𝑘=1
Reemplazando, tenemos: clear; close all;
𝐻(𝑠) = −0.15 × log(0.15) − 0.04 × log(0.04)
− 0.26 × log(0.26) − 0.05
× log(0.05) − 0.50 % Código Binario Huffman
× log(0.50)
𝐻(𝑠) = 0.5471
n=input('Ingresar número de símbolos: ')
b) Encontrar un código de Huffman.
for i=1:n
Solución: Symbols(i)=i;

Procedemos a calcular el código de Huffman: if i==1


P(i)=input('Digite la primera
probabilidad: ')
else
P(i)=input('Digite la siguiente
probabilidad: ')
end
end

word_s=huffmandict(Symbols,P);

Por lo tanto, el código resultante es: codigo{:,2}


𝐶 = {010, 0111, 00, 0110, 1}

c) Determinar la longitud media del código mensaje=[5 1 4 2 2 2 3];


obtenido. mensaje_cod=huffmanenco(mensaje,codigo)';
Solución: mensaje_decod=huffmandeco(mensaje_cod,c
Usamos la fórmula para calcular la longitud media odigo);
del código obtenido:

3
Laboratorio de Telecomunicaciones III FIEE-UNI 2017-2
.

Si digitamos ahora el mensaje que se desea


Resultados: transmitir, esto es:
mesage={5, 1, 4, 2, 2, 2, 3}
Para las siguientes entradas de fuente y
probabilidades: Obtenemos la codificación:
S={1,2,3,4,5} Codmesage={1011100011001100110010}
P={0.05,0.08,0.16,0.31,0.4}

2. Dados el alfabeto fuente S y la función de


probabilidad P, elaborar un programa de Matlab para
determinar un código binario extendido de Huffman
y codificar y decodificar un mensaje fuente de
longitud arbitraria.

Código del programa:

%% Experiencia Nª 1

clc; clear; close all;

% Código Binario Huffman Extendido

n=3;

Observamos luego el código generado para cada Symbols=[1 2 3];


símbolo P=[0.8 0.02 0.18];

% Creacion de los simbolos extendidos

for k=1:n
for m=1:n

% Conversión de simbolos a strings

a=num2str(Symbols(k));
b=num2str(Symbols(m));

% De strings, lo convertimos a numero

Symbol_e(k,m)=str2num(strcat(a,b));
end
end

4
Laboratorio de Telecomunicaciones III FIEE-UNI 2017-2
.

% Creacion de las probabilidades extendidas P={0.8, 0.02, 0.18}

Observamos luego la extensión:


for k=1:n S_extendido={11,12,13,21,22,23,31,32,33}
for m=1:n P_extendido={ 0.64, 0.016, 0.144, 0.016, 0.0004,
0.0036, 0.144, 0,0036, 0.0324}
Pe(k,m)=P(k)*P(m);
end
end

% Reordenamiento de Matrices a Vectores

Sym_extent=Matrix_Vector(Symbol_e,n);
P_extent=Matrix_Vector(Pe,n);

word=huffmandict(Sym_extent,P_extent);

mesage=[11 12 21 31 13];
Si digitamos ahora el mensaje que se desea
codmesage=huffmanenco(mesage,word);
transmitir, esto es:
decomesage=huffmandeco(codmesage,word); mesage={11 12 21 31 33}

Obtenemos la codificación:
Función Matrix_Vector.- Esta función se encarga de
convertir una matriz cuadrada de 𝑛𝑥𝑛 a un vector Codmesage={010100010101111011}
fila de 1𝑥𝑛2 .

IV. REFERENCIAS

[1]http://www.cubawiki.com.ar/index.php?title=Apunte
_de_tipos_de_codigos_(Teor%C3%ADa_de_las_Co
municaciones)#C.C3.B3digo_instant.C3.A1neo
[2] Tema 2, “Códigos instantáneos, algoritmo de
Huffman”.
[3] Tema 3, “Teoría de la información”.
[4] Software Matlab.

Resultados:

Para las siguientes entradas de fuente y


probabilidades:
S={1,2,3}

También podría gustarte