rbol de Huffman generado para las frecuencias de apariciones exactas del texto "Esto es un ejemplo de rbol de Huffman". las frecuencias y cdigos de cada carcter se muestran abajo. Codificar esta frase usando este cdigo requiere 156 bits, sin contar con el espacio para el rbol. Carcter Frecuencia Cdigo Espacio 8 00 E 6 100 N 3 1100 O 3 1110 U 2 0100 A 2 0101 D 2 1010 F 2 1011 L 2 0110 M 2 0111 S 2 11010 B 1 110110 H 1 110111 J 1 111100 P 1 111101 R 1 111110 T 1 111111
En ciencias de la computacin y teora de la informacin, la codificacin Huffman es un algoritmo usado para compresin de datos. El trmino se refiere al uso de una tabla de cdigos de longitud variable para codificar un determinado smbolo (como puede ser un carcter en un archivo), donde la tabla ha sido rellenada de una manera especfica basndose en la probabilidad estimada de aparicin de cada posible valor de dicho smbolo. Fue desarrollado por David A. Huffman mientras era estudiante de doctorado en el MIT, y publicado en "A Method for the Construction of Minimum-Redundancy Codes".
La codificacin Huffman usa un mtodo especfico para elegir la representacin de cada smbolo, que da lugar a un cdigo prefijo (es decir, la cadena de bits que representa a un smbolo en particular nunca es prefijo de la cadena de bits de un smbolo distinto) que representa los caracteres ms comunes usando las cadenas de bits ms cortas, y viceversa. Huffman fue capaz de disear el mtodo de compresin ms eficiente de este tipo: ninguna representacin alternativa de un conjunto de smbolos de entrada produce una salida media ms pequea cuando las frecuencias de los smbolos coinciden con las usadas para crear el cdigo. Posteriormente se encontr un mtodo para llevar esto a cabo en un tiempo lineal si las probabilidades de los smbolos de entrada (tambin conocidas como "pesos") estn ordenadas.
Para un grupo de smbolos con una distribucin de probabilidad uniforme y un nmero de miembros que es potencia de dos, la codificacin Huffman es equivalente a una codificacin en bloque binaria, por ejemplo, la codificacin ASCII. La codificacin Huffman es un mtodo para crear cdigos prefijo tan extendido que el trmino "codificacin Huffman" es ampliamente usado como sinnimo de "cdigo prefijo", incluso cuando dicho cdigo no se ha producido con el algoritmo de Huffman.
Aunque la codificacin de Huffman es ptima para una codificacin smbolo a smbolo dada una distribucin de probabilidad, su optimalidad a veces puede verse accidentalmente exagerada. Por ejemplo, la codificacin aritmtica y la codificacin LZW normalmente ofrecen mayor capacidad de compresin. Estos dos mtodos pueden agrupar un nmero arbitrario de smbolos para una codificacin ms eficiente, y en general se adaptan a las estadsticas de entrada reales. Este ltimo es til cuando las probabilidades no se conocen de forma precisa o varan significativamente dentro del flujo de datos.