Eu estava lendo sobre algoritmos de compactação de dados e o limite teórico para compactação de dados. Recentemente, encontrei um método de compressão chamado "Combinatorial Entropy Encoding", a idéia principal desse método é codificar o arquivo como os caracteres apresentados no arquivo, suas frequências e o índice de permutação de caracteres representado pelo arquivo.
Estes documentos podem ajudar a explicar este método:
https://arxiv.org/pdf/1703.08127
http://www-video.eecs.berkeley.edu/papers/vdai/dcc2003.pdf
https://www.thinkmind.org/download.php?articleid=ctrq_2014_2_10_70019
No entanto, no primeiro documento, eu li que, usando esse método, eles podiam compactar algum texto para menos do que o limite de Shannon (eles não consideravam o espaço necessário para salvar a frequência dos caracteres e o espaço necessário para salvar a meta dados do arquivo). Pensei nisso e descobri que esse método não seria muito eficiente para arquivos muito pequenos, mas, por outro lado, pode funcionar bem com arquivos grandes. Na verdade, eu não entendo muito bem esse algoritmo ou o limite de Shannon, apenas sei que é a soma da probabilidade de cada caractere multiplicada pelo do inverso da probabilidade.
Então, eu tenho algumas perguntas:
Esse método de compactação realmente comprime os arquivos para menores que o limite de Shannon?
Existe algum algoritmo de compactação que compacta arquivos para menos do que o limite de Shannon (a resposta a esta pergunta, até onde eu sei, não é)?
Um método de compactação que comprime arquivos para um tamanho menor que o limite de Shannon já existe?
Se a codificação combinatória realmente comprime arquivos além do limite de Shannon, não é possível comprimir o arquivo repetidamente até atingirmos o tamanho desejado?
Respostas:
Aqui reside o ponto crucial. O limite de Shannon não é uma propriedade universal de uma sequência de texto. É a propriedade de uma sequência de texto mais um modelo que fornece probabilidades (possivelmente dependentes do contexto) de símbolos. Ele nos diz o quão bem esse modelo pode compactar o texto, assumindo que o modelo seja preciso .
Se você usar um modelo para calcular o limite de Shannon e, em seguida, um modelo diferente para compactar, se o segundo modelo for mais preciso, poderá superar o limite de Shannon original que você calculou, mas isso não é realmente relevante.
fonte
É trivialmente simples mostrar que você pode compactar abaixo do limite de Shannon - use um compressor trapaceiro que possui vários arquivos comuns atribuídos aos tokens. Esses arquivos são armazenados como esses tokens. (Obviamente, o compressor deve ser muito grande ou usar uma biblioteca muito grande.)
No entanto, o compressor será menos eficiente ao lidar com qualquer arquivo que não esteja na sua biblioteca, pois deve, de alguma forma, distinguir um token de uma compactação normal.
O que você não pode fazer é ter um compressor que ultrapasse o limite de Shannon em todos os arquivos .
fonte
Mas se você aplicar outro modelo, obterá outra sequência de probabilidades. Fe a letra "u" é bastante rara, então sua probabilidade sobre o texto inteiro pode ser de 3%, e é a probabilidade que você precisa atribuir a esta carta usando um modelo Markov de ordem 0 .
Porém, em textos em inglês, depois que "q" geralmente vem com "u", portanto, usando um modelo de ordem 1, é possível atribuir uma probabilidade muito maior a "u" após "q", melhorando assim a taxa de compactação.
Além disso, alguns modelos emitem menos símbolos do que os de entrada; o fe LZ77 substitui as repetições de texto por referências posteriores, de modo que "abababab" se transforma em "ab [2,8]".
Quando alguém fala sobre a entropia de Shannon de alguns dados em vez de dados compactados por um modelo específico, ela geralmente significa a entropia de Shannon produzida por um modelo de ordem 0, ou seja, atribuindo a cada símbolo sua probabilidade sobre o texto inteiro. Obviamente, você pode superar essa margem aplicando um modelo mais sofisticado aos dados.
fonte
Outra possível interpretação do texto: o algoritmo de compactação fornecido fornecerá melhor compactação de alguns textos e pior compactação em outros. No entanto, os usuários geralmente se preocupam com alguns tipos de arquivos (páginas HTML em inglês, código de máquina 80386) mais do que outros (tabelas de números verdadeiramente aleatórios, ruído sem sentido selecionado para minimizar a repetição). Qualquer esquema de compactação será melhor na compactação de dados do mundo real com pior do que inútil na compactação de outros tipos de strings.
fonte