For faster navigation, this Iframe is preloading the Wikiwand page for DEFLATE.

DEFLATE

O algoritmo de Phil Katz conhecido como DEFLATE é uma combinação de diversas tecnologias de compressão de dados usada nos arquivos do padrão ZIP e PKZIP

A base do algoritmo é uma compressão usando LZ77 com janela deslizante de 32KB e um buffer de look-ahead de 258 bytes, e a saída deste passo é codificada usando-se codificação de Huffman. O arquivo é dividido em blocos de tamanho arbitrário e a divisão entre os blocos é feita quando o codificador identifica a necessidade de se construir um novo bloco com árvores Huffman diferenciadas. Duas árvores Huffman são usadas, uma para codificar os caracteres literais e o comprimento das cadeias encontradas pelo LZ77 e outra árvore para codificar as distancias entre as cadeias e a posição atual.[1] As árvores são armazenadas no início de cada bloco comprimido.

A identificação de padrões é feita usando-se uma tabela de espalhamento que armazena todos os padrões de tamanho igual ou maior a 3 bytes encontrados, agrupados pelos seus primeiros 3 bytes. Cada padrão do grupo que inicia com os 3 bytes iniciais do buffer de look-ahead é comparado com a sequencia atualmente no buffer para se determinar a maior sequência de casamento. Para evitar o pior caso onde uma busca sequência é feita num único grupo da tabela de espalhamento, as listas encadeadas que armazenam os grupos podem ser truncadas de acordo com as opções definidas no início da execução do algoritmo. Assim o DEFLATE não garante encontrar a melhor sequencia, mas sim uma sequencia razoavelmente longa.

Além disso o algoritmo acrescenta um mecanismo de casamento de padrões deferido com um método "guloso" de avaliação (greedy evaluation): Caso a sequencia encontrada seja muito curta, o DEFLATE tenta casar a próxima sequencia (que começa no segundo byte do buffer) e ver se esta gera uma sequencia melhor. Caso consiga esta sequencia melhor, uma sequencia de tamanho 1 é emitida para o primeiro byte, e a sequencia melhor é usada a partir do segundo byte. O tamanho necessário para se evitar essa avaliação "gulosa" é definida por parâmetros de execução, privilegiando seja a compressão (tamanho menor), seja a velocidade (tamanho maior).

O algoritmo DEFLATE é usado nos utilitários que comprimem ou descomprimem arquivos no padrão ZIP ou no padrão gzip. O formato ZIP se tornou popular através do programa PKZIP, e é hoje usado na maioria dos programas de compressão de dados. Esse algoritmo também é usado para comprimir imagens no formato PNG.

Notas e referências

[editar | editar código-fonte]
  1. Ver LZ77 para mais detalhes sobre a determinação das cadeias e das distâncias.
  • (em inglês) SALOMON, David (2000). Data Compression. The Complete Reference 2 ed. Nova Iorque: Springer. ISBN 0-387-95045-1 
{{bottomLinkPreText}} {{bottomLinkText}}
DEFLATE
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?