O documento descreve o algoritmo de Huffman para compressão de dados, incluindo a construção de uma árvore binária de Huffman e atribuição de códigos binários para representar símbolos. Um exemplo mostra como o algoritmo comprime uma mensagem de 23 bits para apenas 13 bits, reduzindo o tamanho total em aproximadamente 20%.
2. Algoritmo de Huffman?
Compressão de dados;
Técnicas estatísticas;
Conceitos básicos de Estrutura de Dados:
Lista com Prioridade;
Árvore Binária.
2
Complexidade de Algoritmos - Huffman
3. Algoritmo de Huffman?
Algumas aplicações:
JPEG;
MP3;
Zip.
Variações:
Codificação n-ária de Huffman;
Codificação Adaptativa de Huffman;
3
Complexidade de Algoritmos - Huffman
4. JPEG
Compressão:
Bloco Transformada Codificador Codificador
Quantizador
8x8px DCT R.L.E. Estatístico
Tabela de
Fator de Compressão Codificação
Imagem
Comprimida
Tabela de
Quantização
4
Complexidade de Algoritmos - Huffman
5. JPEG
Descompressão:
Imagem
Comprimida
Decodif. Decodif. Transformada Bloco
Desquantizador
Estatístico R.L.E. DCT Inversa 8x8px
Tabela de
Fator de Compressão
Codificação
Tabela de
Quantização
5
Complexidade de Algoritmos - Huffman
6. Exemplo de Codificação
Vamos codificar a mensagem:
“CASA PAPEL HOTEL PASTEL”
Tabela de frequências:
Letra Frequencia
C 1
A 4
S 2
P 3
E 3
L 3
H 1
O 1
T 2
Espaço 3
6
Complexidade de Algoritmos - Huffman
7. Exemplo de Codificação
Texto original: “CASA_PAPEL_HOTEL_PASTEL”
Texto codificado:
“000000010010000110010011000100110100010110010110
01111000010001011001001100010010100001000101”
Letra Código
C 0000
A 0001
23*4 = 92bits S 0010
P 0011
E 0100
L 0101
H 0110
O 0111
T 1000
Espaço 1001
7
Complexidade de Algoritmos - Huffman
8. Exemplo de Codificação
Lista com prioridade:
C A S P E L H O T Esp
1 4 2 3 3 3 1 1 2 3
Maior prioridade.
Lista com prioridade ordenada:
C H O S T P E L Esp A
1 1 1 2 2 3 3 3 3 4
8
Complexidade de Algoritmos - Huffman
9. Exemplo de Codificação
Construção da árvore:
C H O S T P E L Esp A
1 1 1 2 2 3 3 3 3 4
C+H O S T P E L Esp A
2 1 2 2 3 3 3 3 4
C H
9
Complexidade de Algoritmos - Huffman
10. Exemplo de Codificação
O S T C+H P E L Esp A
1 2 2 2 3 3 3 3 4
C H
T C+H P E L Esp O+S A
2 2 3 3 3 3 3 4
C H O S
10
Complexidade de Algoritmos - Huffman
11. Exemplo de Codificação
P E L Esp O+S A T+C+H
3 3 3 3 3 4 4
O S T 2
C H
P+E L+Esp O+S A T+C+H
6 6 3 4 4
P E L '' O S T 2
C H
11
Complexidade de Algoritmos - Huffman
12. Exemplo de Codificação
O+S A T+C+H P+E L+' '
3 4 4 6 6
O S T 2 P E L ''
C H
T+C+H P+E L+' ' O+S+A
4 6 6 7
T 2 P E L '' 3 A
C H O S
12
Complexidade de Algoritmos - Huffman
13. Exemplo de Codificação
L+' ' O+S+A T+C+H+P+E
6 7 10
L '' 3 A 4 6
O S T 2 P E
C H
13
Complexidade de Algoritmos - Huffman
14. Exemplo de Codificação
T+C+H+P+E L+' '+A+O+S
10 13
4 6 6 7
T 2 P E L '' 3 A
C H O S
14
Complexidade de Algoritmos - Huffman
15. Exemplo de Codificação
T+C+H+P+E+L+' '+A+O+S
23
10 13
4 6 6 7
T 2 P E L '' 3 A
C H O S
15
Complexidade de Algoritmos - Huffman
16. Exemplo de Codificação
Atribuição de código:
23
0 1 Letra Código
10 13
C 0010
0 1
0 1 A 111
S 1101
4 6 6 7
P 010
0 1 0 1 0 1 0 1 E 011
L 100
T 2 P E L '' 3 A H 0011
0 1 0 1 O 1100
T 000
C H O S Esp. 101
16
Complexidade de Algoritmos - Huffman
17. Exemplo de Codificação
Comparando o “antes” e o “depois”:
Texto original: “CASA_PAPEL_HOTEL_PASTEL”
Texto codificado (antes): Texto codificado (depois):
“00000001001000011001001 “001011111011111010101110
100010011010001011001011 100111001010011110000001
001111000010001011001001 110010101011111010000111
100010010100001000101” 00”
Tam. Total: 92bits Tam. Total: 74bits!!!!
Taxa de Compressão ~ 20%
17
Complexidade de Algoritmos - Huffman
18. Decodificação
Letra Código
Texto codificado: C 0010
A 111
“001011111011111
010101110100111
S 1101
Texto decodificado:
001010011110000
001110010101011
+ P
E
L
010
011
100
= “CASA_PAPEL_H
OTEL_PASTEL”
H 0011
11101000011100” O 1100
T 000
Esp. 101
18
Complexidade de Algoritmos - Huffman
19. Fontes Consultadas
Goodrich, M. T.; Tamassia, R.; Projeto de Algoritmos, Bookman, 2002;
Huffman, D. A.; Method for the Construction of Minimum-
Redundancy Codes, In: Proceedings of the Institute of Radio
Engineers, Vol. 40, Nr. 9 (September 1952) , p. 1098-1101.
http://www.cprogramming.com/tutorial/computersciencetheory/huffman.html
http://algs4.cs.princeton.edu/55compression/Huffman.java.html
http://www.ics.uci.edu/~dan/pubs/DC-Sec3.html
http://en.wikipedia.org/wiki/Huffman_coding
19
Complexidade de Algoritmos - Huffman