08.02.2015 Views

Programação Linear (e rudimentos de otimização não-linear)

Programação Linear (e rudimentos de otimização não-linear)

Programação Linear (e rudimentos de otimização não-linear)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

132 CAPÍTULO 9. CONTROLE DISCRETO<br />

para qualquer i).<br />

Se sabemos o valor máximo que conseguimos acomodar na mochila<br />

usando apenas os i − 1 primeiros itens, po<strong>de</strong>mos calcular o valor máximo<br />

usando também o i-ésimo item. Se o novo item “cabe” em alguma das<br />

soluções “ótimas para capacida<strong>de</strong> k” anteriores, temos uma nova solução.<br />

A seguinte equação recursiva expressa este método.<br />

m i,k = max {m i−1,k , m i−1,k−wi + v i }<br />

Começamos com m i,0 = m 0,k = 0, para todo i e k. Os valores para os m i,j<br />

po<strong>de</strong>m ser obtidos por programação dinâmica, e o valor ótimo é m n,C . O<br />

algoritmo para <strong>de</strong>terminar m n,C é mostrado a seguir.<br />

mochila (v, w, C):<br />

m i,0 ← 0<br />

m 0,k ← 0<br />

para i <strong>de</strong> 1 a n:<br />

para k <strong>de</strong> 1 a C:<br />

se w i ≤ k: // item i cabe<br />

m i,k ← max {m i−1,k , m i−1,k−wi + v i }<br />

sen ão:<br />

m i,k ← m i−1,k<br />

retorne m n,C<br />

O algoritmo tem complexida<strong>de</strong> <strong>de</strong> tempo O(nC). O tamanho <strong>de</strong> C é<br />

codificado em bits, portanto a complexida<strong>de</strong> é O(2 k ), on<strong>de</strong> k é o número<br />

<strong>de</strong> bits usado para representar C.<br />

Exemplo 9.1. Suponha que os pesos, valores e a capacida<strong>de</strong> sejam w, v e<br />

C dados a seguir.<br />

w = ( 3 1 4 2 )<br />

v = ( 4 3 8 2 )<br />

C =8<br />

A tabela com os m i,k mostra o valor ótimo <strong>de</strong> 15.<br />

0 1 2 3 4 5 6 7 8<br />

0 0 0 0 0 0 0 0 0 0<br />

1 0 0 0 4 4 4 4 4 4<br />

2 0 3 3 4 7 7 7 7 7<br />

3 0 3 3 4 8 11 11 12 15<br />

4 0 3 3 4 8 11 11 12 15<br />

Versão Preliminar<br />

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

Saved successfully!

Ooh no, something went wrong!