Вы находитесь на странице: 1из 11

ANLISE E IMPLEMENTAO DE ALGORITMOS DE COMPRESSO DE

DADOS
Maria Carolina de Souza Santos1
Orientador: Prof. Ms. Mauricio Duarte2
Centro Universitrio Euripides de Marilia UNIVEM
FATEC Faculdade de Tecnologia de Gara
Caixa Postal 17400-000 Gara - SP Brasil
mariacarolinasouzasantos@gmail.com
maur.duarte@gmail.com

Resumo: Em muitas situaes so necessrias o armazenamento e o envio de


informaes pertinentes alguma ao e, em muitos casos, por se tratarem de arquivos
digitais muito grandes, estas informaes necessitam ser compactadas (comprimidas). O
ato de compactar uma informao reduzir seu tamanho original em um tamanho
menor, sem interferir no significado da informao. Este artigo apresenta uma tcnica
de compresso de dados proposta por Huffman e, baseando-se nela, prope um novo
algoritmo para compresso de dados.
Palavras-chave: 1. Compresso; 2. Huffman; 3. Algoritmos

INTRODUO
Compresso de texto est relacionada com as maneiras de representar o texto
original em menos espao. Para isto, basta substituir os smbolos do texto por outros
que possam ser representados, usando um nmero menor de bits ou bytes. (ZIVIANI,
2007).
Assim, a compresso de dados um processo de reduo do espao ocupado
por dados num determinado dispositivo. O objetivo central diminuir a quantidade de
bytes do dado sem causar alteraes, ou seja, utilizar compresso de dados sem perdas.
A pesquisa se constitui na proposta de criar um padro de rvore de
codificao, utilizando os conceitos abordados por Huffman, que um dos mtodos de
compresso mais conhecidos, cujo objetivo deixar no nvel mais baixo da rvore as
palavras de menor frequncia, que, por consequncia, geram cdigos binrios mais
curtos para palavras mais decorrentes.
O estudo de compresso importante para reduzir dados como imagens, vdeos
e textos em situaes como transmisso de dados, pois o ideal diminuir o tempo de
latncia, e tambm para backup, que alm de utilizar o conceito de compactao
necessita fazer a compresso dos dados; caso os backups sejam feitos com frequncia.
Com a compresso, o arquivo compactado no ocupa tamanhos elevados nos
dispositivos de armazenamento.
1

Discentes do curso Bel. em Cincia da Computao UNIVEM - Marilia.

Docente dos cursos de Anlise e Desenvolvimento de Sistemas da FATEC Gara e tambm


docente do curso de Bel. em Cincia da Computao UNIVEM - Marilia
2

1. REVISO BIBLIOGRFICA
1.1 COMPRESSO DE DADOS
Todos os dados computacionais como texto, msicas, imagens e vdeos so
compostos por uma srie de bits, sendo bit a menor unidade de armazenamento, que
podem ser representados por bytes, que o conjunto de oito bits.
Com o intuito de uma unidade de armazenamento ocupar o menor espao
possvel, comprimir dados, ou seja, reduzir o tamanho das informaes, esse
procedimento tornou-se necessrio. Atualmente, existem vrios mtodos de
compresso, alguns deles utilizados de forma genrica, para vrios tipos de dados, e
outros de forma especifica.
Muitos desses mtodos utilizam o conceito de substituio de informao,
pois substituem uma quantidade de informao por uma de tamanho menor. Dessa
forma, o dado comprimido ocupa menos espao de armazenamento e,
consequentemente, menos tempo para ser lido do disco ou ser transmitido por um
meio de comunicao. Porm existem suas desvantagens, que at o momento so
inevitveis, sobretudo em relao ao processamento: custoso codificar e
decodificar. Como exemplo desses mtodos, podemos citar o de Huffman.

1.2 MTODO DE HUFFMAN

David Albert Huffman, em 1952, desenvolveu um mtodo de compresso


sem perdas, resultado de uma pesquisa de doutorado, cujo nome do artigo A
Method for the Construction of Minimum-Redundancy Codes.
Sua descoberta hoje utilizada para comprimir dados bit a bit como textos
e imagens. Para comprimir imagens necessrio representar seus pixels (Picture
Element, menor elemento de imagem ao qual possvel atribuir-se uma cor) com
um nmero binrio. Nesse caso utiliza-se a quantizao que estabelece o nvel de
frequncia de uso de cada pixel e, por intermdio desse processo, possvel declarar
um cdigo para cada nvel. Tendo-se esse cdigo possvel utilizar o mtodo de
Huffman para fazer a compresso e descompresso.
Para compresso de texto pode ser utilizado tambm o conceito de
substituio de palavras por bits. Isso pode resultar em uma compresso maior na
maioria dos casos. Se analisarmos o caractere a que em um texto pode representar
uma palavra, o caractere por si s tem o tamanho de oito bits. Mas segundo o
mtodo de Huffman, que atribui cdigos binrios de tamanhos que variam de acordo
com a frequncia da palavra no texto, as de maiores frequncias tm cdigos
binrios menores e as de menores frequncias tm cdigos binrios maiores: se a
tiver uma freqncia menor, no pior caso pode ter tamanho maior que um byte, por
outro lado, se a maior palavra da lngua portuguesa como
pneumoultramicroscopicossilicovulcanoconitico (registrada no Dicionrio
Houaiss e reconhecida em 2001), que contm 46 caracteres, ou seja, 46 bits,

aparecer em um texto vrias vezes existe grande probabilidade de reduzir seu


tamanho e, no melhor caso, ser representada por um bit.
Huffman, em seu mtodo, props produzir uma rvore de codificao que
minimiza o tamanho do texto. As figuras ilustram um exemplo de construo dessa
rvore, para isso a frase No meio do caminho tinha uma pedra tinha uma pedra no
meio do caminho, foi utilizada como exemplo.
1 passo: As palavras so ordenadas em ordem crescente de frequncia
(Figura 1).
Figura 1 1 passo da construo da rvore.

2 passo: As duas palavras de menor frequncia devem formar uma nova


sub-rvore (Figura 2).
Figura 2 - 2 passo da construo da rvore.

3 passo: Os ns so agrupados em pares (Figura 3).


Figura 3 - 3 passo da construo da rvore.

4 passo: Cada novo n ter associado a ele uma ns palavra (Figura 4).
Figura 4 - 4 passo da construo da rvore.

Aps a construo da rvore possvel determinar o cdigo binrio para


cada palavra, para isso necessrio percorrer as arestas da rvore at a palavra que
deseja obter a codificao e os valores atribudos a cada aresta, sendo eles 0 e 1,
formando o cdigo binrio. A tabela 1 mostra o resultado desse processo.
Tabela 1 Palavras e seus respectivos cdigos binrios.

Palavra
NO
MEIO
DO
CAMINHO
TINHA
UMA
PEDRA

Cdigo
11100
11101
11110
11111
110
10
0

O texto codificado representando da seguinte forma:


11100 11101 11110 11111 110 10 0 110 10 0 11100 11101 11110 11111
A decodificao pode ser feita de duas formas: a primeira utilizar a tabela
que contm os cdigos referentes a cada palavra e fazer a substituio; a segunda

forma utilizar a rvore onde os bits de entrada do arquivo comprimido so usados


para selecionar as arestas e, consequentemente, encontrar a palavra.
Tanto a primeira quanto a segunda forma geram um custo computacional
expressivo, porm ainda h vantagens de comprimir o texto, se for feito a razo de
compresso que o tamanho do texto comprimido dividido pelo tamanho do texto
original: 52 bits /552 bits, mostram que o arquivo comprimido foi reduzido para o
tamanho de 9% do tamanho original.

2. METODOLOGIA

Para a implementao do algoritmo foi escolhida a linguagem Java.


Java uma linguagem de programao orientada a objeto e desenvolvida
na dcada de 90 por uma equipe de programadores, chefiada por James Gosling, na
empresa Sun Microsystems.
Em 1999, com o surgimento das plataformas Java 2 Enterprise Edition
(J2EE) e a Java 2 Mobile Edition (J2ME), Java passou a ser utilizada na web, em
desktop, servidores, mainframes, jogos, aplicaes mveis e at em chips de
identificao, atualmente, por consequncia de sua intensa aplicabilidade, uma das
linguagens mais usadas, servindo praticamente para qualquer tipo de aplicao.
Java executa em diferentes ambientes por trabalhar com uma mquina
virtual nomeada Java Virtual Machine (JVM), que traduz o cdigo bytecode em
instrues especficas de cada sistema. Em relao ao bytecode, este o estgio
intermedirio entre o cdigo-fonte e a aplicao final, sendo ele transparente ao
desenvolvedor. Portanto no se faz necessrio entender como ocorre essa traduo
para cada sistema, pois a mquina virtual responsvel por essa funo, o que torna
vivel utilizar Java; afinal essa linguagem facilita o trabalho do desenvolvedor por
no ter a necessidade de alterar o cdigo da aplicao para diferentes ambientes.
A linguagem Java possibilita a criao de componentes separados por
funo, criando componentes mais simples e utiliza o conceito de herana, que so
fatores importantes para o reuso do cdigo, facilitando tambm o trabalho do
desenvolvedor.
Outro motivo da escolha da linguagem por ter ambientes de
desenvolvimento gratuitos (IDE), tal como NetBeans, que uma IDE para Java, e a
mesma foi utilizada para implementao do algoritmo de compresso de dados.
Alm disso, vrios fabricantes fornecem ferramentas, servidores de aplicao,
bibliotecas e existem diversos tipos de frameworks para resolver um mesmo
problema, o que proporciona maior liberdade de escolha de framework que mais se
adapta ao projeto.

3. PROJETO

Projetar uma rvore com n palavras vago, pois poderiam ter diversas
representaes. Pensando nisto que este projeto prope um novo padro na
construo da rvore de codificao de Huffman.
A construo da rvore dividida em 4 etapas. Para exemplificar as etapas
usaremos como exemplo o seguinte texto:
Depois de algum tempo voc aprende a diferena , a diferena entre
dar a mo acorrentar uma alma voc aprende que amar no significa
apoiar - se . que companhia nem sempre significa segurana ou
proximidade .

1 Etapa:
Como foi proposto por Huffman, deve-se separar o texto por palavras e
verificar a frequncia das palavras.
Em seguida ordenar as palavras das de menores frequncias para as de
maiores, como na tabela 2.
Tabela 2 Palavras e suas frequncias em ordem crescente.

Ordem
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Palavra Freq. Ordem


Palavra
Freq.
1
16 !
1
Depois
1
17 companhia
1
de
1
18 nem
1
algum
1
19 sempre
1
tempo
1
20 segurana
1
,
1
21 ou
1
entre
1
22 proximidade 2
dar
1
23 voc
2
mo
24 aprende
2
acorrentar 1
1
25 diferena
2
uma
1
26 e
2
alma
1
27 que
2
amar
1
28 significa
2
no
1
29 .
2
apoiar
1
30 a
3
1
se

Etapa:
O nvel mais baixo da rvore deve ser composto por pares.
Para determinar a quantidade de palavras nesse nvel, usa-se a seguinte
equao:

Onde p a quantidade de palavras no nvel mais baixo e n o nmero total


de palavras. Se p for um valor impar acrescenta-se 1.Em seguida necessrio
associar cada par a um n.
O texto contm 31 palavras, portanto no nvel mais baixo tem-se 15
palavras, como o valor impar passa a ser 16 palavras e, consequentemente, 8 pares
(Figura 5).
Figura 5 Palavras no nvel mais baixo agrupadas em pares.

3 Etapa:
Nesta etapa estes pares gerados sero associados a um novo n. O novo n
conter o par na sua sub-rvore esquerda e uma palavra em sua sub-rvore
direita. Esses novos ns devero ser associados entre si de par em par tambm,
criando outros ns (Figura 6).
Figura 6 Ns e suas sub-rvores.

A 3 etapa ir se repetir enquanto houver ns para serem associados em pares e


palavras a serem inseridas na rvore.

4 Etapa:
Se a quantidade de palavras inseridas at o final da 3 etapa for diferente do total de
palavras, insere-se o restante acima da raiz.

r = n ti
Onde ti o total de palavras inseridas e r a quantidade de palavras que sero
inseridas acima da raiz (Figura 7).

Figura 7 rvore Final.

Aps criar a rvore possvel determinar um cdigo binrio para cada palavra e
mediante esse cdigo feita a descompresso.
Tabela 3 Palavras e seus respectivos cdigos binrios.

Palavra
Depois
De
Algum
Tempo
,
Entre
Dar
Mo
acorrentar
Uma
Alma
Amar
No
Apoiar
Se

Cdigo
00000000
00000001
00000100
00000101
00010000
00010001
00010100
00010101
01000000
01000001
01000100
01000101
01010000
01010001
01010100
01010101

Palavra
!
companhia
nem
sempre
segurana
ou
proximidade
voc
aprende
diferena
e
que
significa
.
a

Cdigo
0101011
0101001
0100011
0100001
0001011
0001001
0000011
0000001
01011
01001
00011
00001
011
001
1

O texto codificado representando da seguinte forma:


00000000 00000001 00000100 00000101 0000001 01011 1 01001 00010000 1
01001 00010001 00010100 1 00010101 01000000 01000001 01000100
0000001 01011 00001 01000101 01010000 011 01010001 01010100 01010101
001 00001 0101001 0100011 0100001 011 0001011 0001001 0000011 001
4. RESULTADOS E CONCLUSES

Analisando a tabela gerada pelo exemplo do projeto, um arquivo binrio ser gerado
com as codificaes descritas. Assim, possvel notar que as palavras menos
frequentes foram codificadas em 7 bits e, no pior caso (um nico caractere - possui 1
byte) economizou 1 bit. Em contrapartida, a maior palavra do texto proximidade,
que possui 10 bytes, foi comprimida em 2 bits, indicando um grande reduo do seu
tamanho.
O arquivo original tem 209 bytes, no entanto, aps aplicar o algoritmo proposto
nesse projeto, ele ficou com 28,625 bytes. Ao fazer a razo de compresso: 28,625
bytes / 209 bytes, temos que o arquivo comprimido foi reduzido para o tamanho de
13% do tamanho original.

Para pequenos arquivos de texto possvel perceber que este padro proposto tem
uma taxa de compresso alta, porm para textos muito grandes essa taxa no
efetiva. Fica como proposta, para trabalho futuro, a anlise e testes para arquivos
maiores e o desenvolvimento de um padro de rvore que se adapte essa realidade.

REFERNCIAS BIBLIOGRFICAS
ZIVIANI, N. Projeto de Algoritmos com implementaes em Java e C++. So
Paulo: Cengage Learning, 2007.
TENENBAUM, A. M. et al. Estruturas de Dados usando C, Makron Books, 1995.

Вам также может понравиться