Proyecto de formación

Compresor de Huffman

Comprimir con un árbol y volver al mismo texto

Una aplicación de escritorio que comprime texto con codificación de Huffman, dibuja el árbol con Graphviz y devuelve el archivo idéntico al descomprimir.

De qué se trata

Uno de los proyectos de Arquitectura de hardware fue un compresor de datos. DataCompressor implementa la codificación de Huffman en Python, con una interfaz de escritorio en PyQt5 y el árbol de cada archivo dibujado con Graphviz.

El formato .slo guarda el árbol junto a los datos codificados, así que el mismo programa descomprime sin otra información y el resultado coincide byte a byte con el original.

Qué hace

  • Una ventana en PyQt5 donde se suelta un archivo .txt para comprimirlo o un .slo para descomprimirlo.
  • Cuenta la frecuencia de cada carácter, arma el árbol de Huffman, genera los códigos y escribe el resultado en binario con el árbol dentro del archivo.
  • Dibuja el árbol de cada archivo con Graphviz, y un instalador incluye los binarios de Graphviz y los agrega al PATH.
  • Con un texto de 3.215.616 bytes, el .slo pesa 1.712.850 (53,3 %) y al descomprimirlo vuelve idéntico al original.
  • El repositorio de la materia también tiene prácticas en ESP32 con MicroPython, simulaciones en Wokwi y ensamblador ARM en QtARMSim.

Decisiones y sus costos

  1. Guardar el árbol dentro del archivo

    Sin el árbol no hay forma de leer los códigos.

  2. Compararlo con 7-Zip y RAR

    Huffman solo acorta los caracteres frecuentes, y eso no se ve sin un punto de comparación.

Repositorios

Cada repositorio público del proyecto, con lo que contiene.

  • 2024

    ARQHEngineeringSebastian-s

    Arquitectura de hardware, con un compresor de Huffman, ensamblador ARM en QtARMSim y un ESP32 en Wokwi con MicroPython y un bot de Telegram.

    Python, MicroPython, ARM Assembly, ESP32
Organización en GitHub: EngineeringSebastian-s

Stack

Elige una tecnología para ver qué proyectos la usan.