Você está na página 1de 19

Complexidade de Algoritmos

Huffman

Denilson Grosa
Fernando Kaway
Helder Cesar

1
Complexidade de Algoritmos - Huffman
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Você também pode gostar