Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos Gulosos
o o
tima. Neste caso o
Para alguns problema escolhas gulosas fornecem a soluca
o o
tima.
algoritmo e simples, mas precisamos provar que fornece a soluca
o gulosa e o
tima, provamos as 2 propriedades abaixo:
Para mostrar que a soluca
tima: qualquer soluca
o o
tima contem a
1) O problema tem subestrutura o
o o
tima de seus subproblemas. Ou seja, podemos construir uma soluca
soluca
o
o
tima utilizando as soluco
es o
timas dos subproblemas.
o
tima: existe soluca
o o
tima que faz a 1a escolha gulosa.
2) Escolha gulosa e
o no tamanho do problema.
Corretude: induca
Caso base: resolvido com uma escolha gulosa.
o o guloso e o
timo para problemas menores.
Por hip
otese de induca
Seja a a 1a escolha gulosa, e S o subproblema resultante da 1a escolha gulosa.
o o
tima O para S.
Por hip
otese o guloso fornece soluca
tima, O {a} e soluca
o o
tima do problema.
Pela subestrutura o
11.2
ESCALONAMENTO_INTERVALOS(s[],f[],n):
ordene os intervalos em ordem crescente do vetor f.
S <- {1}
ultimo <- 1
para i <- 2 at
e n
se s[i] >= f[ultimo]
S <- S U {i}
ultimo <- i
retorne S
T (n) = (n lg n + n) = (n lg n).
11.3
tima
Exemplos sem subestrutura o
Escalonamento de intervalos
Subproblema 1: ap
os escolher a, removemos do problema o intervalo a e todos
os intervalos n
ao compatveis com a.
Subproblema 2: ap
os escolher a, removemos do problema o intervalo a.
o esquecemos de remover os incompatveis.
Na 2a definica
1
|_______|
2 |___________|
3
|_____|
4
|____________|
o o
tima O = {1, 3, 4}. Ent
Soluca
ao, O {1} = {3, 4}.
o o
tima O = S.
Subproblema ap
os a escolha de 1: S = {2, 3, 4} com soluca
o o
tima com O e 1, pois 1 e 2 s
N
ao podemos construir soluca
ao incompatveis.
Exerccio:
(hot
eis) Voce far
a uma viagem de L km, e deseja fazer o menor n
umero de
es dos possveis hoteis s
paradas em hoteis. As posico
ao fornecidas no vetor
x[1..n] (em ordem crescente). N
ao e permitido viajar mais de D km sem fazer
o 0. Assuma que a dist
uma parada. A viagem comeca na posica
ancia entre hoteis
consecutivos e no m
aximo D, x[1] D e x[n] = L.
o gulosa e o
tima, apresente pseuForneca algoritmo guloso: prove que a soluca
doc
odigo e sua complexidade de tempo.
Captulo 12
tima
Algoritmos Gulosos: escolha gulosa o
12.1
4
2
9
4.5
W=10
71
i
1
2 3
4 W=10
p
6
3 4
2
v
30 14 16
9
v/p 5 4.7 4 4.5
SOL. GULOSA: 6 do 1, 3 do 2 e 1 do 4 = 30+14+9/2=48,5
MOCHILA_FRACIONARIO(V[],P[],n,W):
ordene os itens em ordem decrescente V[i]/P[i].
v <- 0
S <- {}
para i <- 1 at
e n
d <- min{W, P[i]}
v <- v + d*V[i]/P[i]
S <- S U {(i,d)}
W <- W - d
se W = 0, retorne (v,S)
retorne (v,S)
T (n) = (n lg n + n) = (n lg n).
o no Cormen ou Vazirani).
Exerccio para casa: C
odigos de Huffman (soluca
Slides: 21 - 29.
Escolha gulosa: Coloque os dois n
os x e y com menor custo como irm
ao, remova
estes n
os, e crie um novo n
o z com frequencia f (z) = f (x) + f (y).
T
x
y
y
x