Artigos

Como funciona a compressão de dados

quarta-feira, 4 de novembro de 2009 visualizações: 2.335

A compressão de dados é uma técnica amplamente utilizada em ambientes tecnológicos, sendo conhecida por praticamente qualquer pessoa que usufrui de um computador. Oriunda da necessidade do melhor aproveitamento de espaço possível em um meio de armazenamento, a técnica evoluiu consideravelmente no decorrer dos anos, alcançando patamares extremamente avançados e eficazes.

Basicamente, o objetivo de uma compressão consiste em representar um conjunto de informações em menor escala, possibilitando assim um melhor aproveitamento do espaço, e, conseqüentemente, maior eficácia em seu manuseio. Para tanto, a técnica faz uso dos chamados algoritmos de compressão, que nada mais são do que códigos de programação destinados a interpretar as variações existentes dentro dos dados, encontrando assim a melhor forma para reduzir a quantidade de bytes que apresentam.

De forma genérica, pode-se entender que a compressão de dados diminui a redundância de informações existentes no arquivo original. Mais do que apenas reduzir espaços em branco, a técnica encontra conjunto de bytes repetitivos e tenta representá-los com uma menor combinação de caracteres.

Apesar de que cada método utiliza formas específicas para diminuir a quantidade de bytes ao encontrar determinados dados redundantes, todos partem de pressupostos semelhantes.

Uso de dicionários

Uma das técnicas mais empregadas por algoritmos destinados à compressão de dados consiste na criação de um banco de informações semelhante a um dicionário. Para tanto, baseia-se em seqüências repetitivas encontradas dentro dos arquivos, com o intuito de substituí-las por símbolos que possam ocupar um menor espaço na estrutura. Esses conjuntos catalogados podem variar entre fragmentos de vocábulos, palavras ou ainda frases inteiras; tudo dependerá da freqüência com que são encontrados dentro do local analisado.

Ex. 1: Na compressão de um determinado texto, o algoritmo reconhece em vários locais a palavra “cadeira”. Então, é criado um glossário onde a palavra será associada a um determinado símbolo (tal como C1, por exemplo), o qual substituirá todas as ocorrências do conjunto de caracteres em questão.

Perceba que o método é válido apenas se a palavra for encontrada mais de uma vez dentro do texto. Isso porque a tabela que será criada para representar a associação também ocupará espaço dentro do arquivo comprimido. Veja o exemplo simbólico abaixo:

Texto original Tamanho Texto Comprimido Tamanho
1º caso cadeira 7 Bytes C1

C1=cadeira

12 Bytes
2º caso cadeira
cadeira
14 Bytes C1
C1

C1=cadeira

14 Bytes
3º caso cadeira
cadeira
cadeira
21 Bytes C1
C1
C1

C1=cadeira

16 Bytes

Obs.: No exemplo acima, foi considerado o fato de que, em um arquivo de texto simples (sem formatação), cada caractere ocupa 1 Byte (veja o artigo Unidades métricas de armazenamento em computadores). Mas, para melhor entendimento e fácil assimilação, foram desconsideradas as quebras de linha (as quais requisitam espaço assim como qualquer outro dígito).

Embora seja uma exemplificação metafórica, a mesma foi utilizada para simbolizar situações diferentes que ocorrem na tentativa de comprimir um determinado grupo de caracteres. O caso 1 demonstra uma circunstância onde a tentativa de compressão resultaria em um arquivo ainda maior que o original (situação que é extremamente comum com vários formatos de arquivos, principalmente os que já se encontram comprimidos). Somente no caso 3 os resultados realmente se apresentam satisfatórios.

Ex. 2: Supondo que, em um determinado texto, o algoritmo de compressão encontre somente uma ocorrência para a palavra “cadeira”. Mas dentro do mesmo arquivo também reconheça as palavras “caderno”, “caderneta” e “cadeia”. Partindo de uma análise em busca de seqüências repetitivas, ele poderá realizar com eficácia uma compressão, substituindo os caracteres “cade” por “C1”, que são comuns entre as palavras mencionadas (encontrados no início de cada uma delas). Teoricamente, o compressor estaria poupando 2 bytes em cada uma das ocorrências (não levando em consideração a tabela descritiva para associação da seqüência).

Substituições baseadas em estatísticas

Neste método científico, os compressores buscam caracteres que são encontrados com certa freqüência dentro do arquivo original, reorganizando os dados em um sistema hierárquico, algo semelhante ao que poderíamos chamar de “árvore binária”. Uma das técnicas mais empregadas sob essa abordagem é conhecida como “Codificação de Huffman”, que utiliza códigos de tamanho variável para representar os símbolos encontrados, através de um método probabilístico. Seqüências mais freqüentes recebem códigos menores, enquanto que as escassas são catalogadas com valores maiores.

O uso de uma árvore ordenada possibilita a manipulação de dados pelo algoritmo de forma muito eficiente em várias situações, através de varreduras realizadas recursivamente dentro da estrutura criada.

Transformações

Basicamente, o método de transformação não está diretamente relacionado à compressão de dados; ele existe para moldar determinado conteúdo, de forma que o mesmo seja posteriormente comprimido com melhor eficácia pelos respectivos algoritmos destinados a esse fim. Comumente é utilizado em compressões do tipo lossy, onde ocorre perda de dados na compactação (abordarei o assunto logo mais).

Supondo que haja uma folha de papel que possua algumas informações importantes, e é necessário que a mesma seja dobrada para ser colocada em um envelope. Sabemos que, após desdobrar um papel, sua qualidade não se apresentará da mesma forma que era encontrado antes do procedimento (por mais que o esticamos e alisamos, ele continuará apresentando marcas). Sabendo que a perda de qualidade é inevitável, o mínimo que se espera é de que o documento seja dobrado em locais estratégicos para preservar o máximo possível seu importante conteúdo, o qual deverá se apresentar perfeitamente legível após a abertura da folha (uma analogia à descompressão posterior). No comparativo, as transformações são justamente as técnicas necessárias para informar onde serão os melhores locais para realizar uma dobra, bem como a forma que deverá ser feita para não prejudicar o documento.

Compressão sem perda de dados (lossless compression)

Consiste em uma técnica que permite realizar os processos de compressão sem perda alguma dos dados originais. Ou seja, após a descompressão de um determinado arquivo, este se apresentará idêntico ao original.

Este método é extremamente útil quando o objetivo é preservar a integridade dos dados originais, onde qualquer modificação poderia acarretar em inconsistências não previstas (por exemplo: textos, banco de dados, planilhas, etc.).

Como exemplo de formatos que utilizam essa técnica, posso destacar os populares ZIP (WinZip), RAR (WinRAR), ACE (WinACE), 7Z (7-Zip) e ARJ. Vale lembrar que dezenas de outros formatos ainda podem ser encontrados, cada um com seu próprio algoritmo e respectivas formas de tratar uma compressão.

Compressão com perda de dados (lossy compression)

Embora seja mais eficiente que o método apresentado anteriormente, a compressão com perda de dados não é destinada a arquivos que exijam o máximo de integridade possível. Isso porque a técnica remove informações que acredita ser irrelevantes e/ou que não tragam diferenças consideráveis ao resultado final. O propósito principal é o de obter um arquivo ainda mais comprimido, sem que o mesmo deixe de ser útil.

A analogia sobre uma folha de papel dobrada, apresentada anteriormente (em Transformações), é um interessante exemplo para entender o funcionamento sobre essa técnica de compressão.

Nesta categoria, podemos destacar alguns formatos de imagens (JPG), áudio (MP3 e WMA) e de vídeo (WMV, MP4). Uma ressalva ao formato de áudio FLAC, que, ao contrário dos outros, utiliza uma técnica que evita perda de informações.

Compressão x Compactação

Um adendo que ainda posso realizar é em relação às diferenças entre os termos “compressão” e “compactação”. Embora ambos sejam utilizados muitas vezes para descrever a mesma situação, na realidade a compactação é a técnica utilizada para unir dados que estejam separados (como acontece em uma desfragmentação). Mesmo semelhantes em seus objetivos (melhor aproveitamento de espaço), a forma de como as informações são tratadas distingue-se consideravelmente.

Considerações finais

O principal objetivo aqui foi de tentar esclarecer da forma mais descomplicada possível as técnicas utilizadas na compressão de dados. Omiti alguns termos relacionados a algoritmos específicos, e não abordei métodos relacionados à simetria em dados comprimidos. A idéia foi de justamente levar o conceito do tema de forma plausível aos usuários não-técnicos, embora o conteúdo também se apresente relevante aos profissionais da área tecnológica.

Roberto Tadeu Fauri

Veja também:

Tags: , , , , , , , , , ,

6 comentários »

  • domelhor.net diz:

    Como funciona a compresso de dados…

    Entenda como funciona a compresso de dados, tcnica amplamente utilizada por programas como WinZip e WinRAR, alm de softwares destinados criao de arquivos MP3 e WMA….

  • Roberto via Rec6 diz:

    Como funciona a compressão de dados…

    Entenda como funciona a compressão de dados, técnica amplamente utilizada por programas como WinZip e WinRAR, além de softwares destinados à criação de arquivos MP3 e WMA….

  • Grave CDs de áudio a partir de arquivos MP3 e WMA - Dinx – Descomplicando a Informática diz:

    [...] Embora existam formatos de compactação sem perda de dados (tais como os populares arquivos de extensão ZIP, RAR, ACE, 7z, etc.), devido a características peculiares do áudio digital, não há como fugir de um decréscimo de qualidade no resultado final. Seria algo semelhante a uma folha de papel, caso a dobrássemos várias vezes: o conteúdo continuaria legível, mas as marcas das dobras estariam razoavelmente perceptíveis. E, quanto maior o número de dobras (uma analogia à compressão de dados, visando aproveitamento de espaço), menor a qualidade apresentada ao final do processo. Leia mais sobre o assunto no artigo Como funciona a compressão de dados. [...]

  • Alucard diz:

    Muito boa essa matéria, visite nosso site, temos uma materia parecida, de como utilizar o winrar.
    http://www.criandomsn.com/?p=1677

  • Charles diz:

    o texto poderia ser menor e menos complicado, mas gostei
    sempre quis saber como funciona isso
    vlw

  • Roberto Tadeu Fauri diz:

    Saudações, Charles! Tentei redigir o artigo de forma que o assunto se mostrasse o mais compreensível possível, mas infelizmente a teoria que envolve tais técnicas realmente é difícil de explanar (há termos e jargões que não há como ignorar, o que dificulta a leitura aos olhos dos mais leigos). Mas fico feliz que tenha gostado! Abraços, e obrigado por comentar!

Deixe seu comentário!

Adicione seu comentário, ou faça um trackback de seu próprio site. Você pode também inscrever-se via RSS.