Está en la página 1de 2

Actividad Huffman Adaptable

Nombre: Arnaldo Ugarte Pentón


Matrícula: 934703
Para el siguiente informe se procede a realizar un análisis del archivo
4LETTERS.WOR dado en la página web de la asignatura el cual contiene un conjunto
de caracteres. Según las órdenes de la actividad “Huffman Adaptable” de un conjunto
de funciones se analizan un conjunto de salidas de dichas y se propone hacer ciertas
comprobaciones, todo esto se hace mediante un sencillo programa.
1. Verifique que el programa funciona correctamente reemplazando el archivo de
texto en la línea 3 de huffadapt.m por el archivo conocido 4LETTERS.WOR y
ejecute el programa.
Se verificó que el programa funciona correctamente

2. Explique las salidas del programa (alpha, tag, sequence). Verifique el nivel de
compresión del archivo de entrada. Para lograr esto tal vez deba hacer
globales algunas variables locales
alpha – diccionario de los símbolos
tag – símbolos codificados en bits según el algoritmo de Huffman adaptable
seq – bits de tags decodificados en caracteres ASCII
No fue necesario hacer ninguna variable global ya que la función se corrió desde el
mismo archivo, y esta fue modificada para que diera las salidas alpha, tag, y seq.

3. Documente las funciones de MATLAB insertando comentarios sobre el


funcionamiento dentro del código del programa.

function huffadapt()
fid=fopen('4LETTERS.WOR','r'); %Abre el fichero 4LETTERS.WOR
seq=fread(fid,'*char'); %lee el fichero 4LETTERS.WOR y lo guarda
tipo arreglo de characteres dentro de seq
fclose(fid); %cierra el fichero 4LETTERS.WOR
seq=reshape(seq,1,length(seq));
[alpha prob]=probmodel(seq); % calcula probablidad de cada
simbolo asi como su diccionario
btag=huffadaptencod(alpha,seq); %codifica seq según Huffman y
guarda los bits en btag
disp(strcat('Tag =',btag)); %Muestra btag en pantalla
seq=huffadaptdecod(alpha,btag); %decodifica btag
disp(strcat('Sequence =',seq)); %Muestra btag decodificado

4. Abra el programa adaptivehuffman.m y lea la descripción de la función


5. Convierta el archivo 4LETTERS.WOR a código ASCII de 8 bits y construya un
arreglo de enteros con números producto de la conversión
intArray = uint8([]);
for i = 1:1:length(seq)
intArray(i) = uint8(seq(i));
end

6. Utilice el nombre del arreglo en el lugar del parámetro stream para mandar a
llamar a la función huffstream = adaptivehuffman(stream, type) en donde type
se sustituye por ‘enc’ o ‘dec’ según se desee codificar o decodificar.

huffstream_enco = adaptivehuffman(intArray,'enc');
huffstream_deco = adaptivehuffman(huffstream_enco,'dec');

7. Dibuje las estructuras de datos utilizadas y describa brevemente un


ejemplo de actualización del árbol usando el editor de archivos .m
verificando las modificaciones en los arreglos. Este paso se puede
simplificar usando la función “treedetails” el programa.

8. Compare el desempeño de este algoritmo con el de Huffman estático


para un archivo de texto

Estos fueron los resultados de una codificación de Huffman de varianza


mínima:
H1 = 4.591
Longitud media 1 = 4.622 bits/simbolo
Razon de compresion 1 = 57.8% -> (Bit sin codificar/bit codificados)
Redundancia 1 = 0.031
Eficiencia 1 = 99.318

Los resultados de la codificación de Huffman adaptable fueron


H = 4.591
Longitud media = 10.8569 bits/símbolo
Se incrementó respecto a la cantidad de bits original por símbolo que
son 8 bits.
Razon de compresion = 135.71%--> (Bit sin codificar/bit codificados)
En este caso se puede ver que la utilización del algoritmo de Huffman
adaptable no fue eficiente ya que en vez de disminuir la cantidad de bits
aumentaron.
Redundancia = 6.2659
Eficiencia = -36.4822
Este resultado negativo refleja que el código de Huffman adaptable por
lo menos para el archivo de muestra que se codificó/decodificó no es
eficiente.

También podría gustarte