25 de abril de 2013

Código Adaptativo

Teoría de la Información y Métodos de Codificación
Tarea 4

Para la entrega de esta tarea se nos pidió crear desde nuestras propias ideas el código adaptativo de la codificación Huffman, por lo tanto si estabas buscando una explicación del algoritmo de Huffman Adaptativo, este no es el mejor lugar ya que el método propuesto es de mi propia creación y no se asegura su funcionalidad.

Diseño del método adaptativo


Como idea para el método adaptativo pensé en algo muy simple, que seguramente en la evaluación de desempeño no logre mejorar al algoritmo simple de codificación Huffman. Lo que realicé fue crear un generador que recibe como entrada desde línea de comandos el parámetro del largo del texto que se irá generando carácter por carácter, y que se almacena en un buffer de un largo que también se define desde línea de comandos.

Lo que hace el programa es ir generando al momento el texto, que por el momento solo use los caracteres para letras minúsculas, y cuando el buffer llega al tamaño indicado, se crea un primer árbol de codificación, lo cual genera los códigos en binario necesarios para escribir los caracteres en menos de 8 bits. Después se libera este buffer y se espera a que se vuelva a llenar para volver a contar la frecuencia de cada carácter y poder generar un nuevo árbol que genere una codificación diferente.

Lo que sucede es que conforme se van generando los caracteres se genera un árbol completamente nuevo con los códigos actualizados, y después de un cierto tiempo el árbol llega a ser completo e incluir todos los caracteres incluidos, y el diccionario para codificar y decodificar empieza a cambiar menos drásticamente que al inicio.

Código



La siguiente imagen es una ejecución del programa donde como parámetros se le dio 500 para el largo del texto que ira creando y usando un buffer de 5 caracteres.


Se puede ver que no todos los caracteres cambiaron de codificación en las dos últimas creaciones del nuevo árbol.

Y en la siguiente imagen vemos que el archivo con 500 caracteres a comparación con el binario creado por el programa es 4 veces más pequeño, por lo que comprobamos que el código no es el indicado para comprimir archivos de texto.


Sugerencia para mejorar el método


El método propuesto no es el indicado para ahorrar espacio en memoria como su objetivo lo propone, porque en realidad ocupa más espacio el estar almacenando los nuevos diccionarios cada que se genera el nuevo árbol, además de que el proceso de decodificación resultaría algo más complicado.

La sugerencia de mejora es no crear un árbol nuevo cada vez que se llena el buffer sino actualizar el anterior, evitando modificar la codificación para un carácter cuando la frecuencia no incrementa mucho en comparación con la anterior tabla.

1 comentario:

  1. No se requería que fuese un variante del algoritmo de Huffman ;) El reporte pudiera sido un poco más completo. 5+4.

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.