You are on page 1of 4

Huffman Adaptativo

Yasmine Silva de Anrdrade Prof: Leonardo UNIO EDUCACIONAL DO PLANALTO CENTRAL Faculdades Integradas da Unio do Planalto Central Sistemas de Informao Multimdia Resumo O cdigo de Huffman um algoritmo usado principalmente na codificao de dados que precisam ser restaurados sem nenhuma perda de informaes. Apresenta como principal vantagem a simplicidade, rapidez e a auto-sincronizao. Esta tcnica de compresso permite a representao, em forma binria, de caracteres a partir de sua probabilidade de ocorrncia. Esta representao gerada por um sistema de decodificao em rvore binria, o que impede a ambiguidade na anlise do cdigo. O cdigo binrio gerado por ele de tamanho varivel. 1 Introduo A compactao foi muito usada no incio da era dos microcomputadores, pois preservavam espao nos discos rgidos que eram extremamente pequenos e caros. Os disquetes, muitas vezes, no comportavam totalmente arquivos maiores, principalmente programas de instalao. Isso obrigava a compactar o arquivo de forma dividida em vrios disquetes [COM 05]. Hoje, mesmo com grandes discos rgidos e gravadores de CDs a compactao continua sendo usada. A razo disso se explica no fato de o acesso de muitos computadores a redes, tanto pblicas quanto privadas, ser feito ainda por meios com baixa largura de banda onde a informao no pode ser muito elevada, como os modems domsticos usados para acessar internet e chegando a uma taxa de transmisso mxima de 56KBPS [COM 05].

Um cdigo compactado considerado timo quando as palavras-cdigo com maior probabilidade possuem menor tamanho. Nesse sentido, as duas palavras-cdigo de menor probabilidade possuem o mesmo tamanho e diferem somente no ultimo bit. A compresso pelo algoritmo de Huffman reduz o tamanho do cdigo usado para representar os smbolos de um alfabeto. Smbolos do alfabeto que ocorrem frequentemente so atribudos por cdigos mais curtos. O principal objetivo permitir ao tamanho do cdigo variar de carter para carter e de assegurar que o cdigo utilizado seja menor. O cdigo de Huffman considerado como um cdigo timo. 2 Codificao de huffman O cdigo de Huffman uma das melhores tcnicas de compresso atualmente utilizadas. uma forma de compresso de dados em que se representa cada um dos caracteres de um texto com cdigos binrios de comprimento varivel. O tamanho do cdigo varia conforme a frequncia com que ocorre no texto, atribuindo-se cdigos menores aos caracteres mais frequentes e maiores aos menos frequentes [MIL 02]. Este procedimento faz com que o cdigo resultante seja menor. Consideramos a seguinte frequncia de smbolos um a um arquivo: 10 vezes o smbolo a, 5 vezes o smbolo b e 1 vez o smbolo e. Neste caso o cdigo de Huffman seria a=1, b=01 e e=00 o qual resultaria no tamanho total de 22 bits (10x1 + 5x2 + 1x2 = 22). Caso no usssemos o menor cdigo para o smbolo de maior frequncia o tamanho do arquivo poderia ficar com 32 bits (a=00, b=01 e e=1 => 10x2 + 5x2 + 1x1 = 32), ou seja, haveria um acrscimo de 10 bits. A compresso de Huffman feita atravs da construo de uma rvore binria e relativamente simples. Consiste em fazer uma varredura no arquivo a fim de determinar a frequncia de ocorrncia dos smbolos no arquivo. criada uma lista ordenada e classificada pela frequncia que os smbolos aparecem. Os dois ltimos smbolos da lista so substitudos por um novo smbolo cuja probabilidade a soma dos dois smbolos usados. Ordena-se a rvore novamente e repete-se a operao de substituio recursivamente at ficar apenas um smbolo. A figura 2.1.1 ilustra este processo. Aps, o smbolo com probabilidade de 100% ser a raiz da rvore e seus filhos sero os dois smbolos que a formaram. Repete-se este mtodo at que todos os smbolos estejam presentes na rvore, onde os smbolos originais contidos no arquivo sero sempre folhas. A figura 2.1.2 mostra a construo desta rvore. O cdigo do dgito ser o caminho percorrido da raiz at a folha.

Figura 2.1.1 Construo da rvore de Huffman [ALH 05]

Figura 2.1.2 Construo da rvore de Huffman [ALH 05] Um dos problemas apresentados pelo cdigo de Huffman que o tamanho da rvore de Huffman proporcional ao nmero de smbolos e isto faz crescer o tamanho dos cdigos. Uma soluo para este problema eliminar os smbolos pouco frequentes da rvore. Esses smbolos so inseridos num conjunto chamado DIVERSOS e no tm codificao. Quando um desses smbolos aparece, emitido um smbolo DIVERSOS seguido do smbolo propriamente dito, sem compactao. Outra variante do cdigo de Huffman a Codificao de Huffman Adaptativa ou Huffman Adaptativo. Essa tcnica foi criada para que se pudesse usar a compresso de Huffman em casos em que no se conhecem as frequncias de ocorrncia de cada caractere no texto. Neste caso, devemos atualizar constantemente as frequncias (entrada) na rvore. Quando um carter a ser codificado j existe na rvore ele codificado de acordo com a sequencia de bits especificada. Quando um carter novo, ele enviado sem compresso para o destino. O codificador ento atualiza sua rvore para que seja incrementado o contador de ocorrncias do carter ou criado uma nova entrada na rvore. Este mtodo utilizado em aplicaes que envolvem transmisso de texto.

2.1 Decodificao do cdigo de Huffman

A decodificao do cdigo de Huffman mais simples que sua codificao. Primeiramente, escolhemos o primeiro bit do cdigo como bit corrente e descemos um nvel da rvore de Huffamn, a partir da raiz, de acordo com o valor do bit corrente (0 => filho esquerdo ou 1 => filho direito) e atribumos ao bit corrente do prximo bit da string de bits do cdigo a decodificar. Quando atingimos uma folha da rvore de Huffman, devemos fazer a substituio dos bits correspondentes trajetria at a folha pelo caractere contido nessa folha. Repetimos esses passos at que termine a string de bits do cdigo a decodificar. 3 Concluso O cdigo de Huffman com sua simplicidade, rapidez e auto-sincronismo usado principalmente na compactao onde permanece imbatvel, mas tambm, pode ser usado em outras reas como criptografia. Apesar de ser considerado um mtodo de compactao timo, o ideal na construo de um software compactador seria a combinao de outros mtodos, como a supresso de brancos e nulos e supresso de repeties a fim de melhorar as taxas de compactao. Referncias https://www.google.com.br/

You might also like