El requisito de que la codificación esté libre de prefijos da como resultado árboles grandes debido a que el árbol debe estar completo. ¿Existe un umbral en el que el almacenamiento no codificado de datos de longitud fija sería más eficiente que codificar los datos?
9
Respuestas:
La entropía
H(A)
para este problema es1.998
. Tanto la codificación de Huffman como la codificación de longitud fija para este problema tienen una longitud de palabra de código promedio como2
. Y para tu información, la codificación que tienes usando Huffman Encoding es incorrecta. Huffman Encoding también produce códigos similares a la longitud fija para este problema. Utiliza un enfoque codicioso. Entoncesa
, no obtiene un código como,0
sino que lo obtiene00
. Vuelva a trabajar en el árbol que genere usando Huffman Coding. El árbol que debes obtener es:fuente
Introduction to Algorithms
porCLRS
. En el capítulo que habla sobregreedy algorithms
usted puede obtener la prueba formal deHuffman algorithm
. Es una prueba larga y necesita paciencia para leer.La codificación de Huffman se aproxima a la distribución de la población con potencias de dos probabilidades. Si la distribución verdadera consiste en potencias de dos probabilidades (y los símbolos de entrada no están correlacionados), la codificación de Huffman es óptima. Si no, puede hacerlo mejor con la codificación de rango. Sin embargo, es óptimo entre todas las codificaciones que asignan conjuntos específicos de bits a símbolos específicos en la entrada.
fuente
Sí, siempre es óptimo.
No, no hay un umbral en el que usaría menos espacio para usar datos no codificados de longitud fija.
Encontré varias pruebas en la Web, pero hay suficiente discusión en el artículo de Wikipedia Codificación Huffman .
Esto también cubre otras técnicas que logran una mayor compresión (trabajar fuera del espacio para el cual el código Huffman es óptimo).
fuente