Visualizador de Codificación Huffman
Introduce un texto para ver cómo la codificación Huffman asigna códigos más cortos a los caracteres frecuentes.
Optimal Prefix-Free Entropy Encoding 🖖
Huffman encoding optimizes data compression by dynamically constructing a binary tree based on the statistical frequency of input symbols. It assigns mathematically shorter bit sequences to highly probable characters, achieving the theoretical limit of Shannon entropy. The strict requirement of prefix-free codes guarantees unambiguous algorithmic decoding. This deterministic reallocation of binary weight mathematically minimizes the total file size without any loss of data.
Combinar siempre los dos menos frecuentes 🖖
El árbol crece de abajo hacia arriba: primero se enumera cada carácter según su frecuencia y luego se unen repetidamente los dos elementos menos frecuentes en un pequeño subárbol, tratándolo como un solo paquete. Se repite hasta que queda un único árbol; después cada código se lee bajando desde la cima: la izquierda es 0, la derecha es 1. Esta costumbre "voraz" de unir siempre los dos más pequeños parece miope, pero demostrablemente produce los códigos más cortos posibles.
Un trabajo que superó al profesor 🖖
David Huffman lo ideó en 1951 siendo estudiante de posgrado en el MIT, cuando el profesor Robert Fano ofreció a la clase elegir entre un examen final y un trabajo sobre cómo hallar el código más eficiente. Fano y Claude Shannon ya lo habían intentado, construyendo sus árboles de arriba hacia abajo. Huffman casi se rinde, pero comprendió que construir de abajo hacia arriba —fusionando primero los símbolos más raros— era óptimo, superando el método de su propio maestro.
Problemas de ejemplo
- hello world - "hello world" → ahorro de ~30%
- mississippi - "mississippi": alta redundancia
- uniforme - "abcdef": distribución uniforme, ahorro mínimo
- un solo carácter - "aaaaaaaaaa": caso trivial de un solo símbolo