Codificación de entropía


En la teoría de la información , una codificación de entropía (o codificación de entropía ) es un esquema de compresión de datos sin pérdidas que es independiente de las características específicas del medio.

Uno de los principales tipos de codificación de entropía crea y asigna un código único sin prefijo a cada símbolo único que aparece en la entrada. [1] Estos codificadores de entropía luego comprimen los datos reemplazando cada símbolo de entrada de longitud fija con la correspondiente palabra clave de salida sin prefijo de longitud variable. La longitud de cada palabra de código es aproximadamente proporcional al logaritmo negativo de la probabilidad de aparición de esa palabra de código. Por lo tanto, los símbolos más comunes usan los códigos más cortos. [2]

De acuerdo con el teorema de codificación fuente de Shannon , la longitud de código óptima para un símbolo es , donde es el número de símbolos utilizados para generar códigos de salida y es la probabilidad del símbolo de entrada.

Dos de las técnicas de codificación de entropía más comunes son la codificación de Huffman y la codificación aritmética . [3] Si las características de entropía aproximadas de un flujo de datos se conocen de antemano (especialmente para la compresión de señales ), un código estático más simple puede ser útil. Estos códigos estáticos incluyen códigos universales (como la codificación gamma de Elias o la codificación de Fibonacci ) y códigos de Golomb (como la codificación unaria o la codificación de Rice ).

Desde 2014, los compresores de datos han comenzado a utilizar la familia de técnicas de codificación de entropía de los sistemas numéricos asimétricos , que permite combinar la relación de compresión de la codificación aritmética con un costo de procesamiento similar a la codificación de Huffman .

Además de usar la codificación de entropía como una forma de comprimir datos digitales, un codificador de entropía también se puede usar para medir la cantidad de similitud entre flujos de datos y clases de datos ya existentes. Esto se hace generando un codificador/compresor de entropía para cada clase de datos; Luego, los datos desconocidos se clasifican alimentando los datos sin comprimir a cada compresor y viendo qué compresor produce la compresión más alta. El codificador con la mejor compresión es probablemente el codificador entrenado en los datos que eran más similares a los datos desconocidos.