Skip to content

Heurísticas

Mais caro primeiro

A ideia desta heurística é não deixar nenhum objeto valioso para trás! Por isso vamos ser ganaciosos e pegar primeiro os objetos mais caros! Se um objeto valioso não couber passamos para os mais baratos e prosseguimos até examinar todos objetos.

Question

Qual é a complexidade computacional deste algoritmo? Ele é a melhor implementação possível?

Resposta

Se o algoritmo descrito em sua resposta anterior envolver ordenação, então ele tem complexidade \mathcal{O}(n\log n) e é o melhor possível sim (você consegue explicar por que?). Se você fez um loop duplo que procura pelo maior a cada iteração então seu algoritmo é \mathcal{O}(n^2).

Example

Agora que temos um algoritmo, crie uma implementação do programa acima.

Dicas:

  • C++ já possui um algoritmo de ordenação implementado no cabeçalho <algorithm>. Use-o.
  • Busque por ordenação indireta para entender como ordenar os três vetores ao mesmo tempo.
  • Pode ser conveniente organizar os dados usando struct.

Mais leve primeiro

Vamos testar uma abordagem oposta: quantidade agora é o foco. Por isso vamos ser práticos e pegar o maior número de objetos possível! Começaremos agora pelos objetos mais leves e vamos torcer para que a quantidade grande de objetos selecionados resulte em uma mochila com alto valor.

Question

Compare esta heurística com a da seção anterior levando em conta a complexidade computacional.

Question

Quais partes do programa da heurística anterior podem ser aproveitadas para implementar a descrita acima?

Example

Implemente agora a heurística do mais leve. Chame seu programa de mais_leve, mantendo também o código do anterior.

Analisando nossas heurísticas

Question

Crie uma entrada em que a heurística do mais valioso seja muito melhor que a do mais leve. Coloque no relatório as saídas de cada programa.

Question

Crie uma entrada em que a heurística do mais leve seja muito melhor que a do mais valioso. Coloque no relatório as saídas de cada programa.

Question

Com base nas suas respostas acima, em quais situações a heurística do mais valioso é melhor?

Question

Com base nas suas respostas acima, em quais situações a heurística do mais leve é melhor?

Question

Qual a complexidade computacional das abordagens?

Question

Quando uma é melhor que a outra?

Question

Alguma consegue obter o melhor valor possível?

Entrega do relatório para 21/03 as 23h59