Huffman

Você também pode gostar

Você está na página 1de 5

PR-REITORIA DE PS-GRADUAO, PESQUISA E EXTENSO PROPEX

PROJETO DE PESQUISA
1. TTULO DO PROJETO:
Estudo sobre cdigo de Huffman para compactao de arquivos gerados por sistema de
cadastro de informaes pessoais.
2. JUSTIFICATIVA e REVISO BIBLIOGRFICA:
Atualmente comum deparar-se com pessoas ou organizaes que
necessitam armazenar ou transferir em seus computadores ou redes arquivos de
grande porte. Entretanto, mesmo que a capacidade de armazenamento e o
processamento dos computadores sejam suficientes para os recursos j
disponveis, o tempo de transferncia e o espao fsico requerido para o
armazenamento so elevados, surgindo assim a necessidade de compactao
desses arquivos para obter maior agilidade de transferncias e exigindo menos
espao em memria para armazen-los. Existem vrios algoritmos de
compactao, contudo nesse projeto o algoritmo a ser estudado o algoritmo de
Huffman cuja escolha ocorreu por conta de que um algoritmo de amplo uso na rea da
computao para compactao de dados como: imagens, vdeos e principalmente arquivos
de textos.
Segundo Gonzalez (2009) uma das tcnicas mais populares para resolver a
redundncia de codificao foi elaborada por Huffman em 1952. Por codificar individualmente
os smbolos de uma fonte de informao, tendo como resultado o menor nmero possvel de
smbolos-cdigo por smbolo-fonte. O cdigo de Huffman um mtodo de compactao que
usa as probabilidades de ocorrncia dos smbolos no conjunto de dados a ser compactado
para determinar cdigos de tamanho varivel para cada smbolo. Tem por objetivo a
construo de uma rvore Binria baseada na frequncia de uso das letras do alfabeto de
modo que as mais frequentemente utilizadas apaream mais perto da raiz. Esta arvore
binria construda de baixo para cima (das folhas para raiz), comeando a partir das letras
menos usadas at atingir a raiz. No inicio do algoritmo, cada uma das letras forma uma
arvore que e composta apenas pela raiz e cujo contedo e a frequncia com que esta letra
ocorre no arquivo em questo. Em seguida, so escolhidas as duas arvores com a menor
frequncia associadas e elas so unidas em uma s arvore cujo valor da raiz a soma do
valor destas duas. Este processo repetido at a existncia de uma nica arvore.
No padro de codificao de carcteres American Standard Code for Information
Interchange (ASCII), cada caractere codificado com o mesmo nmero de bits por caractere,
ou seja, 8 bits. Desta maneira, h 256 (28) possveis combinaes para representar os
caracteres em ASCII. Os caracteres mais comuns, como os alfanumricos, pontuao e
caracteres de controle usam apenas 7 bits. 128 (27) caracteres diferentes podem ser
codificados com 7 bits. A codificao de Huffman compacta os dados usando um nmero
menor de bits para codificar os caracteres que ocorrem com mais frequncia de maneira que
nem todos os caracteres precisem ser codificados com 8 bits. Considerando a string: bom
esse bombom. Usando a codificao ASCII (8 bits por caractere), os 16 caracteres dessa
string usam 128 bits. O quadro a seguir ilustra como a codificao funciona.

MODELO PROJETO PIC 170 IX

Quadro1 codificao com 8 bits

Fonte: http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-de-dados/material/CodificacaoHuffman.pdf

A string bom esse bombom seria escrita numericamente assim: 98 111 109 32 101 115 115
101 32 98 111 109 98 111 109. Em binrio, seria assim: 0110 0010 0110 1111 0110 1101 0010
0000 0110 0101 0111 0011 0111 0011 0110 0101 0010 0000 0110 0010 0110 1111 0110 1101
0110 0010 0110 1111 0110 1101.
Considerando a utilizao de uma codificao baseada em 3-bits por caractere:
Quadro 2 codificao com 3 bits

Fonte: Disponvel em http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-dedados/material/CodificacaoHuffman.pdf acessado em 14/05/2014

A string seria numericamente escrita assim: 0 1 2 5 3 4 4 3 5 0 1 2 0 1 2 e em binrio: 000


001 010 101 011 100 100 011 101 000 001 010 000 001 010. Usando 3-bits por caractere, a
string bom esse bombom usa um total de 48 bits ao invs de 128. A economia de bits
poderia ser ainda maior se fosse usado menos de 3 bits para codificar caracteres que
aparecem mais vezes (b,o,m) e mais bits para caracteres que aparecem menos vezes (e, s).
Tambm sero estudadas algumas estruturas de dados que sero necessrias para
execuo desse projeto como arquivos e listas lineares.
Conforme Aguilar (2008) um arquivo uma sequncia de bits armazenados em
algum dispositivo externo. Pode ser lido e escrito por um programa. A utilizao de
arquivos trs a vantagem de no ser necessrio indicar a quantidade de registros que um
arquivo contm, pois, como ele gravado em um dispositivo de armazenamento externo, o
computador no precisa reservar espao de memria. Dessa forma, o espao alterado
de acordo com a necessidade. Os arquivos do tipo texto esto capacitados a armazenar
caracteres, palavras, frases e tambm dados numricos. Os nmeros, entretanto, sero
armazenados como caracteres do tipo alfanumrico, e desta forma ocuparo muito mais
espao em disco do que ocupariam na memria de um computador se fossem definidos
como tipos numricos. A soluo para este detalhe utilizar funes que manipulem os

arquivos em formato binrio.


J Listas Lineares segundo Szwarcfiter (1994), uma estrutura de lista
formada por um conjunto de elementos, os quais se relacionam entre si. Os
elementos contidos em uma lista podem formarem as combinaes de
informaes, assim, [ A, 1, C ], por exemplo representa uma lista de 3 elementos,
sendo que os elementos A, 1 e C indicam as informaes da lista. Uma estrutura
de lista tambm pode ser formada por um conjunto de listas e sub listas, ou seja,
podemos falar que [ [ A, [ B ] ] , [ C ] ] uma lista com dois elementos. As listas
podem ser armazenadas de duas formas na memria: contnua e dinmica. A
contnua se d quando cada n da lista armazenado de uma forma contnuo,
desde que o nmero mximo de elementos da lista seja conhecido, j alocao
dinmica, tem como caracterstica a dinamicidade de alocar os elementos na
memria na medida em que houver necessidade, j que os ns encontram-se em
posies aleatrias, porem cada n contm ponteiros que interligam uns aos
outros. (SZWARCFITER, 1994). Nessa lista sempre temos um ponteiro que
armazena o endereo do primeiro elemento e a partir dele realizamos um
percurso sequencial, sempre do incio ao fim da lista, at chegarmos no ltimo
elemento, que possui um valor nulo no seu campo prox. Entretanto caso
houvesse a necessidade de apontar para o n anterior, no seria possvel pelo
fato de que no existe nenhum ponteiro indicando o n anterior. Para resolver
esse problema utiliza-se a lista duplamente encadeada, onde cada elemento
possui dois ponteiros: um que aponta para o n anterior e outro que aponta para o
seu prximo. Nesse projeto para a implementao do cdigo de Huffman ser
usada a lista duplamente encadeada, conforme j visto anteriormente, possibilita
a insero dinmica dos elementos e a possibilidade de obter as informaes do
prximo elemento e a do anterior. Conforme Jascone (2003) o algoritmo consiste
na construo de uma rvore, chamada rvore de prefixo, onde cada folha
conter um caractere e cada nodo conter dois filhos, podendo ser o da esquerda
com o valor 0 e o da direita com o valor 1. Esta rvore uma lista encadeada
com os caracteres que aparecem no texto e suas respectivas freqncias.
Nesse projeto ser desenvolvido um software na linguagem C++, para
cadastramento de informaes pessoais gerando assim arquivos de textos contendo um
grande volume de informaes.
3. OBJETIVOS:
3.1 GERAL:
Oferecer um sistema de cadastro de dados pessoais com a utilizao do cdigo de Huffman
para compactao de arquivos.
3.2 ESPECFICOS:
Esta pesquisa tem o propsito de realizar os seguintes objetivos especficos:
a) Compreender sobre o cdigo de Huffman, Estrutura de Dados, rvores,
Arquivos, Listas, Teoria dos grafos e Anlise de Algoritmos;
b) Oferecer a compactao e descompactao de arquivos texto pelo cdigo de
Huffman;
c) Oferecer algumas funcionalidades relacionadas a cadastros e relatrio;
d) Analisar se a compactao reduziu o tamanho do arquivo;
e) Verificar se houve perda de dados no processo.
4. METODOLOGIA:
4.1 Problema

A compactao de dados pelo algoritmo de Huffman diminui o tamanho de arquivos de


formato texto sem sofrer perdas em um sistema de cadastro de informaes pessoais?
4.2 Delineamento
Estudo de natureza aplicada (tecnolgica) e descritivo.
A rea escolhida para realizao desse projeto de pesquisa Cincia da Computao e tem
como tema a compactao de dados utilizando o algoritmo de Huffman.
Nesse projeto ser realizado um estudo sobre cdigo de Huffman para compactao de
arquivos de textos que sero gerados por sistema de cadastro de informaes pessoais.
Primeiramente ser realizada uma pesquisa bibliogrfica a fim de obter maior conhecimento
para execuo do projeto e assim desenvolver um sistema de cadastro de informaes
pessoais na linguagem C++ utilizando o compilador DevC++ 5.6.1. Nesse sistema ser
usado algumas estruturas de dados como listas, rvores e arquivos e gerar arquivos no
formato texto contendo as informaes cadastradas por usurios, ser implementando a
codificao de Huffman para a
compactao e descompactao desses arquivos
observando o desempenho do algoritmo, a taxa de compactao e se houve perda de
dados.
4.3 Local da pesquisa
O local escolhido para anlise dos requisitos e teste refere-se Universidade do Extremo Sul
Catarinense, localizado no municpio de Cricima, Santa Catarina.
4.4 Atividades da Pesquisa
So atividades da pesquisa:
a) Estudar sobre Teoria dos Grafos, Compactao de Dados e Algoritmo de Huffman;
b) Estudar sobre Arquivos e rvores;
c) Desenvolver um programa de cadastro de informaes pessoais;
d) Implementar o algoritmo de Huffman para compactao dos arquivos gerados pelo
sistema;
e) Testar as funcionalidades oferecidas pelo sistema;
f) Testar a compactao e descompactao dos arquivos utilizando o cdigo de
Huffman;
g) Analisar a eficincia do cdigo.
5. CRONOGRAMA DE EXECUO DA PESQUISA
Calendrio
F M A M J
Estudar sobre Teoria dos Grafos, Compactao de Dados e Algoritmo de X X
Huffman
Estudar sobre Arquivos e rvores
X X
Desenvolver um programa de cadastro de informaes pessoais
X X
Implementar o algoritmo de Huffman para compactao dos arquivos
X
gerados pelo sistema
Testar as funcionalidades oferecidas pelo sistema
X
Testar a compactao e descompactao dos arquivos utilizando o cdigo
X
de Huffman
Analisar a eficincia do cdigo
X
Entrega do projeto
X
Entrega da parte prtica
X
Apresentao da parte prtica
X
Atividades

6. REFERNCIAS (ABNT)
SZWARCFITER, Jayme Luiz; MARKENZON, Lilian. Estruturas de Dados e seus
Algoritmos. Editora LTC - Livros Tcnicos e Cientficos. Rio de Janeiro - RJ. 1994.
GONZALEZ, Rafael C. WOODS, Richard E. Processamento Digital de Imagens. Edio 3.
ed. So Paulo SP: Pearson Prentice Hall. 2009
AGUILAR, Luis Joyanes. Programao em C++ Algoritmos, Estrutura de Dados e
Objetos. 2. ed. So Paulo: Mcgraw-hill, 2008.
JASCONE, Fbio Luis Tavares. Prottipo de Software para Ocultar Texto Criptografado
em Imagens Digitais. 2003. 64 f. TCC (Graduao) - Curso de Cincia da Computao,
Universidade
Regional
de
Blumenau,
Blumenau,
2003.
Disponvel
em:
<http://www.bc.furb.br/docs/MO/2003/278719_1_1.pdf>. Acesso em: 26 jun. 2014
LINHARES, Gilmara; DINIZ, Janderson; CORREIA, Suzete. Estudo de Algoritmos para a
Compresso de Imagens. 2007. 10 f. Artigo (Mestrado) - Curso de Cincia da Computao,
Centro Federal de Educao Tecnolgica da Paraba, Joo Pessoa, 2007. Disponvel em:
<http://www.redenet.edu.br/publicacoes/arquivos/20080127_130921_INFO-021.pdf>. Acesso
em: 26 maio 2014.
BRAGA, gor Assis; LADEIRA, Marcelo. Um Modelo Adaptativo para a Filtragem de
Spam. 2013. 10 f. Artigo (Mestrado) - Curso de Cincia da Computao, Departamento de
Departamento de Cincia da Computao, Universidade de Braslia (unb), Braslia, 2013.
Disponvel em: <http://www.cos.ufrj.br/~ines/enia07_html/pdf/27985.pdf>. Acesso em: 26 maio
2014.
UNIVERSIDADE FEDERAL DO ESPRITO SANTO (Espirito Santo). A Codificao de
Huffman. 2009. Disponvel em: <http://www.inf.ufes.br/~pdcosta/ensino/2009-1-estruturas-dedados/material/CodificacaoHuffman.pdf>. Acesso em: 26 maio 2014.
6. GRUPO
Willian Jefferson Meurer, Luan Alano Formentin, Bruno Goulart

7. PROFESSORES
PRISCYLA WALESKA TARGINO DE AZEVEDO SIMES, CHRISTINE VIEIRA, GILBERTO
VIEIRA DA SILVA, PAULO JOO MARTINS

Você também pode gostar