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.

5. Programação dinâmica<br />

O algoritmo possui <strong>complexida<strong>de</strong></strong> <strong>de</strong> tempo e espaço O(mn), sendo que o<br />

espaço são duas matrizes P e M. O espaço po<strong>de</strong> ser reduzido para O(min{n, m})<br />

usando uma adaptação do algoritmo <strong>de</strong> Hirschberg.<br />

5.3. Problema da Mochila<br />

Mochila (ingl. Knapsack)<br />

Instância Um conjunto <strong>de</strong> n itens com valores vi e peso wi, 1 ≤ i ≤ n, e<br />

um limite <strong>de</strong> peso da mochila W .<br />

Solução Um subconjunto S ⊆ [1, n] que cabe na mochila, i.e. <br />

i∈S wi ≤<br />

W .<br />

Objetivo Maximizar o valor total <br />

i∈S vi dos itens selecionados.<br />

Idéia: Ou item i faz parte da solução ótima com itens i . . . n ou não.<br />

• Caso sim: temos uma solução com valor vi a mais do que a solução ótima<br />

para itens i + 1, . . . , n com capacida<strong>de</strong> restante W − wi.<br />

• Caso não: temos um valor correspon<strong>de</strong>nte à solução ótima para itens<br />

i + 1, . . . , n com capacida<strong>de</strong> W .<br />

Seja M(i, w) o valor da solução máxima para itens em [i, n] e capacida<strong>de</strong> W .<br />

A idéia acima <strong>de</strong>fine uma recorrência<br />

⎧<br />

⎪⎨ 0 se i > n ou w = 0<br />

M(i, w) = M(i + 1, w)<br />

⎪⎩<br />

max{M(i + 1, w), M(i + 1, w − wi) + vi}<br />

se wi > w não cabe<br />

se wi ≤ w<br />

A solução <strong>de</strong>sejada é M(n, W ). Para <strong>de</strong>terminar a seleção <strong>de</strong> itens:<br />

Mochila máxima (Knapsack)<br />

108<br />

• Seja S ∗ (k, v) a solução <strong>de</strong> tamanho menor entre todas soluções que<br />

– usam somente itens S ⊆ [1, k] e<br />

– tem valor exatamente v.

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

Saved successfully!

Ooh no, something went wrong!