O requisito da codificação como livre de prefixo resulta em árvores grandes, pois a árvore precisa estar completa. Existe um limite em que o armazenamento de dados não codificado de comprimento fixo seja mais eficiente do que codificar os dados?
9
Respostas:
A entropia
H(A)
para esse problema é1.998
. Tanto a codificação Huffman quanto a codificação de comprimento fixo para esse problema têm um comprimento médio de palavra de código como2
. E para sua informação, a codificação que você obteve usando a Huffman Encoding está errada. A codificação Huffman também produz códigos semelhantes ao comprimento fixo para esse problema. Ele usa uma abordagem gananciosa. Portantoa
, não recebe um código,0
mas recebe00
. Retrabalhe a árvore que você gera usando a Huffman Coding. A árvore que você deve obter é:fonte
Introduction to Algorithms
porCLRS
. No capítulo em quegreedy algorithms
você fala, você pode obter a prova formalHuffman algorithm
. É uma prova longa e precisa de paciência para ler.A codificação de Huffman aproxima a distribuição da população com potências de duas probabilidades. Se a distribuição verdadeira consistir em potências de duas probabilidades (e os símbolos de entrada não estiverem correlacionados completamente), a codificação de Huffman é ideal. Caso contrário, você pode fazer melhor com a codificação de alcance. No entanto, é ideal entre todas as codificações que atribuem conjuntos específicos de bits a símbolos específicos na entrada.
fonte
Sim, é sempre ideal.
Não, não há limite em que ele usaria menos espaço para usar dados não codificados de comprimento fixo.
Encontrei várias provas na Web, mas há uma discussão suficiente no artigo da Wikipedia sobre codificação Huffman .
Isso também abrange outras técnicas que alcançam maior compactação (trabalhando fora do espaço para o qual o código Huffman é ideal).
fonte