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 />

Do outro lado, o caminho mais longo entre dois vértices v1 . . . vn não tem<br />

subestrutura ótima: o subcaminho v2 . . . vn, por exemplo, não precisa ser o<br />

caminho mais longo. Por exemplo no grafo<br />

i 1<br />

j<br />

1<br />

<br />

k<br />

<br />

o caminho mais longo entre i e j é ikj, mas o subcaminho kj não é o subcaminho<br />

mais longo entre k e j. ♦<br />

Para aplicar a <strong>de</strong>finição 4.1 temos que conhecer (i) o conjunto <strong>de</strong> subproblemas<br />

<strong>de</strong> um problema e (ii) provar, que uma solução ótima contém uma<br />

(sub-)solução que é ótima para um subproblema. Se sabemos como esten<strong>de</strong>r<br />

uma solução <strong>de</strong> um subproblema para uma solução <strong>de</strong> todo problema, a<br />

subestrutura ótima fornece um algoritmo genérico da forma<br />

Algoritmo 4.1 (Solução genérica <strong>de</strong> problemas com subestrutura ótima<br />

Entrada Uma instância I <strong>de</strong> um problema.<br />

Saída Uma solução ótima S ∗ <strong>de</strong> I.<br />

1 r e s o l v e (I ):=<br />

2 S ∗ := n i l { melhor solução }<br />

3 for todos subproblemas I ′ <strong>de</strong> I do<br />

4 S ′ := r e s o l v e (I ′ )<br />

5 esten<strong>de</strong> S ′ para uma s o l u ç ã o S <strong>de</strong> I<br />

6 i f S ′ é a melhor s o l u ç ã o then<br />

7 S ∗ := S<br />

8 end i f<br />

9 end for<br />

Informalmente, um algoritmo guloso é caracterizado por uma subestrutura<br />

ótima e a característica adicional, que po<strong>de</strong>mos escolher o subproblema que<br />

leva a solução ótima através <strong>de</strong> uma regra simples. Portanto, o algoritmo<br />

guloso evite resolver todos subproblemas.<br />

78<br />

1

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

Saved successfully!

Ooh no, something went wrong!