Você está na página 1de 16

Codificação

 de  Huffman  
O  que  é?  
 
É   um   método   de   compactação   que   usa   as  
probabilidades   de   ocorrência   dos   símbolos   no  
conjunto   de   dados   a   ser   compactado   para  
determinar   códigos   de   tamanho   variável   para  
cada  símbolo.    

3  
Codificação  de  Huffman  
ObjeJvo  
 
Tem   por   objeDvo   a   construção   de   uma   árvore  
binária    baseada  na  frequência  de  uso  das  letras  
do   alfabeto     de   modo   que   as   mais  
frequentemente  uDlizadas  apareçam    mais  perto  
da  raiz.  

4  
Codificação  de  Huffman  
ObjeJvo  
 
Esta   árvore   binária   é   construída   da   baixo   para  
cima  (das  folhas  para  a  raiz)  ,  começando  a  parDr  
das  letras  menos  usadas  até    aDngir  a  raiz.  

5  
Codificação  de  Huffman  
Etapas  
 
•     Cálculo  da  frequência  de  cada  caracter  no  arquivo  

•     Execução  do  algoritmo  de  Huffman  para  construção            


de  uma  árvore  binária  (árvore  de  Huffman)  
 
•     Codificação  Propriamente  dita    

6  
Codificação  de  Huffman  
Como  Funciona  
 
No   início   do   algorítmo,   cada   uma   das   letras   forma    
uma   árvore   que   é   composta   apenas   pela   raiz   e   cujo  
conteúdo  é  a  frequência  com  que  esta  letra    ocorre  no  
texto  em  questão.  
Em   seguida,   são   escolhidas   as   duas   árvores     com   as  
menores  frequências  associadas  e  elas  são  unidas  em  
uma  só  árvore  cujo  valor    da  raíz    é  a  soma  do  valor  
destas  duas.    Este  processo  é  repeDdo  até  a  existência  
de  uma  única  árvore.    
7  
Codificação  de  Huffman    
(exemplo)  
 
Sequência   de   c aracteres:  
FAAFEEEAAAAEEEECCAAAAAAAAACFFCCAAAACCCBAAAB  
                                                                                                                           
BBBAAAAAAAADDDDBBBBBBDDDDAAAAAADDDDDDAAA  
                                                                                                                           AEE  
Caracteres:  FECBDA  
 
   
Frequência:  5  9  12  13  16  45  (respecDvamente)  
 
 
                           Dados  iniciais  ordenados  por  frequencia  de  ocorrência  
 
 
 
 
F   E   C   B   D   A  
5   9   12   13   16   45  

8  
Codificação  de  Huffman    
(exemplo)  

F   E   C   B   D   A  
5   9   12   13   16   45  

C   B   D   A  
14  
12   13   16   45  

F   E  
5   9  
9  
Codificação  de  Huffman    
(exemplo)  

C   B   D   A  
14  
12   13   16   45  

F   E  
5   9  

D   A  
25   14  
16   45  

C   B   F   E  
12   13   5   9   10  
Codificação  de  Huffman    
(exemplo)  

D   A  
14   25  
16   45  

F   E   C   B  
5   9   12   13  

11  
Codificação  de  Huffman    
(exemplo)  

A  
30   25  
45  

D   C   B  
14  
16   12   13  

F   E  
5   9  

12  
Codificação  de  Huffman    
(exemplo)  

A  
55  
45  

25   30  

C   B   D  
14  
12   13   16  
13  

F   E  
5   9   13  
Codificação  de  Huffman    
(exemplo)  
100  

A  
55  
45  

25   30  

C   B   D  
14  
12   13   16  

F   E  
5   9   14  
Codificação  de  Huffman    
(Codificação)  
 
A  tabela  de  codificação  resultante  
   
 
  Caracter     Huffman  
A   0  
 
C   100  
B   101  
D   111  
F   1100  
E   1101  

15  
Codificação  de  Huffman    
(Codificação)  
 
A  tabela  de  codificação  resultante  
   
 
  Caracter     Huffman   ASCII  
A   0   0100  0001  
 
C   100   0100  0011  
B   101   0100  0010  
D   111   0100  0100  
F   1100   0100  0110  
E   1101   0100  0101  

16  
Codificação  de  Huffman    
Comparação  entre  a  sequência  de  caracteres  propostas  uJlizando  a  codificação    
ASCII  (8  bits)  e  uJlizando  a  codificação  de  Huffman.  
 
Sem  compactação  (ASCII)  
 
 
010001100100000101000001010001100100010101000101010001010100000101000001010000010100000
101000101010001010100010101000101010000110100001101000001010000010100000101000001010000
010100000101000001010000010100000101000011010001100100011001000011010000110100000101000
001010000010100000101000011010000110100001101000010010000010100000101000001010000100100
001001000010010001001000001010000010100000101000001010000010100000101000001010000010100
100010001000100010001000100010000100100001001000010010000100100001001000010010001000100
010001000100010001000100000101000001010000010100000101000001010000010100010001000100010
00100010001000100010001000100010000010100000101000001010000010100010101000101  
 
Com  compactação  
 
1100001100110111011101000011011101110111011001000000000001001100110010010000001001001001
0100010110110110100000000111111111111101101101101101101111111111111000000111111111111111
111000011011101    
 
 
  17  
Codificação  de  Huffman    
 
 
Decodificação  
 
Para   decodificar   uma   mensagem   obDda,   basta   ir  
uDlizando   cada   bit   da   mensagem   para   percorrer   a  
arvore   de   Huffman   desde   a   raiz   até   alguma   folha,  
quando  se  obtém  o  símbolo  decodificado.  Volte  então  
para   a   raiz   e   conDnue   a   percorrer   a   árvore   para  
decodificar  o  próximo  símbolo.    
 

18  

Você também pode gostar