Os programas de compactação de arquivos reduzem o tamanho dos arquivos usando vários algoritmos para remover redundância e representar os dados com mais eficiência. Na verdade, eles não "excluem" informações; Em vez disso, eles encontram maneiras inteligentes de codificá -lo usando menos bits. Existem duas categorias principais:compressão sem perdas e com perdas.
1. Compressão sem perdas: Esse tipo de compactação garante que o arquivo original possa ser perfeitamente reconstruído a partir da versão compactada. É usado para arquivos de texto, código -fonte, planilhas e outros dados em que até um pouco de perda de informações é inaceitável. Técnicas comuns incluem:
*
codificação de comprimento de execução (rle): Esse método simples substitui caracteres repetidos consecutivos ou bytes por uma única instância do caractere e o número de vezes que ele se repete. Por exemplo, "AAABBBCC" se torna "3A3B2C". É muito eficaz para dados com corridas longas de valores idênticos.
*
Codificação de Huffman: Isso atribui códigos mais curtos a símbolos que ocorrem frequentemente e códigos mais longos a outros menos frequentes. Ao explorar a distribuição de probabilidade de símbolos nos dados, ele atinge compressão significativa. Por exemplo, no texto em inglês, a letra "E" é muito comum, por isso receberia um código curto, enquanto cartas menos frequentes como "Z" receberiam códigos mais longos.
*
algoritmos Lempel-Ziv (LZ): Esses são métodos mais sofisticados que identificam padrões de repetição dentro dos dados. Em vez de codificar cada símbolo individualmente, eles criam um dicionário de padrões recorrentes e os codificam com referências curtas. As variações comuns incluem LZ77, LZ78 e LZW (Lempel-Ziv-Welch), este último sendo usado no formato da imagem GIF. O dicionário é normalmente construído dinamicamente, pois os dados são compactados e descompactados.
*
Compressão baseada no dicionário: Esses métodos (incluindo algoritmos LZ) criam um dicionário de seqüências de repetição e os substituem por códigos curtos. Eles funcionam bem em dados que contêm muitas repetições.
*
Burrows-Wheeler Transform (BWT): Essa técnica reordessa os dados para agrupar caracteres semelhantes, facilitando a função de outros métodos de compressão. É frequentemente usado em conjunto com outros algoritmos, como transformação de movimentação para frente e codificação de comprimento de corrida.
2. Compressão com perdas: Esse tipo de compressão atinge taxas de compressão mais altas descartando alguns dados considerados menos importantes. Isso é aceitável para dados multimídia (imagens, áudio, vídeo), onde alguma perda de fidelidade é tolerável. Exemplos incluem:
*
jpeg (imagens): Usa a transformação discreta de cosseno (DCT) para reduzir a quantidade de dados necessários para representar uma imagem. Ele descarta algumas informações de alta frequência, que são menos visíveis ao olho humano.
*
mp3 (áudio): Usa a modelagem psicoacústica para descartar as frequências mascaradas por sons mais altos. Isso permite uma redução significativa no tamanho do arquivo sem uma grande perda percebida na qualidade do áudio.
*
mpeg (vídeo): Usa técnicas como compensação de movimento para codificar apenas alterações entre os quadros, reduzindo significativamente a redundância.
em resumo: Os programas de compactação de arquivos usam uma combinação de algoritmos para identificar e explorar redundâncias nos dados. Os métodos sem perdas garantem a reconstrução perfeita, enquanto os métodos de perdas sacrificam alguns dados por maiores índices de compressão. A escolha do algoritmo depende do tipo de dados que está sendo compactado e do nível aceitável de perda de dados. Muitos programas de compressão modernos usam uma combinação dessas técnicas para otimizar a eficiência da compressão.