Upload
lamdieu
View
230
Download
0
Embed Size (px)
Citation preview
3/6/2014 Ruy Luiz Milidiú 1
Projeto e Análise de
Algoritmos
Prof. Ruy Luiz Milidiú
3/6/2014 Ruy Luiz Milidiú 2
Método do Guloso
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
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
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
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
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
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
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);
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)
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
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)
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 !
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)
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
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
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
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
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
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
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
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
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