Eu teria feito um comentário, pois isso diz respeito à resposta de Andrej Bauer neste tópico ; no entanto, acredito que vale a pena fazer uma pergunta.
Andrej explica que, dado o conjunto de todas as seqüências de bits de comprimento 3 ou menos, uma função de compactação sem perdas pode apenas "compactar" algumas delas. Os outros, por exemplo, "01" precisariam ser compactados para uma sequência como "0001", com comprimento 4. A taxa de compactação é simplesmente a compactação média no conjunto de entrada.
Isso faz com que a compactação sem perdas pareça impraticável, mas a citação importante é a seguinte:
As cadeias de bits que ocorrem na prática estão longe de serem aleatórias e exibem muita regularidade.
É difícil acreditar que, por exemplo, os arquivos multimídia sejam representados por qualquer coisa que não sejam cadeias de bits aleatórias. Existe realmente um padrão que as funções de compactação utilizam para tornar o algoritmo útil na realidade?
fonte
Respostas:
Antes de tudo, você está certo: os arquivos multimídia são representados (mais ou menos) como arquivos aleatórios. A razão para isso é que esses arquivos já estão compactados (com perdas). Observe que o mp3, por exemplo, não passa de um algoritmo de compressão!
Uma conseqüência é que a compactação adicional não produzirá nenhuma compactação perceptível (e, de fato, a compactação sem perdas em arquivos já compactados (multimídia) nunca foi um caminho para o sucesso).
Você também tem razão: a compactação sem perdas não pode ser comprimida em média. Para ver que, digamos, seu conjunto de dados possível consiste em elementos diferentes. Quantos bits você precisa por arquivo para poder sempre distinguir elementos do seu conjunto? Certo, . No total, todos os arquivos serão representados por nada menos que bits. Agora, se você representar alguns desses arquivos por menos de bits, alguns arquivos serão representados por mais de bits. É tudo o que há para dizer.2n n n⋅2n n n
Em resumo, a compactação sem perdas funciona porque os arquivos de texto estão longe de serem aleatórios (considere a distribuição das letras da minha resposta e compare o número de e 's com o número de z 's!) E comprima dados aleatórios (por exemplo, dados já compactados ou dados criptografados) não faz nenhum sentido.
fonte
Os dados multimídia estão muito longe de serem aleatórios, e é por isso que os compactam tão bem. Por exemplo, um único segundo de vídeo com resolução de 1920x1080 pixels, com cores de 24 bits e 24 quadros por segundo, representa cerca de 150 MB de dados descompactados. Os arquivos multimídia já foram compactados, por isso é difícil compactá-los ainda mais.
No entanto, mesmo dados multimídia não compactados provavelmente parecerão bem aleatórios se você considerar apenas um fluxo de zeros e uns. (Dito isso, os GIFs são compactados usando o LZW, tratando-os essencialmente como um fluxo de bits; que funciona decentemente bem.) Quando você olha para os dados de multimídia sabendo o que isso significa, há muita estrutura.
Mencionei JPEG e MPEG, que são, obviamente, com perdas. Mas suspeito que você possa usar essas idéias, em princípio, para produzir boas taxas de compactação sem perda desses dados não aleatórios. Duvido que alguém tente fazer isso, no entanto, já que o tempo necessário para comprimir seria provavelmente incrivelmente grande.
fonte
Sim, a compactação sem perdas aproveita o fato de muitos arquivos não serem aleatórios. Sim, a maioria dos arquivos multimídia não é aleatória.
As imagens de fax são um bom exemplo desse efeito. Em sua forma mais simples, uma imagem de fax é uma imagem em preto-e-branco em 2-D, obtida pela digitalização de uma única página de algum documento. Se você representar esta imagem como uma sequência de bits, um bit por pixel (0 = branco, 1 = preto), descobrirá que os dados binários resultantes não são de todo aleatórios. Por exemplo, aqui estão alguns padrões não aleatórios que você encontrará:
Normalmente, as imagens de fax têm muito mais pixels brancos do que pixels pretos.
Além disso, é mais provável que cada pixel tenha a mesma cor do pixel à esquerda do que uma cor diferente.
Para um padrão mais sofisticado: imagine digitalizar pixels horizontalmente, da esquerda para a direita, e contando o comprimento de cada "execução" de pixels consecutivos da mesma cor. Em seguida, execuções longas são mais comuns que execuções curtas, e execuções longas de pixels brancos são mais comuns que execuções longas de pixels pretos.
Os algoritmos de compactação de fax foram projetados para aproveitar esses aspectos não aleatórios. Os algoritmos iniciais de compactação de fax são um exemplo particularmente bom, porque são esquemas simples de compactação sem perdas que exploram diretamente essas propriedades não aleatórias das imagens digitalizadas.
Por exemplo, um esquema anterior para compactar imagens de fax usava a codificação de execução combinada com a codificação Huffman . A codificação de duração da execução substitui cada execução de pixels da mesma cor por um único número inteiro contando a duração da execução. Por exemplo, 00000110001 se torna "5 2 3 1". A codificação de execução explora o fato de que os pixels tendem a ocorrer em execuções da mesma cor. A codificação Huffman explora ainda mais o fato de que algumas durações são mais comuns que outras. Veja aqui um exemplo detalhado de como um desses primeiros esquemas funcionou - o esquema é simples e elegante e explora diretamente os padrões mencionados acima.
Esses esquemas não oferecem compactação, em média, para arquivos aleatórios. No entanto, as imagens de fax digitalizadas não são aleatórias e, como resultado, esses esquemas de compactação podem oferecer economias substanciais.
Comentários semelhantes se aplicam a outros arquivos multimídia. Os padrões presentes em outros tipos de arquivos multimídia podem ser mais complexos, mas ainda existem muitos padrões que tornam os dados não aleatórios.
fonte
Um arquivo de áudio aleatório constitui um tipo de ruído. A maioria das pessoas armazena arquivos de áudio com música ou fala, sem ruído.
fonte