Arquivos grandes são compactados e descomprimidos usando uma variedade de algoritmos e técnicas, geralmente empregando uma combinação de métodos para obter melhores resultados. O princípio do núcleo é identificar e remover redundância nos dados, representando -os em um formulário mais compacto. Aqui está um colapso:
Técnicas de compactação: *
Compressão sem perdas: Esse tipo de compressão garante a reconstrução perfeita dos dados originais após a descompressão. É crucial para arquivos onde até um pouquinho de perda de dados é inaceitável (por exemplo, documentos de texto, código -fonte, planilhas). Os métodos comuns incluem:
*
compressão baseada no dicionário (LZ77, LZ78, LZW): Esses algoritmos identificam sequências repetidas de bytes (ou caracteres) dentro dos dados e os substituem por referências mais curtas. Pense nisso como criar um dicionário de frases comuns e usar códigos para representá -los. Os exemplos incluem GZIP e ZIP (que geralmente usam uma combinação de métodos).
*
Codificação de Huffman: Esse método estatístico atribui códigos mais curtos a símbolos mais frequentes (bytes ou caracteres) e códigos mais longos a outros menos frequentes. É muito eficaz para arquivos de texto em que certos caracteres aparecem com muito mais frequência do que outros.
*
codificação aritmética: Semelhante à codificação do Huffman, mas, em vez de atribuir códigos de comprimento fixo, atribui códigos fracionários, levando a índices de compressão um pouco melhores.
*
Burrows-Wheeler Transform (BWT): Essa técnica reorganiza os dados para melhorar a eficácia de outros métodos de compressão, como a codificação de comprimento de execução (RLE). É frequentemente usado em conjunto com a transformação de movimentação (MTF) e codificação de Huffman (como visto no BZIP2).
*
Mistura de contexto: Esta é uma técnica mais avançada, onde o algoritmo de compactação leva em consideração o contexto em torno de cada byte/caractere ao escolher um código. Isso ajuda a explorar redundâncias complexas que outros métodos podem perder.
*
Compressão com perda de perda: Esse tipo de compactação sacrifica alguns dados para obter maiores índices de compressão. É aceitável para dados em que uma pequena perda de qualidade é tolerável (por exemplo, imagens, áudio, vídeo). Os métodos comuns incluem:
*
jpeg (imagens): Usa a transformação discreta de cosseno (DCT) para reduzir a quantidade de dados necessários para representar uma imagem.
*
mp3 (áudio): Usa codificação perceptiva para remover sons que provavelmente serão mascarados por outros sons.
*
mpeg (vídeo): Utiliza várias técnicas, como compensação de movimento e DCT, para compactar o vídeo com eficiência.
O processo de compressão/descompressão: 1.
Análise: O compressor analisa os dados de entrada para identificar padrões e redundâncias. Esta análise é específica do algoritmo.
2.
transformação: Os dados são transformados com base no algoritmo escolhido. Isso pode envolver reorganizar bytes, criar dicionários ou aplicar transformações matemáticas.
3.
codificação: Os dados transformados são codificados em uma representação mais compacta usando códigos (códigos huffman, códigos aritméticos, etc.). Os metadados sobre o método de compressão utilizados são frequentemente incluídos.
4.
armazenamento/transmissão: Os dados compactados são armazenados em um arquivo ou transmitidos em uma rede.
5. Decodificação
: O descompressor recebe os dados compactados e reverte o processo de codificação.
6.
Transformação inversa: O descompressor aplica o inverso da transformação usada durante a compressão.
7. Reconstrução
: Para compactação sem perdas, os dados originais são perfeitamente reconstruídos. Para compressão com perdas, uma aproximação próxima dos dados originais é reconstruída.
Software e hardware: Várias ferramentas de software (como `gzip`,` zip`, `7-zip`,` bzip2`) e as bibliotecas implementam esses algoritmos. As CPUs modernas geralmente têm instruções que aceleram certas operações de compressão e hardware especializado (como co-processadores de compactação) podem acelerar significativamente o processo para arquivos muito grandes. Os provedores de armazenamento em nuvem também empregam técnicas de compressão otimizadas em escala.