Huffman Tree Compressor
Este fue un proyecto de la universidad de la materia algoritmos y estructura de datos. La idea es desarrollar un programa en c++ que logre exitosamente comprimir y descomprimir un archivo sin pérdidas de información. Mi intención al presentar este proyecto es demostrar mis capacidades en la algoritmia.
Tecnologías implementadas
- C++
Proceso y desafíos
Librería para leer/escribir bits: para ello tuve que desarmar cada carácter utilizando los operadores cuya utilidad es moverse. Para escribir bits, hice un array donde se escribía 1s y 0s, y cuando llegaba a la cantidad de 8 lo convertía a un ASCII usando el típico algoritmo de decimal a binario (sumatoria de 2 elevado a esa n posición).
Recorrer el archivo: durante la cursada desarrollamos una librería que leía/escribía archivos utilizando fread y fwrite de c++ nativo (stdio.h)..
Guardar los bits en un array con su cantidad de ocurrencias, luego ordenar según cantidad.
Crear árbol.
Escribir encabezado para poder reconstruir el árbol.
A medida que se lee el archivo nuevamente, hay que ir generando cada clave de cada carácter con el árbol y en escribirlo en otro archivo..
Para descomprimir: reconstruir árbol leyendo el encabezado.
Leyendo el contenido, descifrar de qué carácter se trata buscando en el árbol Huffman.
Escribir archivo descifrado.
Conclusión y mejoras a futuro
Me gustaría en un futuro subir este proyecto a una lambda function y hacer un pequeño sitio para hacer uso de este algoritmo.