Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de...

23
3/6/2014 Ruy Luiz Milidiú 1 Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú

Transcript of Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de...

Page 1: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 1

Projeto e Análise de

Algoritmos

Prof. Ruy Luiz Milidiú

Page 2: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 2

Método do Guloso

Page 3: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 3

Resumo

Objetivo Apresentar e analisar algoritmos para o

problema dos códigos de redundância mínima

Sumário O problema

Algoritmo de Huffman

Aprimoramentos

Page 4: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 4

Compressão de dados

Símbolo Freq

A 60B 3C 5D 5E 20F 3G 1H 3

total 100

Qual a codificação mais curta para uma mensagem com estes 100 símbolos? 3 BITS = 8 símbolos 3 x 100 = 300 BITS

Page 5: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 5

Árvore de codificação

5D

3B

1G

4

9

3F

3H

6 5C

11

20 20E

40 60A

100 código

A 1 B 00010 C 0011 D 0000 E 01 F 00100 G 00011 H 00101

0 1

Page 6: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 6

Código de redundância Mínima

Entrada

a1, a2, … , an símbolos

f1, f2, … , fn freqüências

Saída

T árvore binária de codificação

c(T) = min { c(X) | X é AB de codificação }

c(X) = ifolhas(X) fi.li

Page 7: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 7

… guloso por MENOR FREQUENCIA

Símbolo Freq

A 60 B 3 C 5 D 5 E 20 F 3 G 1 H 3

total 100

3 1 3 3

4 6 5 5

9 11

20

40

100

60

20

Page 8: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 8

… guloso por MENOR

FREQUENCIA

Simbolo Frequencia Comprimento Custo

A 60 1 60

B 3 5 15

C 5 4 20

D 5 4 20

E 20 2 40

F 3 5 15

G 1 5 5

H 3 5 15

TOTAL 100 190

Page 9: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 9

Algoritmo de Huffman

L nós em ordem crescente de valor;

while |L| > 1

sejam x e y os dois nós de menor valor em L;

remova x e y de L;

crie um novo nó p, pai de x e y;

atribua a p a soma dos valores de x e y;

insira p em L;

return(raiz);

Page 10: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 10

Eficiência

Operação ordenar inserir

Esforço O(n.lg(n) ) linear

Ordenação O(n.lg(n))

Inserção de nó O(k) k=n-1,…,1

(n-1) + (n-2) + … + 1 = (n-1).n/2

O(n.lg(n)) + O(n2)

Page 11: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 11

Melhoria I

Nós internos são criados

em ordem crescente de valor.

Dem.: exercício

Aplicação

PILHA para folhas ordenadas

FILA para nós internos

Page 12: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 12

Eficiência

Operação ordenar inserir

Esforço O(n.lg(n) ) O(1)

Ordenação O(n.lg(n))

Inserção de nó O(n)

O(n.lg(n)) + O(n)

Page 13: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 13

Corretude: caso base

Existe uma árvore ótima onde…

pelo menos dois nós externos tem a altura da

árvore

os dois símbolos de menor freqüência tem a

altura da árvore maior comprimento

os dois símbolos de menor freqüência tem o

mesmo nó pai diferem no último bit

DEM.: por balanceamento algébrico !

Page 14: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 14

Corretude: passo indutivo

min 60.l1+20.l2+5.l3+5.l4+3.l5+3.l6+3.l7+1.l8

l7 = l8

min 60.l1+20.l2+5.l3+5.l4+3.l5+3.l6+(3+1).l7

l7 = 1+ lPAI(7,8)

min 60.l1+20.l2+5.l3+5.l4+3.l5+3.l6+4.lPAI(7,8)+4

equivale a

min 60.l1+20.l2+5.l3+5.l4+3.l5+3.l6+4.lPAI(7,8)

Page 15: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 15

Melhoria II

Permutar subárvores do mesmo nível

não altera a altura das folhas.

Dem.: exercício

Árvores Canônicas

Nós internos a esquerda das folhas.

Representação

quantidade de nós internos (ou externos) por nível

Page 16: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 16

De internos para externos...

Nível Internos Total Externos

0 1

1 2

2 1

3 0

1 0

2.1

2.2

2.1

0

3

2

Page 17: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 17

De externos para internos...

Nível Externos Total Internos

0 0

1 0

2 3

3 2

1 2/2

2

4

2

4/2

2/2

0

Page 18: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 18

Árvore canônica

Nível Internos

0 1

1 2

2 1

3 0 000 001

00 01

0

10 11

1

o 1

Page 19: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 19

Construção

5 5 7 8 11 5 5 7 8 11 10 7 8 11 10 7 8 11 10 15 11 10 15 11 III 15 21 III 15 21 III IV IV 36 III IV IV 0 III IV IV 0 III IV 1 0 III 1 1 0 III 1 1 0 2 1 1 0

I II III IV V

III IV 1 0

36

15 21

10 7 8

5 5

11

I

III II

IV

Page 20: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 20

Padrões de intercalação

5D

3B

1G

4

9

3F

3H

6 5C

11

20 20E

40 60A

100

Arquivo Tamanho

A 60B 3C 5D 5E 20F 3G 1H 3

total 100

Page 21: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 21

Padrões de intercalação

Entrada

n arquivos ordenados

ri número de registros no arquivo i, i=1,…,n

Saída

AB de intercalação que MINIMIZA o esforço total de intercalação dos n arquivos dados

Page 22: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 22

Custo Total de Intercalação

Custo de uma intercalação

soma dos tamanhos dos dois arquivos

Custo Total

ou somar os custos de cada intercalação

soma dos valores dos nós internos

ou somar { tamanho_do_arquivo x número_de_intercalações_em_que_o_arquivo_participa }

soma ponderada das alturas das folhas

Page 23: Projeto e Análise de Algoritmos - milidiu/inf2926/aulas/modulo1/A13huffman.pdf · Algoritmo de Huffman Aprimoramentos . 3/6/2014 Ruy Luiz Milidiú 4 Compressão de dados Símbolo

3/6/2014 Ruy Luiz Milidiú 23

Solução

AB de intercalação mínima

AB de codificação ótima

Solução Gulosa

Algoritmo de Huffman