SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
´
˜
DISENO Y PROGRAMACION DE UN CODEC
HUFFMAN
Cristian Aguirre Esparza
cbaguirre@utpl.edu.ec

Abstract—A medida que la necesidad de los usuarios de enviar
y recibir informaci´ n cada ves es mas extensa, surgio la necesidad
o
de comprimir dicha informaci´ n de tal manera que esta sea
o
posible enviarla y recibirla sin ocasionar perdidas pero a su ves
en un numero menor de datos, de esta manera facilitar en mucho
las comunicaciones. En base a esto la practica a desarrollarse,
˜
es el de disenar y programar un c´ digo HUFFMAN ya sea
o
para audio, video o texto, y utilizando otro c´ digo sin perdidas
o
comprobar el funcionamiento del c´ digo HUFFMAN. En nuestro
o
caso hemos elejido texto, ya que consideramos que de los tres
campos, con texto se nos facilitaria ver y entender la operaci´ n y
o
el funcionamiento del c´ digo, que es el objetivo de esta pr´ ctica.
o
a
Keywords—Comprensi´ n, matlab, texto, huffman, RLZ.
o

´
I. INTRODUCCION

E

N ciencias de la computaci´ n y teor´a de la informaci´ n,
o
ı
o
la codificaci´ n Huffman es un algoritmo usado para
o
compresi´ n de datos. El t´ rmino se refiere al uso de una tabla
o
e
de c´ digos de longitud variable para codificar un determinado
o
s´mbolo (como puede ser un caracter en un archivo), donde la
ı
tabla ha sido rellenada de una manera espec´fica bas´ ndose en
ı
a
la probabilidad estimada de aparici´ n de cada posible valor
o
de dicho s´mbolo. Fue desarrollado por David A. Huffman
ı
mientras era estudiante de doctorado en el MIT, y publicado
en “A Method for the Construction of Minimum-Redundancy
Codes”. Para poder utilizar el algoritmo de Huffman es
necesario conocer de antemano las frecuencias de aparici´ n
o
de cada s´mbolo, y su eficiencia depende de lo pr´ ximas
ı
o
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. [1]

II. OBJETIVOS
1)
2)
3)
4)

Dise˜ ar un codec Huffman en base a la teor´a revisada.
n
ı
Programar el codec Huffman.
Realizar pruebas de funcionamiento del codec.
Validar el codec Huffman (comparar con otro codec de
compresi´ n con/sin p´ rdidas).
o
e

´
III. MARCO TEORICO
´
A. COMPRESION DE DATOS (TEXTO)
La compresi´ n es un caso particular de la codificaci´ n,
o
o
cuya caracter´stica principal es que el c´ digo resultante tiene
ı
o
menor tama˜ o que el original. En otras palabras la compresi´ n
n
o
de datos es la reducci´ n del volumen de datos tratables
o
para representar una determinada informaci´ n empleando una
o
menor cantidad de espacio. La compresi´ n se basa fundao
mentalmente en buscar repeticiones en series de datos para
despu´ s almacenar solo el dato junto al n´ mero de veces que se
e
u
repite. As´, por ejemplo, si en un fichero aparece una secuencia
ı
como “AAAAAA”, ocupando 6 bytes se podr´a almacenar
ı
simplemente ”6A” que ocupa solo 2 bytes.
En realidad, el proceso es mucho m´ s complejo, ya que
a
raramente se consigue encontrar patrones de repetici´ n tan
o
exactos (salvo en algunas im´ genes). Se utilizan algoritmos
a
de compresi´ n.
o
Por un lado, algunos buscan series largas que luego codifican en formas m´ s breves, por otro lado, algunos algoritmos,
a
como el algoritmo de Huffman que es el que se utilizara
en esta pr´ ctica, examinan los caracteres m´ s repetidos para
a
a
luego codificar de forma m´ s corta los que m´ s se repiten.
a
a
Otros, como el LZW, construyen un diccionario con los
patrones encontrados, a los cuales se hace referencia de manera
posterior, y por ultimo, la compresi´ n RLE o Run-length
o
encoding es una forma muy simple de compresi´ n de datos en
o
la que secuencias de datos con el mismo valor consecutivas
son almacenadas como un unico valor m´ s su recuento.
´
a
´
´
B. TECNICA DE CODIFICACION HUFFMAN
La codificaci´ n Huffman usa un m´ todo espec´fico para
o
e
ı
elegir la representaci´ n de cada s´mbolo, que da lugar a un
o
ı
c´ digo prefijo (es decir, la cadena de bits que representa a
o
un s´mbolo en particular nunca es prefijo de la cadena de
ı
bits de un s´mbolo distinto) que representa los caracteres m´ s
ı
a
comunes usando las cadenas de bits m´ s cortas, y viceversa.
a
e
o
a
Huffman fue capaz de dise¨¿ 1 ar el m´ todo de compresi´ n m´ s
ı 2
eficiente de este tipo: ninguna representaci´ n alternativa de un
o
conjunto de s´mbolos de entrada produce una salida media m´ s
ı
a
peque˜ a cuando las frecuencias de los s´mbolos coinciden con
n
ı
las usadas para crear el c´ digo. Posteriormente se encontr´
o
o
un m´ todo para llevar esto a cabo en un tiempo lineal si las
e
probabilidades de los s´mbolos de entrada (tambi´ n conocidas
ı
e
como “pesos”) est´ n ordenadas. El codificador Huffman crea
a
una estructura arb´ rea ordenada con todos los s´mbolos y
o
ı
la frecuencia con que aparecen. Las ramas se construyen
en forma recursiva comenzando con los s´mbolos menos
ı
frecuentes.
Para un grupo de s´mbolos con una distribuci´ n de probaı
o
bilidad uniforme y un n´ mero de miembros que es potencia de
u
dos, la codificaci´ n Huffman es equivalente a una codificaci´ n
o
o
en bloque binaria, por ejemplo, la codificaci´ n ASCII. La
o
codificaci´ n Huffman es un m´ todo para crear c´ digos prefijo
o
e
o
tan extendido que el t´ rmino “codificaci´ n Huffman” es ame
o
pliamente usado como sin´ nimo de “c´ digo prefijo”, incluso
o
o
cuando dicho c´ digo no se ha producido con el algoritmo de
o
Huffman.
Aunque la codificaci´ n de Huffman es optima para una
o
´
codificaci´ n s´mbolo a s´mbolo dada una distribuci´ n de
o ı
ı
o
probabilidad, su optimalidad a veces puede verse accidentalmente exagerada. Por ejemplo, la codificaci´ n aritm´ tica y la
o
e
codificaci´ n LZW normalmente ofrecen mayor capacidad de
o
compresi´ n. Estos dos m´ todos pueden agrupar un n´ mero
o
e
u
arbitrario de s´mbolos para una codificaci´ n m´ s eficiente, y
ı
o
a
en general se adaptan a las estad´sticas de entrada reales. Este
ı
ultimo es util cuando las probabilidades no se conocen de
´
´
forma precisa o var´an significativamente dentro del flujo de
ı
datos.
´
´
C. TECNICA DE CODIFICACION RLE
La compresi´ n RLE o Run-length encoding es una forma
o
muy simple de compresi’on de datos en la que secuencias de
datos con el mismo valor consecutivas son almacenadas como
un unico valor m´ s su recuento. Esto es m´ s util en datos que
´
a
a ´
contienen muchas de estas “secuencias”; por ejemplo, gr´ ficos
a
sencillos con areas de color plano, como iconos y logotipos.
´
Por ejemplo, considera una pantalla que contiene texto en
negro sobre un fondo blanco. Habr´a muchas secuencias de
ı
este tipo con p´xeles blancos en los m´ rgenes vac´os, y otras
ı
a
ı
secuencias de p´xeles negros en la zona del texto. Supongamos
ı
una ´nica l´nea (o scanline), con N representando las zonas en
ı
ı
negro y B las de blanco:
“BBBBBBBBBBBBNBBBBBBBBBBBBNNNBBBB
BBBBBBBBBBBBBBBBBBBBNBBBBBBBBBBBBBB”
Si aplicamos la codificaci´ n run-length a esta l´nea, obo
ı
tendr´amos lo siguiente:
ı
“12B1N12B3N24B1N14B”
Interpretado esto como 12 letras B, 1 letra N , 12 letras B,
3 letras N, etc. El c´ digo run-length representa el original de
o
67 caracteres en tan s´ lo 16. Esto quiere decir que la l´nea
o
ı
original pesa 67 bytes y la cadena codificada pesa s´ lo 16
o
bytes.

´
˜
IV. DISENO Y PROGRAMACION DEL CODEC
HUFFMAN
Procedemos a realizar la compresi´ n, codificaci´ n y deo
o
codificaci´ n de un archivo de texto, que fue previamente
o
almacenado en la carpeta del programa para evitar errores.
La realizaci´ n del c´ digo se lo lleva a cabo en el software
o
o
Matlab, en donde programamos la compresi´ n y codificaci´ n
o
o
en un scrip, con el fin de generar un resultado expl´cito del
ı
comportamiento del sistema.
A. Etapa de almacenamiento
Primeramente el mensaje a codificar se lo almacena en
un .txt con nombre mensaje.txt de manera que el usuario
unicamente debera ingresar en este su mensaje a codificar y
el programa accede a este txt para su codificaci´ n.
o
B. Etapa de asignaci´ n
o
El programa luego de ingresar al archivo txt procede a
“asignar” a cada letra su respectivo c´ digo “ASCII” y lo
o
almacena en un string de tal manera que se nos facilite trabajar
con n´ meros que representara cada letra.
u
C. Etapa de verificaci´ n
o
En esta etapa lo que realizamos es la comprobaci´ n de
o
cada caracter, de tal manera que vayamos almacenando el
numero de veces que se repite cada caracter y de esta manera
obtener la probabilidad del mismo, de esta manera sabremos
la ocurrencia de cada uno, todas estas probabilidad se van
almacenando en otro nuevo string.
D. Etapa de compresi´ n
o
Hay dos funciones importantes que se encuentran incluidas
en Matlab, hablamos de la funci´ n ¡huffmamndict¿ que nos
o
permite crear el diccionario d´ nde la primera columna de listas
o
del dict son los valores de los s´mbolos y la segunda columna
ı
corresponde a las palabras c´ digo de cada s´mbolo. La funci´ n
o
ı
o
del huffmandict genera un c´ digo diccionario Huffman que
o
corresponde a una fuente con un modelo de probabilidad
conocido. Las entradas requeridas son los s´mbolos, que
ı
corresponde a los distintos valores se˜ alados que el mensaje
n
produce. Y tenemos tambien la funci´ n ¡huffmanenco¿, la
o
que nos permite codificar el mensaje con el diccionario
anteriormente obtenido , y la funci´ n ¡huffmandeco¿ la que
o
nos permite decodificar el mensaje para asi comprobar con el
mesanje asignado en un principio.
E. C´ digo en la herramienta MATLAB
o
%PRACTICA HUFFMAN CODE
clc
clear all
% LEER ARCHIVO
k=1;
fid = fopen(“Mensaje.txt”); % abrir el archivo
cadena = fscanf(fid,“%c”); % archivo guardado matriz cadena

cadena %presenta el mensaje a codificar
mensaje=double(cadena) %Presenta el mensaje en codigo
ASCII

aux=b(j);
b(j)=b(j+1);
b(j+1)=aux;
aux=c(j);
c(j)=c(j+1);
c(j+1)=aux;
end
end
end

for i=32:255 %225 caracteres ASCII
datos=char(i); %char convierte el numero ASCCI a caracter
total=length(strfind(cadena,datos)); % formando una matriz
con la posicion donde
% fue encontrado, leghth calcula el tama¨¿ 2 o de la matriz
ı 1

for i=1:n
fprintf (’%c ⁀ c(i))
’,
fprintf (’%f , b(i))
i=i+1;
end

x=length(cadena);
probabilidad=total/length(cadena); % probablidad
if(total = 0) % s¨¿ 1 el total a sido diferente de cero (X,1)
ı 2

bi=fliplr(b);
nh=n ;
for i=1:nh-1
ph=bi(i)+bi(i+1);
end

fprintf(’MENSAJE A CODIFICAR”);
fprintf(’salto de linea’);

L(k) = datos; % Almacena el mensaje
n=length(L);
V(k) = total; % Almacena las veces que se repite la letra en
el texto
P(k) = probabilidad; % Almacena las probabilidades de cada
letra
X(k) = cellstr(datos);
%fprintf (“%c ⁀’’, datos)
% fprintf (“%f ”,probabilidad)
⁀
fprintf(“Caracter: %c aparece :%d veces ”,datos,total);
⁀ ”,probabilidad);
%fprintf(“con probabilidad%f
k=k+1;
end
end
del
texto
de:
%d
caracfprintf(“Tama¨¿ 2 o
ı 1
teres”,length(cadena));%tama¨¿ 2 o total del txt
ı 1
fprintf(“salto de linea”); % ORDENAR DE MAYOR A
MENOR DEPENDIENDO SU PROBABILIDAD
b=P;
c=L;
fprintf (“Simbolos de la fuente”)
simbolos = double(c)
⁀
fprintf(“FUENTE ORDENADA”);
fprintf(“salto de linea”);
for i=1:n
for j=1:n-i
if b(j) < b(j+1)

matriz=[];
for i=1:n
matriz =[matriz, b(i)];
i=i+1;
end
while (length(matriz)¿2);
suma = matriz(length(matriz)) + matriz(length(matriz) - 1) ;
matriz( length(matriz) - 1 ) = suma;
matriz( length(matriz) ) = [];
matriz=sort(matriz, “descend”)
end
fprintf(“DICCIONARIO”)
dict = huffmandict(simbolos,b) %Asigna el diccionario
fprintf(“MENSAJE CODIFICADO”)
hcode =huffmanenco (mensaje,dict) %Codifica el mensaje
dhsig = huffmandeco(hcode,dict) %Decodifica el mensaje
fprintf(“MENSAJE DECODIFICADO”)
mensajedeco = char(dhsig)
tamano1=(length(cadena))*8
tamano2=length(hcode)
fprintf(“Tama¨¿ 2 o del archivo original: %d bits” ,tamano1)
ı 1
fprintf(“Tama¨¿ 2 o del archivo comprimido: %d bits”,tamano2)
ı 1
F. C´ digo de comparaci´ n en la herramienta MATLAB
o
o
%CODIGO RLE
clc;
clear;
st = “AABCDEABCDFGHTREFTFFDVD”
codigo = “”;
while length(st)
codigo = [codigo st(1)];
st = st(2:end);
count = 1;
while st & (codigo(end) == st(1))
st = st(2:end);
count = count + 1; end
codigo = [codigo num2str(count)];
end
Ncod=length(codigo)
Nor=length(st)
Tcrun=(Ncod/Nor)*100;
codigo

VI. CONCLUSIONES
1) Se pudo observar y entender mas a fondo el procedimiento de la codificaci´ n Huffman.
o
2) Se logr´ crear un algoritmo pr´ pio basado en la codifio
o
caci´ n Huffman con la ayuda de la herramienta matlab.
o
3) Se realiz´ multiples pruebas de funcionamiento del codec
o
para verificar su validad.
4) Se valido el codec Huffman comparando el tama˜ o de
n
los archivos tanto el original como el comprimido.
5) Se valido el codec Huffman comparandolo con el c´ digo
o
RLE
6) La compresi´ Huffman en matlab es sumamente compleja
o
por lo que ayudarse en las funciones propias de matlab
facilito mucho la tarea.
7) Al decodificar tanto utilizando Huffman como RLE se
pudo obtener el mensaje original sin error alguno, por lo
que se comprob´ tambien la codificaci´ n sin p´ rdidas.
o
o
e

´
V. VALIDACION
Para la validaci´ n se procedio a comprimir un determinado
o
texto para luego comprobar el tama˜ o en bits del mensaje
n
original con el mensaje codificado en Huffman y a su ves con
el c´ digo RLE y de esta manera determinar que codificaci´ n
o
o
ser´a la mas adecuada y la mas eficiente.
ı
La relaci´ n de compresion se define por el cociente entre
o
el tama˜ o original del archivo que queremos comprimir y el
n
tama˜ o del archivo comprimido.
n
RC =

To
Tc

(1)

El texto a comprimir tiene un tama˜ o de 3416 bits. El
n
texto comprimido con Huffman tiene un tama˜ o de 1975 bits.
n
El texto comprimido con RLE tiene un tama˜ o de 6784 bits.
n
HUFFMAN

3416
1975
RC = 1.73 : 1
RC =

RLE
RC =

3416
6784

VII. RECOMENDACIONES
1) En la programaci´ n se debe tener mucho cuidado en la
o
asignaci´ n del codigo Huffman ya que se es propenso a
o
cometer errores en esta etapa.
2) Tener clara la idea sobre la codificaci´ n Huffman de esta
o
manera sabemos hacia donde deseamos llegar con nuestro
algoritmo.
3) Tener cuidado en el momento que se asigna la probabilidad a cada caracter.
4) Si es posible utilizar las funciones propias de matlab,
utilizarlas facilitan en mucho el trabajo.

1)

(2)
2)
(3)
3)

RC = 0.503 : 1
4)
Podemos observar que la t´ cnica de codificaci´ n Huffman
e
o
tiene una relaci´ n de compresi´ n mayor a la codificaci´ n
o
o
o
RLE, demas de esto comparando el tama˜ o de cada t´ cnica
n
e
de codificaci´ n, se puede observar claramente que la t´ cnica
o
e
Huffman es la mas eficiente. As´ mismo obtenemos el factor
ı
de compresi´ n del c´ digo Huffman.
o
o
1
RC ∗ 100%
1
FC =
1.73 ∗ 100%
F C = 59%
FC =

(4)

5)

VIII. REFERENCIAS
´
CODIFICACION
“Codificaci´ n
o
Huffman
con
Matlab”,
Disponible
en
linea
en:
[http://www.buenastareas.com/ensayos/Simulaci%C3%B3nEn-Matlab-De-Codificacion-De/3052631.html],
consultado el [10-11-2013]
MATLAB CENTRAL “Ascii to binary”, Disponible en:
[http://www.mathworks.com/matlabcentral/answers/7245],consultado
el [10-11-2013].
´
KIOSKEA “La compresiOn de datos”, Disponible
en:[http://es.kioskea.net/contents/714-la-compresion-dedatos], consultado el [10-11-2013].
´
KIOSKEA “La compresiOn RLE”, Disponible en
[http://es.kioskea.net/contents/713-la-compresion-rle],
consultado el [11-11-2013]
SLIDESAHRE, “C´ digos de Huffman” Disponible en
o
[http://www.slideshare.net/gugaslide/codigo-de-huffmanpresentation], consultado el [11-11-2013]

Weitere ähnliche Inhalte

Was ist angesagt?

Protocolos
ProtocolosProtocolos
Protocolosjuan198
 
58 Php. Mensajes De Correo
58 Php. Mensajes De Correo58 Php. Mensajes De Correo
58 Php. Mensajes De CorreoJosé M. Padilla
 
24 Php. Concatenacion De Cadenas
24 Php. Concatenacion De Cadenas24 Php. Concatenacion De Cadenas
24 Php. Concatenacion De CadenasJosé M. Padilla
 
Sintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladorSintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladornaye torres
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 
Reglas a seguir para mandar un correo electrónico o email
Reglas a seguir para mandar un correo electrónico o email Reglas a seguir para mandar un correo electrónico o email
Reglas a seguir para mandar un correo electrónico o email formapaco
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con ConstantesJosé M. Padilla
 
Seguridad redes
Seguridad redesSeguridad redes
Seguridad redesJAV_999
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguajeyuli02
 

Was ist angesagt? (15)

Protocolos
ProtocolosProtocolos
Protocolos
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Semana 6: LZ77
Semana 6: LZ77Semana 6: LZ77
Semana 6: LZ77
 
58 Php. Mensajes De Correo
58 Php. Mensajes De Correo58 Php. Mensajes De Correo
58 Php. Mensajes De Correo
 
24 Php. Concatenacion De Cadenas
24 Php. Concatenacion De Cadenas24 Php. Concatenacion De Cadenas
24 Php. Concatenacion De Cadenas
 
Sintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladorSintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensamblador
 
Cesar ivan lenguaje_c
Cesar ivan lenguaje_cCesar ivan lenguaje_c
Cesar ivan lenguaje_c
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Reglas a seguir para mandar un correo electrónico o email
Reglas a seguir para mandar un correo electrónico o email Reglas a seguir para mandar un correo electrónico o email
Reglas a seguir para mandar un correo electrónico o email
 
El datagrama ip
El datagrama ipEl datagrama ip
El datagrama ip
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes
 
Seguridad redes
Seguridad redesSeguridad redes
Seguridad redes
 
Nfda
NfdaNfda
Nfda
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 

Andere mochten auch

16 ноября – всемирный день толерантности
16 ноября – всемирный день толерантности16 ноября – всемирный день толерантности
16 ноября – всемирный день толерантностиDmitry Ofitserov
 
Ensayo de simce lenguaje n° 1
Ensayo de simce lenguaje n° 1Ensayo de simce lenguaje n° 1
Ensayo de simce lenguaje n° 1colegio millahue
 
Pengembangan motivasi (modul)
Pengembangan motivasi (modul)Pengembangan motivasi (modul)
Pengembangan motivasi (modul)Tri Damri
 
The Liturgical Year
The Liturgical Year The Liturgical Year
The Liturgical Year Kathy Sahagun
 
Road safety in India
Road safety in IndiaRoad safety in India
Road safety in IndiaRohit Sharma
 
Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)Eduardoro28
 
Dialnet evolucion y-desarrollofacial-3986749-2
Dialnet evolucion y-desarrollofacial-3986749-2Dialnet evolucion y-desarrollofacial-3986749-2
Dialnet evolucion y-desarrollofacial-3986749-2Kathya Vega
 

Andere mochten auch (13)

PADI 02
PADI 02PADI 02
PADI 02
 
Setting up a business
Setting up a businessSetting up a business
Setting up a business
 
16 ноября – всемирный день толерантности
16 ноября – всемирный день толерантности16 ноября – всемирный день толерантности
16 ноября – всемирный день толерантности
 
การเขียนคำสั่งแบบวนซ้ำ
การเขียนคำสั่งแบบวนซ้ำการเขียนคำสั่งแบบวนซ้ำ
การเขียนคำสั่งแบบวนซ้ำ
 
Ensayo de simce lenguaje n° 1
Ensayo de simce lenguaje n° 1Ensayo de simce lenguaje n° 1
Ensayo de simce lenguaje n° 1
 
Pengembangan motivasi (modul)
Pengembangan motivasi (modul)Pengembangan motivasi (modul)
Pengembangan motivasi (modul)
 
The Liturgical Year
The Liturgical Year The Liturgical Year
The Liturgical Year
 
Road safety in India
Road safety in IndiaRoad safety in India
Road safety in India
 
Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)Ciberbullying eduardo cruz (2)
Ciberbullying eduardo cruz (2)
 
Ror caching
Ror cachingRor caching
Ror caching
 
Dialnet evolucion y-desarrollofacial-3986749-2
Dialnet evolucion y-desarrollofacial-3986749-2Dialnet evolucion y-desarrollofacial-3986749-2
Dialnet evolucion y-desarrollofacial-3986749-2
 
Institucionalidad
InstitucionalidadInstitucionalidad
Institucionalidad
 
Tifl (yusi)
Tifl (yusi)Tifl (yusi)
Tifl (yusi)
 

Ähnlich wie Hpcs conf poster

CODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptxCODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptxJosGmez15617
 
Algoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-ToledoAlgoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-ToledoBelen Toledo
 
Estructuras de decisión o selectivas
Estructuras de decisión o selectivasEstructuras de decisión o selectivas
Estructuras de decisión o selectivasDenisse C
 
6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsxJoseBiafore1
 
Métodos y técnicas de encriptación
Métodos y técnicas de encriptaciónMétodos y técnicas de encriptación
Métodos y técnicas de encriptaciónlacandymamy
 
Teoria de la informacion
Teoria de la informacionTeoria de la informacion
Teoria de la informacionOberdose
 
Introduccion allenguajedeprogramacion
Introduccion allenguajedeprogramacionIntroduccion allenguajedeprogramacion
Introduccion allenguajedeprogramacionyubert
 
Quasi - scripts-linux
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linuxdegarden
 
Compiladores
CompiladoresCompiladores
Compiladoresjose haar
 

Ähnlich wie Hpcs conf poster (20)

CODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptxCODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptx
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
 
Compresion de archivos
Compresion de archivosCompresion de archivos
Compresion de archivos
 
Trabajo maxi unidad i
Trabajo maxi unidad iTrabajo maxi unidad i
Trabajo maxi unidad i
 
COMPRESION DE DATOS.pptx
COMPRESION DE DATOS.pptxCOMPRESION DE DATOS.pptx
COMPRESION DE DATOS.pptx
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Algoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-ToledoAlgoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-Toledo
 
Estructuras de decisión o selectivas
Estructuras de decisión o selectivasEstructuras de decisión o selectivas
Estructuras de decisión o selectivas
 
Php curso03
Php   curso03Php   curso03
Php curso03
 
6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx
 
Estructura .COM
Estructura .COMEstructura .COM
Estructura .COM
 
Métodos y técnicas de encriptación
Métodos y técnicas de encriptaciónMétodos y técnicas de encriptación
Métodos y técnicas de encriptación
 
Teoria de la informacion
Teoria de la informacionTeoria de la informacion
Teoria de la informacion
 
Introduccion allenguajedeprogramacion
Introduccion allenguajedeprogramacionIntroduccion allenguajedeprogramacion
Introduccion allenguajedeprogramacion
 
Quasi - scripts-linux
Quasi - scripts-linuxQuasi - scripts-linux
Quasi - scripts-linux
 
Practica 09
Practica 09Practica 09
Practica 09
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Ensayo de php
Ensayo de phpEnsayo de php
Ensayo de php
 

Mehr von Cristian Aguirre Esparza (19)

EJEMPLO
EJEMPLOEJEMPLO
EJEMPLO
 
AVL HARDWARE
AVL HARDWAREAVL HARDWARE
AVL HARDWARE
 
Funciones de Convolución
Funciones de ConvoluciónFunciones de Convolución
Funciones de Convolución
 
Amplificador con transistor BJT (Microondas)
Amplificador con transistor BJT (Microondas)Amplificador con transistor BJT (Microondas)
Amplificador con transistor BJT (Microondas)
 
Unidad de Control
Unidad de ControlUnidad de Control
Unidad de Control
 
FILTRO IRR MATLAB
FILTRO IRR MATLABFILTRO IRR MATLAB
FILTRO IRR MATLAB
 
Que afecta a una comunicacion en hf
Que afecta a una comunicacion en hfQue afecta a una comunicacion en hf
Que afecta a una comunicacion en hf
 
AMPLIFICADOR DE AUDIO
AMPLIFICADOR DE AUDIOAMPLIFICADOR DE AUDIO
AMPLIFICADOR DE AUDIO
 
INVESTIGACIÓN CIELO DE LOJA
INVESTIGACIÓN CIELO DE LOJAINVESTIGACIÓN CIELO DE LOJA
INVESTIGACIÓN CIELO DE LOJA
 
Entorno Natural Del Cantón Loja
Entorno Natural Del Cantón LojaEntorno Natural Del Cantón Loja
Entorno Natural Del Cantón Loja
 
Generación de Computadores
Generación de ComputadoresGeneración de Computadores
Generación de Computadores
 
Funciones del Procesador
Funciones del ProcesadorFunciones del Procesador
Funciones del Procesador
 
BECHMAKING
BECHMAKINGBECHMAKING
BECHMAKING
 
Arquitectura RISC-CISC
Arquitectura RISC-CISCArquitectura RISC-CISC
Arquitectura RISC-CISC
 
Acceso Directo de Memoria
Acceso Directo de MemoriaAcceso Directo de Memoria
Acceso Directo de Memoria
 
Loja pionera de la generacion electrica
Loja pionera de la generacion electricaLoja pionera de la generacion electrica
Loja pionera de la generacion electrica
 
Motor electrico
Motor electricoMotor electrico
Motor electrico
 
Lcc cristian_aguirre_esparza
Lcc cristian_aguirre_esparzaLcc cristian_aguirre_esparza
Lcc cristian_aguirre_esparza
 
Cristian aguirre
Cristian aguirreCristian aguirre
Cristian aguirre
 

Hpcs conf poster

  • 1. ´ ˜ DISENO Y PROGRAMACION DE UN CODEC HUFFMAN Cristian Aguirre Esparza cbaguirre@utpl.edu.ec Abstract—A medida que la necesidad de los usuarios de enviar y recibir informaci´ n cada ves es mas extensa, surgio la necesidad o de comprimir dicha informaci´ n de tal manera que esta sea o posible enviarla y recibirla sin ocasionar perdidas pero a su ves en un numero menor de datos, de esta manera facilitar en mucho las comunicaciones. En base a esto la practica a desarrollarse, ˜ es el de disenar y programar un c´ digo HUFFMAN ya sea o para audio, video o texto, y utilizando otro c´ digo sin perdidas o comprobar el funcionamiento del c´ digo HUFFMAN. En nuestro o caso hemos elejido texto, ya que consideramos que de los tres campos, con texto se nos facilitaria ver y entender la operaci´ n y o el funcionamiento del c´ digo, que es el objetivo de esta pr´ ctica. o a Keywords—Comprensi´ n, matlab, texto, huffman, RLZ. o ´ I. INTRODUCCION E N ciencias de la computaci´ n y teor´a de la informaci´ n, o ı o la codificaci´ n Huffman es un algoritmo usado para o compresi´ n de datos. El t´ rmino se refiere al uso de una tabla o e de c´ digos de longitud variable para codificar un determinado o s´mbolo (como puede ser un caracter en un archivo), donde la ı tabla ha sido rellenada de una manera espec´fica bas´ ndose en ı a la probabilidad estimada de aparici´ n de cada posible valor o de dicho s´mbolo. Fue desarrollado por David A. Huffman ı mientras era estudiante de doctorado en el MIT, y publicado en “A Method for the Construction of Minimum-Redundancy Codes”. Para poder utilizar el algoritmo de Huffman es necesario conocer de antemano las frecuencias de aparici´ n o de cada s´mbolo, y su eficiencia depende de lo pr´ ximas ı o 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. [1] II. OBJETIVOS 1) 2) 3) 4) Dise˜ ar un codec Huffman en base a la teor´a revisada. n ı Programar el codec Huffman. Realizar pruebas de funcionamiento del codec. Validar el codec Huffman (comparar con otro codec de compresi´ n con/sin p´ rdidas). o e ´ III. MARCO TEORICO ´ A. COMPRESION DE DATOS (TEXTO) La compresi´ n es un caso particular de la codificaci´ n, o o cuya caracter´stica principal es que el c´ digo resultante tiene ı o menor tama˜ o que el original. En otras palabras la compresi´ n n o de datos es la reducci´ n del volumen de datos tratables o para representar una determinada informaci´ n empleando una o menor cantidad de espacio. La compresi´ n se basa fundao mentalmente en buscar repeticiones en series de datos para despu´ s almacenar solo el dato junto al n´ mero de veces que se e u repite. As´, por ejemplo, si en un fichero aparece una secuencia ı como “AAAAAA”, ocupando 6 bytes se podr´a almacenar ı simplemente ”6A” que ocupa solo 2 bytes. En realidad, el proceso es mucho m´ s complejo, ya que a raramente se consigue encontrar patrones de repetici´ n tan o exactos (salvo en algunas im´ genes). Se utilizan algoritmos a de compresi´ n. o Por un lado, algunos buscan series largas que luego codifican en formas m´ s breves, por otro lado, algunos algoritmos, a como el algoritmo de Huffman que es el que se utilizara en esta pr´ ctica, examinan los caracteres m´ s repetidos para a a luego codificar de forma m´ s corta los que m´ s se repiten. a a Otros, como el LZW, construyen un diccionario con los patrones encontrados, a los cuales se hace referencia de manera posterior, y por ultimo, la compresi´ n RLE o Run-length o encoding es una forma muy simple de compresi´ n de datos en o la que secuencias de datos con el mismo valor consecutivas son almacenadas como un unico valor m´ s su recuento. ´ a ´ ´ B. TECNICA DE CODIFICACION HUFFMAN La codificaci´ n Huffman usa un m´ todo espec´fico para o e ı elegir la representaci´ n de cada s´mbolo, que da lugar a un o ı c´ digo prefijo (es decir, la cadena de bits que representa a o un s´mbolo en particular nunca es prefijo de la cadena de ı bits de un s´mbolo distinto) que representa los caracteres m´ s ı a comunes usando las cadenas de bits m´ s cortas, y viceversa. a e o a Huffman fue capaz de dise¨¿ 1 ar el m´ todo de compresi´ n m´ s ı 2 eficiente de este tipo: ninguna representaci´ n alternativa de un o conjunto de s´mbolos de entrada produce una salida media m´ s ı a peque˜ a cuando las frecuencias de los s´mbolos coinciden con n ı las usadas para crear el c´ digo. Posteriormente se encontr´ o o
  • 2. un m´ todo para llevar esto a cabo en un tiempo lineal si las e probabilidades de los s´mbolos de entrada (tambi´ n conocidas ı e como “pesos”) est´ n ordenadas. El codificador Huffman crea a una estructura arb´ rea ordenada con todos los s´mbolos y o ı la frecuencia con que aparecen. Las ramas se construyen en forma recursiva comenzando con los s´mbolos menos ı frecuentes. Para un grupo de s´mbolos con una distribuci´ n de probaı o bilidad uniforme y un n´ mero de miembros que es potencia de u dos, la codificaci´ n Huffman es equivalente a una codificaci´ n o o en bloque binaria, por ejemplo, la codificaci´ n ASCII. La o codificaci´ n Huffman es un m´ todo para crear c´ digos prefijo o e o tan extendido que el t´ rmino “codificaci´ n Huffman” es ame o pliamente usado como sin´ nimo de “c´ digo prefijo”, incluso o o cuando dicho c´ digo no se ha producido con el algoritmo de o Huffman. Aunque la codificaci´ n de Huffman es optima para una o ´ codificaci´ n s´mbolo a s´mbolo dada una distribuci´ n de o ı ı o probabilidad, su optimalidad a veces puede verse accidentalmente exagerada. Por ejemplo, la codificaci´ n aritm´ tica y la o e codificaci´ n LZW normalmente ofrecen mayor capacidad de o compresi´ n. Estos dos m´ todos pueden agrupar un n´ mero o e u arbitrario de s´mbolos para una codificaci´ n m´ s eficiente, y ı o a en general se adaptan a las estad´sticas de entrada reales. Este ı ultimo es util cuando las probabilidades no se conocen de ´ ´ forma precisa o var´an significativamente dentro del flujo de ı datos. ´ ´ C. TECNICA DE CODIFICACION RLE La compresi´ n RLE o Run-length encoding es una forma o muy simple de compresi’on de datos en la que secuencias de datos con el mismo valor consecutivas son almacenadas como un unico valor m´ s su recuento. Esto es m´ s util en datos que ´ a a ´ contienen muchas de estas “secuencias”; por ejemplo, gr´ ficos a sencillos con areas de color plano, como iconos y logotipos. ´ Por ejemplo, considera una pantalla que contiene texto en negro sobre un fondo blanco. Habr´a muchas secuencias de ı este tipo con p´xeles blancos en los m´ rgenes vac´os, y otras ı a ı secuencias de p´xeles negros en la zona del texto. Supongamos ı una ´nica l´nea (o scanline), con N representando las zonas en ı ı negro y B las de blanco: “BBBBBBBBBBBBNBBBBBBBBBBBBNNNBBBB BBBBBBBBBBBBBBBBBBBBNBBBBBBBBBBBBBB” Si aplicamos la codificaci´ n run-length a esta l´nea, obo ı tendr´amos lo siguiente: ı “12B1N12B3N24B1N14B” Interpretado esto como 12 letras B, 1 letra N , 12 letras B, 3 letras N, etc. El c´ digo run-length representa el original de o 67 caracteres en tan s´ lo 16. Esto quiere decir que la l´nea o ı original pesa 67 bytes y la cadena codificada pesa s´ lo 16 o bytes. ´ ˜ IV. DISENO Y PROGRAMACION DEL CODEC HUFFMAN Procedemos a realizar la compresi´ n, codificaci´ n y deo o codificaci´ n de un archivo de texto, que fue previamente o almacenado en la carpeta del programa para evitar errores. La realizaci´ n del c´ digo se lo lleva a cabo en el software o o Matlab, en donde programamos la compresi´ n y codificaci´ n o o en un scrip, con el fin de generar un resultado expl´cito del ı comportamiento del sistema. A. Etapa de almacenamiento Primeramente el mensaje a codificar se lo almacena en un .txt con nombre mensaje.txt de manera que el usuario unicamente debera ingresar en este su mensaje a codificar y el programa accede a este txt para su codificaci´ n. o B. Etapa de asignaci´ n o El programa luego de ingresar al archivo txt procede a “asignar” a cada letra su respectivo c´ digo “ASCII” y lo o almacena en un string de tal manera que se nos facilite trabajar con n´ meros que representara cada letra. u C. Etapa de verificaci´ n o En esta etapa lo que realizamos es la comprobaci´ n de o cada caracter, de tal manera que vayamos almacenando el numero de veces que se repite cada caracter y de esta manera obtener la probabilidad del mismo, de esta manera sabremos la ocurrencia de cada uno, todas estas probabilidad se van almacenando en otro nuevo string. D. Etapa de compresi´ n o Hay dos funciones importantes que se encuentran incluidas en Matlab, hablamos de la funci´ n ¡huffmamndict¿ que nos o permite crear el diccionario d´ nde la primera columna de listas o del dict son los valores de los s´mbolos y la segunda columna ı corresponde a las palabras c´ digo de cada s´mbolo. La funci´ n o ı o del huffmandict genera un c´ digo diccionario Huffman que o corresponde a una fuente con un modelo de probabilidad conocido. Las entradas requeridas son los s´mbolos, que ı corresponde a los distintos valores se˜ alados que el mensaje n produce. Y tenemos tambien la funci´ n ¡huffmanenco¿, la o que nos permite codificar el mensaje con el diccionario anteriormente obtenido , y la funci´ n ¡huffmandeco¿ la que o nos permite decodificar el mensaje para asi comprobar con el mesanje asignado en un principio. E. C´ digo en la herramienta MATLAB o %PRACTICA HUFFMAN CODE clc clear all % LEER ARCHIVO k=1;
  • 3. fid = fopen(“Mensaje.txt”); % abrir el archivo cadena = fscanf(fid,“%c”); % archivo guardado matriz cadena cadena %presenta el mensaje a codificar mensaje=double(cadena) %Presenta el mensaje en codigo ASCII aux=b(j); b(j)=b(j+1); b(j+1)=aux; aux=c(j); c(j)=c(j+1); c(j+1)=aux; end end end for i=32:255 %225 caracteres ASCII datos=char(i); %char convierte el numero ASCCI a caracter total=length(strfind(cadena,datos)); % formando una matriz con la posicion donde % fue encontrado, leghth calcula el tama¨¿ 2 o de la matriz ı 1 for i=1:n fprintf (’%c ⁀ c(i)) ’, fprintf (’%f , b(i)) i=i+1; end x=length(cadena); probabilidad=total/length(cadena); % probablidad if(total = 0) % s¨¿ 1 el total a sido diferente de cero (X,1) ı 2 bi=fliplr(b); nh=n ; for i=1:nh-1 ph=bi(i)+bi(i+1); end fprintf(’MENSAJE A CODIFICAR”); fprintf(’salto de linea’); L(k) = datos; % Almacena el mensaje n=length(L); V(k) = total; % Almacena las veces que se repite la letra en el texto P(k) = probabilidad; % Almacena las probabilidades de cada letra X(k) = cellstr(datos); %fprintf (“%c ⁀’’, datos) % fprintf (“%f ”,probabilidad) ⁀ fprintf(“Caracter: %c aparece :%d veces ”,datos,total); ⁀ ”,probabilidad); %fprintf(“con probabilidad%f k=k+1; end end del texto de: %d caracfprintf(“Tama¨¿ 2 o ı 1 teres”,length(cadena));%tama¨¿ 2 o total del txt ı 1 fprintf(“salto de linea”); % ORDENAR DE MAYOR A MENOR DEPENDIENDO SU PROBABILIDAD b=P; c=L; fprintf (“Simbolos de la fuente”) simbolos = double(c) ⁀ fprintf(“FUENTE ORDENADA”); fprintf(“salto de linea”); for i=1:n for j=1:n-i if b(j) < b(j+1) matriz=[]; for i=1:n matriz =[matriz, b(i)]; i=i+1; end while (length(matriz)¿2); suma = matriz(length(matriz)) + matriz(length(matriz) - 1) ; matriz( length(matriz) - 1 ) = suma; matriz( length(matriz) ) = []; matriz=sort(matriz, “descend”) end fprintf(“DICCIONARIO”) dict = huffmandict(simbolos,b) %Asigna el diccionario fprintf(“MENSAJE CODIFICADO”) hcode =huffmanenco (mensaje,dict) %Codifica el mensaje dhsig = huffmandeco(hcode,dict) %Decodifica el mensaje fprintf(“MENSAJE DECODIFICADO”) mensajedeco = char(dhsig) tamano1=(length(cadena))*8 tamano2=length(hcode) fprintf(“Tama¨¿ 2 o del archivo original: %d bits” ,tamano1) ı 1 fprintf(“Tama¨¿ 2 o del archivo comprimido: %d bits”,tamano2) ı 1 F. C´ digo de comparaci´ n en la herramienta MATLAB o o %CODIGO RLE clc; clear; st = “AABCDEABCDFGHTREFTFFDVD”
  • 4. codigo = “”; while length(st) codigo = [codigo st(1)]; st = st(2:end); count = 1; while st & (codigo(end) == st(1)) st = st(2:end); count = count + 1; end codigo = [codigo num2str(count)]; end Ncod=length(codigo) Nor=length(st) Tcrun=(Ncod/Nor)*100; codigo VI. CONCLUSIONES 1) Se pudo observar y entender mas a fondo el procedimiento de la codificaci´ n Huffman. o 2) Se logr´ crear un algoritmo pr´ pio basado en la codifio o caci´ n Huffman con la ayuda de la herramienta matlab. o 3) Se realiz´ multiples pruebas de funcionamiento del codec o para verificar su validad. 4) Se valido el codec Huffman comparando el tama˜ o de n los archivos tanto el original como el comprimido. 5) Se valido el codec Huffman comparandolo con el c´ digo o RLE 6) La compresi´ Huffman en matlab es sumamente compleja o por lo que ayudarse en las funciones propias de matlab facilito mucho la tarea. 7) Al decodificar tanto utilizando Huffman como RLE se pudo obtener el mensaje original sin error alguno, por lo que se comprob´ tambien la codificaci´ n sin p´ rdidas. o o e ´ V. VALIDACION Para la validaci´ n se procedio a comprimir un determinado o texto para luego comprobar el tama˜ o en bits del mensaje n original con el mensaje codificado en Huffman y a su ves con el c´ digo RLE y de esta manera determinar que codificaci´ n o o ser´a la mas adecuada y la mas eficiente. ı La relaci´ n de compresion se define por el cociente entre o el tama˜ o original del archivo que queremos comprimir y el n tama˜ o del archivo comprimido. n RC = To Tc (1) El texto a comprimir tiene un tama˜ o de 3416 bits. El n texto comprimido con Huffman tiene un tama˜ o de 1975 bits. n El texto comprimido con RLE tiene un tama˜ o de 6784 bits. n HUFFMAN 3416 1975 RC = 1.73 : 1 RC = RLE RC = 3416 6784 VII. RECOMENDACIONES 1) En la programaci´ n se debe tener mucho cuidado en la o asignaci´ n del codigo Huffman ya que se es propenso a o cometer errores en esta etapa. 2) Tener clara la idea sobre la codificaci´ n Huffman de esta o manera sabemos hacia donde deseamos llegar con nuestro algoritmo. 3) Tener cuidado en el momento que se asigna la probabilidad a cada caracter. 4) Si es posible utilizar las funciones propias de matlab, utilizarlas facilitan en mucho el trabajo. 1) (2) 2) (3) 3) RC = 0.503 : 1 4) Podemos observar que la t´ cnica de codificaci´ n Huffman e o tiene una relaci´ n de compresi´ n mayor a la codificaci´ n o o o RLE, demas de esto comparando el tama˜ o de cada t´ cnica n e de codificaci´ n, se puede observar claramente que la t´ cnica o e Huffman es la mas eficiente. As´ mismo obtenemos el factor ı de compresi´ n del c´ digo Huffman. o o 1 RC ∗ 100% 1 FC = 1.73 ∗ 100% F C = 59% FC = (4) 5) VIII. REFERENCIAS ´ CODIFICACION “Codificaci´ n o Huffman con Matlab”, Disponible en linea en: [http://www.buenastareas.com/ensayos/Simulaci%C3%B3nEn-Matlab-De-Codificacion-De/3052631.html], consultado el [10-11-2013] MATLAB CENTRAL “Ascii to binary”, Disponible en: [http://www.mathworks.com/matlabcentral/answers/7245],consultado el [10-11-2013]. ´ KIOSKEA “La compresiOn de datos”, Disponible en:[http://es.kioskea.net/contents/714-la-compresion-dedatos], consultado el [10-11-2013]. ´ KIOSKEA “La compresiOn RLE”, Disponible en [http://es.kioskea.net/contents/713-la-compresion-rle], consultado el [11-11-2013] SLIDESAHRE, “C´ digos de Huffman” Disponible en o [http://www.slideshare.net/gugaslide/codigo-de-huffmanpresentation], consultado el [11-11-2013]