Esta pesquisa deve fornecer um conteúdo atualizado sobre o tema acima. Não esqueça de incluir as referëncias (fontes) no último item, reforçando que não deve ser um Copy/Paste e sim uma síntese das pesquisas que fizer.
Conceito
A compressão de dados ou, em inglês, "data compression", é o processo o qual se reduz o espaço ocupado por dados, por meio de um algoritmo de compactação (winrar, gzip, winzip, ...), que substitui os símbolos de um texto por outros que possam ser representados usando um número menor de bits ou bytes.
Tem finalidade de reduzir dados como imagens, vídeos e textos para economizar espaço em dispositivos de armazenamento, agilizar transmissões de dados e backups. Além disso, a compressão auxilia a diminuir a quantidade de tráfego na grande rede, fazendo aumentar a velocidade de navegação e diminuindo o tempo de downloads.
Funcionamento
A compressão de dados tem objetivo de reduzir a quantidade de bits necessária para representá-lo, logo elimina-se as redundâncias como palavras ou caracteres repetidos.
Isso pode ser feito de diversas formas como por exemplo:
a) Tendo-se uma sequência de caracteres:
AAABBNNNNNHHHHSSSSSSI -> 21 Bytes
Representando-a como:
3A2B5N4H6S1I -> 12 Bytes
Economizamos cerca de 42% do espaço ocupado.
b)Tendo palavras que se repetem em um texto:
O céu é azul -> 12 Bytes
Azul é o céu -> 12 Bytes
Atribuindo-se uma referencia que será armazenada no dicionário temos por exemplo:
O -> 1
céu -> 2
é -> 3
azul -> 4
Temos:
1 2 3 4 -> 7Bytes
4 3 1 2 -> 7Bytes
Economizamos cerca de 58% do espaço ocupado.
Algoritmos
Existem diversos algoritmos de compressão de dados, como:
Codificação aritmética: Codificação de Entropia (sempre alcança a entropia da fonte)
Método de Burrows-Wheeler: preprocessamento útil para compressão sem perda de dados
DEFLATE: compressão sem perda de dados
Codificação Delta: apoio para compressão de dados na qual dados sequenciais acorrem freqüentemente.
Codificação de Huffman: Codificação de Entropia por Palavras-Código
Incremental encoding: codificação delta aplicada a uma sequência de strings
LZW: Codificaçao baseada em dicionário (Lempel, Ziv, Welch)
LZ77: Codificaçao baseada em dicionário com "janela deslizante" (sliding window em inglês). A base do DEFLATE.
LZ78: Codificaçao baseada em dicionário da qual evoluiu o LZW.
Codificação Run-length: Codificação por Comprimento de Sequencia
Mas os que compõem a base dos demais são a Codificação de Huffman e o algoritmo LZW:
Huffman:
Dado um enunciado, como, por exemplo:
"COMMENT_CA_MARCHE"
Criamos uma tabela que mostre a frequência com que cada caracter é usada:
M A C E _ H O N T R
3 2 2 2 2 1 1 1 1 1
Assim cria-se uma "árvore" onde a base as palavras menos usadas até o topo que é a palavra mais usada. Assim, temos:
Para encontrar a palavra, segue-se as linhas enumeradas de 0 e 1 , logo o resultado é:
M = 00 A = 100 C = 110 E = 010 _ = 011 H = 1110 O = 1111 N = 1010 T = 10110 R = 10111
LZW:
Segue o seguinte fluxograma:
Tipos de compressão
Física:
Tem como base encontrar dados redundantes de uma cadeia de bits a outra.
Lógica:
Substitui uma informação por uma informação equivalente que ocupe um menor número de bits.
Com Perca de Dados:
Quando a informação obtida após a descompressão dos dados é diferente da informação antes da compressão, mas suficientemente equivalente para que seja útil.Permite excluir algumas informações para se obter a maior compressão possível. É normalmente usado na compressão de áudios em formato MP3, pois devido as limitações na audição humana o som pode ser muito comprimido sem que se percebamos a degradação da qualidade do sinal sonoro.
Sem Perca de Dados:
Quando a informação obtida após a descompressão igual a informação antes da compressão. É essencial na compressão de planilhas eletrônicas, textos e programas de computador, uma vez que a perca de um dado pode inviabilizar ou prejudicar a leitura ou execução correta do arquivo.
Simétrica:
Quando o algoritmo de compressão é muito parecido com o algoritmo de descompressão.Os principais exemplos são: Codificação aritmética e LZW.
Assimétrica:
Quando o algoritmo de compressão é bem diferente se comparado ao algoritmo de descompressão. Algoritmos mais rápidos em descompressão que em compressão são úteis no caso de um arquivo que vai ser comprimido uma vez e descomprimido várias vezes, já os algoritmos mais rápidos em compressão que em descompressão são utilizados geralmente por razão de segurança.
Adaptativa:
Tem base em dicionários específicos para um tipo de dado, assim ocorrências de letras num ficheiro de texto, por exemplo, dependem da língua na qual este está escrito.
Não Adaptativa:
Não tem um dicionário predefinido.
Exemplo de compressão
Um exemplo bastante utilizado de compressão de dados é a compressão de áudios, uma vez que antes do surgimento desse tipo de compressão, a informação (dados) digital de áudio de alta qualidade ocupava uma muito espaço nos discos.
Isso ocorre poir para que a qualidade de som seja equivalente a de um CD, são necessários 44.1 kHz, estéreo (2 canais), com 16 bits por amostra.
44.100 Hz equivale 44.100 valores (amostras) por segundo chegando da sua placa de som. Isso multiplicado por 2, pois são 2 canais. E novamente multiplicado por 2 (bytes) já que você terá 2 bytes por amostra (que significa 16 bits).Então, a música terá cerca de 10 MBytes de espaço usado no seu disco rígido por minuto de áudio armazenado.
A compressão do áudio ocorre em duas partes:
A Codificação: transforma os dados do áudio digital , por exemplo, armazenados num arquivo/ficheiro WAVE, para dentro de uma estrutura altamente comprimida denominada 'bitstream'. Para reproduzir (tocar) este 'bitstream' na sua placa de som, você precisará da segunda parte.
É feito por um codificador de áudio, exemplo: LAME.
Decodificação: ler o 'bitstream' e reexpande-o como um arquivo/ficheiro WAVE (não exatamente igual ao original).
É feito por um decodificador de áudio, exemplos: mpg123, winamp, Xmms.
Exemplos de softwares
WinRAR
WinZip
7-Zip
B1 Free Archiver
BraZip (Compactador Brasileiro)
PeaZip
PKZIP
Referências bibliográficas
http://www.inf.ufrgs.br/~valdeni/Arqpdf/A24-25-INF01124_CPD.pdf
http://br.ccm.net/contents/715-compressao-de-dados
http://www.fatecgarca.edu.br/revista/Volume2/Artigo_2_Volume_2.pdf
https://pt.wikipedia.org/wiki/Compress%C3%A3o_de_dados
http://www2.unitins.br/BibliotecaMidia/Files/Documento/AVA_633682985082488750aula_6.pdf