13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

4. <strong>Algoritmos</strong> gulosos<br />

A abordagem gulosa<br />

1 for i:=1, . . . , n do<br />

2 ci := ⌊s/vi⌋<br />

3 s := s − civi<br />

4 end for<br />

Exemplo<br />

Exemplo 4.1<br />

Com v1 = 500, v2 = 100, v3 = 25, v4 = 10, v5 = 1 e s = 3.14, obtemos<br />

c1 = 0, c2 = 3, c3 = 0, c4 = 1, c5 = 4.<br />

Com v1 = 300, v2 = 157, v3 = 1, obtemos v1 = 1, v2 = 0, v3 = 14.<br />

No segundo exemplo, existe uma solução melhor: v1 = 0, v2 = 2, v3 = 0.<br />

No primeiro exemplo, parece que a abordagem gulosa acha a melhor solução.<br />

Qual a diferença? ♦<br />

Uma condição simples é que todos valores maiores são múltiplos inteiros dos<br />

menores; essa condição não é necessária, porque o algoritmo guloso também<br />

acha soluções para outros sistemas <strong>de</strong> moedas, por exemplo no primeiro sistema<br />

do exemplo acima.<br />

Lema 4.1<br />

A solução do algoritmo guloso é a única que satisfaz<br />

<br />

i∈[m,n]<br />

civi < vm−1<br />

para m ∈ [2, n]. (Ela é chamada a solução canônica.)<br />

Proposição 4.1<br />

Se vi+1|vi para 1 ≤ i < n a solução gulosa é mínima.<br />

Prova. Sejam os divisores vi = fivi+1 com fi ≥ 2 para 1 ≤ i < n e <strong>de</strong>fine<br />

fn = vn = 1. Logo cada valor tem a representação vi = fifi+1fi+2 · · · fn.<br />

Seja c1, . . . , cn uma solução mínima. A contribuição <strong>de</strong> cada valor satisfaz<br />

civi < vi−1 senão seria possível <strong>de</strong> substituir fi−1 unida<strong>de</strong>s <strong>de</strong> vi para uma<br />

<strong>de</strong> vi−1, uma contradição com a minimalida<strong>de</strong> da solução (observe que isso<br />

somente é possível porque os fi são números inteiros; senão o resto <strong>de</strong>pois da<br />

substituição po<strong>de</strong> ser fracional e tem quer ser distribuído pelos valores menores<br />

76

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!