Compresión de datos eficiente mediante códigos binarios en Java
Este proyecto implementa el algoritmo de codificación de Huffman, una técnica de compresión sin pérdida, junto con funciones de codificación y descifrado basadas en árboles binarios.
Fuente: Wikipedia - Huffman coding
La codificación de Huffman es un algoritmo de compresión que asigna códigos de longitud variable a símbolos, siendo más cortos para los símbolos más frecuentes. Así se consigue reducir el tamaño de los datos sin perder información.
- 📅 Desarrollado en 1952 por David A. Huffman como parte de un trabajo académico en el MIT.
- Es una técnica base en formatos como ZIP, MP3, JPEG y muchos otros.
- Huffman inventó su algoritmo como alternativa a la codificación de Shannon-Fano… ¡y resultó ser más eficiente!
- Es el algoritmo de compresión sin pérdida más usado en la historia de la informática.
- A partir de una cadena y sus frecuencias, se construye un árbol binario donde los nodos más frecuentes están más cerca de la raíz.
- Se recorren los caminos del árbol (izquierda = 0, derecha = 1) y se asignan códigos binarios únicos a cada símbolo.
- Devuelve la asignación de símbolos a códigos.
- Recibe una cadena de bits y el árbol de Huffman.
- Atraviesa el árbol según cada bit hasta llegar a un nodo hoja.
- Genera el símbolo original. Repite hasta procesar todos los bits.
# Clona este repositorio
git clone https://github.com/tuusuario/HuffmanCoding.git
cd HuffmanCoding
# Compila el proyecto
make compilar
# Ejecuta el programa
make ejecutar
- 📚 Explicación visual interactiva – VisuAlgo
- 🎥 Video: Huffman Coding Explained – Computerphile
- 🧠 Artículo sobre David A. Huffman – MIT
Desarrollado por Marta Canino Romero
@martacanirome4 – GitHub 2023