Skip to content

08 - Busca exaustiva

Pseudo-código

Vamos iniciar tentando escrever um algoritmo em pseudo-código para a seguinte ideia:

  • Iniciando com o objeto 0:
    • Não inclua ele na mochila: resolva o problema com o restante dos objetos e retorne esse resultado
    • Inclua ele na mochila: resolva o problema com o restante dos objetos e uma mochila de capacidade C - p[0]. Retorne o resultado + v[0].
    • Escolhe a melhor das duas opções acima e retorne.

Tip

Note que pedimos para resolver o problema de novo, mas com menos objetos. Parece que esse é um algoritmo recursivo!

Question

Escreva um algoritmo recursivo em pseudo-código para resolver o problema da mochila. Seu algoritmo deverá retornar o valor da mochila ótima, mas NÃO precisa ainda retornar a mochila que tem esse valor.

Question

Adapte seu algoritmo acima para, além de retornar a melhor solução, também retornar a mochila que tem esse valor.

Dica: pode ser útil passar um vetor para guardar a melhor solução encontrada.

Implementação

Vamos agora tentar implementar o algoritmo de busca global que fizemos.

Example

Implemente em C++ seu algoritmo acima.

Question

Teste o seu programa com a entrada in-aula.txt (que é a entrada dos slides). Você consegue agora responder à pergunta Existe mochila com valor maior que 13?

Fechamento

Question

Como você avalia os ganhos obtidos pela busca global em relação à busca local?