Problema da mochila: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Linha 121:
para w = 1 até W:
se <math>w_{j} > w</math>
se<math> K(w,j-1)</math>< <math>K(w – wjw_{j}, j – 1)</math> +<math> v_{j}</math> :
<math>KEEP(w,j)= 1</math>
 
<code>Inicializar inteiro item = n</code>
Inicializar int remaning_weight = W
 
<code>Inicializar intlista remaning_weightsolução = W</code>vazio
<code> para item maior que zero:</code>
 
<code>            se keep(remaning_weight,item) = 1:</code>
<code>Inicializar lista solução = vazio</code>
      remaning_weight= remaning_weight – w(item)</code>
 
adicione item a lista solução</code>
<code> para item maior que zero:</code>
<code>                        item = item – 1</code>
 
<code>Retorne Solução</code>
<code>            se keep(remaning_weight,item) = 1:</code>
 
<code>                        remaning_weight
= remaning_weight – w(item)</code>
 
<code>                        adicione
item a lista solução</code>
 
<code>                        item = item – 1</code>
 
<code>Retorne Solução</code>
=== Solução usando Backtracking ===
Backtracking é um algoritmo refinado da busca por força bruta (ou enumeração exaustiva), no qual boa parte das soluções podem ser eliminadas sem serem explicitamente examinadas. É uma estratégia que se aplica em problemas cuja solução pode ser definida a partir de uma seqüência de n decisões, que podem ser modeladas por uma árvore que representa todas as possíveis seqüências de decisão. De fato, se existir mais de uma disponível para cada uma das n decisões, a busca exaustiva da árvore é exponencial. A eficiência desta estratégia depende da possibilidade de limitar a busca, ou seja, podar a árvore, eliminando os ramos que não levam a solução desejada.