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