A codificação de Huffman é sempre ideal, pois usa as idéias de Shanon? E quanto a texto, imagem, vídeo, ... compressão?
Esse assunto ainda está ativo no campo? Que referências clássicas ou modernas devo ler?
A codificação de Huffman é sempre ideal, pois usa as idéias de Shanon? E quanto a texto, imagem, vídeo, ... compressão?
Esse assunto ainda está ativo no campo? Que referências clássicas ou modernas devo ler?
Respostas:
A codificação de Huffman é ideal para uma codificação de símbolo a símbolo, onde as probabilidades de cada símbolo são independentes e conhecidas de antemão. No entanto, quando essas condições não são satisfeitas (como na imagem, vídeo), outras técnicas de codificação, como LZW, JPEG, etc. são usadas. Para mais detalhes, você pode ler o livro "Introdução à compactação de dados", de Khalid Sayood.
Existe uma versão do algoritmo Lempel-Ziv que é ideal em alguns cenários. Nomeadamente, se a entrada vier de uma cadeia ergódica de Markov, a taxa assintótica do algoritmo Lempel-Ziv será igual à entropia. Para saber mais, dê uma olhada no Capítulo 13 de Cover e Thomas.
A compactação de Huffman, com certas suposições que geralmente não se aplicam a arquivos reais, pode ser provada como ideal.
Vários algoritmos de compactação compactam alguns tipos de arquivos menores que o algoritmo de Huffman , portanto, Huffman não é o ideal. Esses algoritmos exploram uma ou outra das advertências na prova de otimização de Huffman.
Sempre que temos (a) codificamos cada símbolo independentemente em um número inteiro de bits e (b) cada símbolo é "não relacionado" aos outros símbolos que transmitimos (nenhuma informação mútua, independente estatisticamente, etc.) e (c) o receptor conhece a distribuição de probabilidade de todos os símbolos possíveis, então a compactação de Huffman é ideal (produz os menores arquivos compactados).
(a) símbolo por símbolo: relaxando a restrição binária de Huffman de que cada símbolo de entrada deve ser codificado como um número inteiro de bits, vários algoritmos de compactação, como codificação de intervalo, nunca são piores do que o padrão de Huffman .
(b) símbolos não relacionados: a maioria dos arquivos de dados reais possui algumas informações mútuas entre os símbolos. Pode-se fazer melhor do que simples Huffman "correlacionando" os símbolos e, em seguida, usando o algoritmo Huffman nesses símbolos correlacionados.
(c) distribuição de probabilidade conhecida: Normalmente, o receptor não sabe a distribuição exata de probabilidade. Os algoritmos de compactação típicos de Huffman enviam uma tabela de frequência primeiro e depois os dados compactados. Vários algoritmos de compactação "adaptáveis", como a codificação em árvore Polar, podem obter melhor compactação do que Huffman, porque convergem na distribuição de probabilidade ou se adaptam a uma distribuição de probabilidade variável, sem nunca enviar explicitamente uma tabela de frequências.
Livros e documentos discutindo essa compressão melhor do que Huffman:
A taxa ótima de compactação está relacionada à entropia dos dados.
No artigo da Wikipedia http://en.wikipedia.org/wiki/Shannon%27s_source_coding_theorem :
As variáveis aleatórias do zero, cada uma com entropia H (X), podem ser compactadas em mais de bits NH (X) com risco insignificante de perda de informações, pois N tende ao infinito; por outro lado, se forem compactados em menos de bits NH (X), é praticamente certo que as informações serão perdidas.