Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Objetivo:
Objetivo:
1. minimizar espao de memria utilizado;
Objetivo:
1. minimizar espao de memria utilizado;
2. minimizar custo da transmisso dos arquivos na rede ou
tempo de leitura do arquivo no disco;
Objetivo:
1. minimizar espao de memria utilizado;
2. minimizar custo da transmisso dos arquivos na rede ou
tempo de leitura do arquivo no disco;
3. minimizar tempo de pesquisa no arquivo.
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
3B1E4A2F5H1C1B2M1A3L1C2D7B2C
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
3B1E4A2F5H1C1B2M1A3L1C2D7B2C
3BE4A2F5HCB2MA3LC2D7B2C
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
3B1E4A2F5H1C1B2M1A3L1C2D7B2C
3BE4A2F5HCB2MA3LC2D7B2C
texto no pode ter caracteres numricos;
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
3B1E4A2F5H1C1B2M1A3L1C2D7B2C
3BE4A2F5HCB2MA3LC2D7B2C
texto no pode ter caracteres numricos;
smbolos e frequncias;
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
3B1E4A2F5H1C1B2M1A3L1C2D7B2C
3BE4A2F5HCB2MA3LC2D7B2C
texto no pode ter caracteres numricos;
smbolos e frequncias;
AAA33333BA6666888DDDDDDD99999999999AABBB
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
3B1E4A2F5H1C1B2M1A3L1C2D7B2C
3BE4A2F5HCB2MA3LC2D7B2C
texto no pode ter caracteres numricos;
smbolos e frequncias;
AAA33333BA6666888DDDDDDD99999999999AABBB
3A5@3BA4@63@87D11@92A3B
Algoritmo de Huffman
proposto em 1952;
Algoritmo de Huffman
proposto em 1952;
frequncias altas;
Algoritmo de Huffman
proposto em 1952;
frequncias altas;
Algoritmo de Huffman
proposto em 1952;
frequncias altas;
60%;
Algoritmo de Huffman
Algoritmo de Huffman
Algoritmo de Huffman
Algoritmo de Huffman
de prefixo;
Algoritmo de Huffman
de prefixo;
Algoritmo de Huffman
de prefixo;
Algoritmo de Huffman
de prefixo;
codificao e decodificao;
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
011
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
011 0101
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
s1:00
s2:0100 0
s3:0101 s1
s4:011
s5:1
s5
1
0
s4
0
s2
s3
Algoritmo de Huffman
Algoritmo de Huffman
Para 0110101010100010100011100010101010101
Algoritmo de Huffman
Para 0110101010100010100011100010101010101
Algoritmo de Huffman
Para 0110101010100010100011100010101010101
Algoritmo de Huffman
Algoritmo de Huffman
21
0
s1:101 s3
12
s2:111
0
1
s3:0
5
7
s4:110
0
1
0
1
s5:100
s5 s1 s4 s2
f1:3
f2:4
f3:9
f4:3
f5:2
Algoritmo de Huffman
21
0
s1:101 s3
12
s2:111
0
1
s3:0
5
7
s4:110
0
1
0
1
s5:100
s5 s1 s4 s2
f1:3
f2:4
f3:9
f4:3
f5:2
s4 s3 s3 s1 s3 s1 s4 s5 s1 s3 s3 s3 s3 s3 s2 s3 s5 s2 s2 s2 s4 produz
Algoritmo de Huffman
21
0
s1:101 s3
12
s2:111
0
1
s3:0
5
7
s4:110
0
1
0
1
s5:100
s5 s1 s4 s2
f1:3
f2:4
f3:9
f4:3
f5:2
s4 s3 s3 s1 s3 s1 s4 s5 s1 s3 s3 s3 s3 s3 s2 s3 s5 s2 s2 s2 s4 produz
110001010101110100101000001110100111111111110
Algoritmo de Huffman
21
0
s1:101 s3
12
s2:111
0
1
s3:0
5
7
s4:110
0
1
0
1
s5:100
s5 s1 s4 s2
f1:3
f2:4
f3:9
f4:3
f5:2
s4 s3 s3 s1 s3 s1 s4 s5 s1 s3 s3 s3 s3 s3 s2 s3 s5 s2 s2 s2 s4 produz
110001010101110100101000001110100111111111110
que tem c(T ) = 45 e que mnima.
f(T)
f(T")
T"
f(T)
f(T")
T"
f(T)+f(T")
=
T
T"
s1 s2 s3 s4 s5
s1 s2 s3 s4 s5
s2 s3 s4
5
0
s1 s5
s1 s2 s3 s4 s5
s2 s3 s4
5
0
s1 s5
5
0
s3
7
1
s1 s5
s4 s2
5
0
s3
7
1
s1 s5
s4 s2
5
0
s3
7
1
s1 s5
s4 s2
s3
12
0
5
0
7
1
s1 s5
s4 s2
s3
12
0
5
0
7
1
s1 s5
s4 s2
s3
12
0
5
0
7
1
s1 s5
s4 s2
21
0
s3
12
0
5
0
7
1
s1 s5
s4 s2
1
2
3
4
inserir(T , f , F ):
F [n + 1] T
n++
subir(n)
1
2
3
4
inserir(T , f , F ):
F [n + 1] T
n++
subir(n)
1
2
3
4
5
6
subir(i):
j = bi/2c
se j 1 ento
se T [i] < T [j] ento
T [i] T [j]
subir(j)
1
2
3
4
1
2
3
4
5
6
inserir(T , f , F ):
F [n + 1] T
n++
subir(n)
subir(i):
j = bi/2c
se j 1 ento
se T [i] < T [j] ento
T [i] T [j]
subir(j)
inserir(T , f , F ) e
subir(i): mtodos de
lista de prioridades
implementada por
heap;
minimo(T , f , F ):
se n 6= 0 ento
remove T [1]
T [1] T [n]
n- descer(1, n)
minimo(T , f , F ):
se n 6= 0 ento
remove T [1]
T [1] T [n]
n- descer(1, n)
1
2
3
4
5
6
7
8
9
descer(i, n):
j =2i
se j n ento
se j < n ento
se T [j + 1] < T [j] ento
j =j +1
se T [i] > T [j] ento
T [i] T [j]
descer(j, n)
1
2
3
4
5
6
7
8
9
minimo(T , f , F ):
se n 6= 0 ento
remove T [1]
T [1] T [n]
n- descer(1, n)
descer(i, n):
j =2i
se j n ento
se j < n ento
se T [j + 1] < T [j] ento
j =j +1
se T [i] > T [j] ento
T [i] T [j]
descer(j, n)
minimo(T , f , F ) e
descer(1, n): mtodos
de lista de prioridades
implementada por
heap;
Algoritmo de Huffman
1 huffman():
2
para i 1 at n 1 faa
3
minimo(T 0 , f , F );
4
minimo(T 00 , f , F );
5
T T 0 T 00 ;
6
f (T ) f (T 0 ) f (T 00 );
7
inserir (T , f , F );
Algoritmo de Huffman
1 huffman():
2
para i 1 at n 1 faa
3
minimo(T 0 , f , F );
4
minimo(T 00 , f , F );
5
T T 0 T 00 ;
6
f (T ) f (T 0 ) f (T 00 );
7
inserir (T , f , F );
Operao de
minimizao ou
incluso na lista de
prioridades: O(log n);
Algoritmo de Huffman
1 huffman():
2
para i 1 at n 1 faa
3
minimo(T 0 , f , F );
4
minimo(T 00 , f , F );
5
T T 0 T 00 ;
6
f (T ) f (T 0 ) f (T 00 );
7
inserir (T , f , F );
Operao de
minimizao ou
incluso na lista de
prioridades: O(log n);
operao requer
nmero constante de
passos;
Algoritmo de Huffman
1 huffman():
2
para i 1 at n 1 faa
3
minimo(T 0 , f , F );
4
minimo(T 00 , f , F );
5
T T 0 T 00 ;
6
f (T ) f (T 0 ) f (T 00 );
7
inserir (T , f , F );
Operao de
minimizao ou
incluso na lista de
prioridades: O(log n);
operao requer
nmero constante de
passos;
Total de n 1
iteraes;
Algoritmo de Huffman
1 huffman():
2
para i 1 at n 1 faa
3
minimo(T 0 , f , F );
4
minimo(T 00 , f , F );
5
T T 0 T 00 ;
6
f (T ) f (T 0 ) f (T 00 );
7
inserir (T , f , F );
Operao de
minimizao ou
incluso na lista de
prioridades: O(log n);
operao requer
nmero constante de
passos;
Total de n 1
iteraes;
Complexidade:
O(n log n);
Exerccios
Bibliografia
Perguntas?