Wolfram Language

Álgebra e teoria dos números

Resolva o problema da mochila

A nova função KnapsackSolve permite que o usuário resolva de forma fácil problemas de otimização combinatória como o problema da mochila. O problema da mochila aparece em uma grande variedade de campos, como problemas de corte de duas dimensões e orçamento de capital, e pode também ser usado na construção de sistemas criptográficos.

Esta é uma lista de compras em que cada fruta é especificada juntamente com o seu teor calórico, preço médio e quantidade máxima.

In[1]:=
Click for copyable input
fruits = <| Entity["FoodType", "Apple"] -> {Quantity[91, "LargeCalories"], Quantity[2.36, "Euros"], 3}, Entity["FoodType", "Orange"] -> {Quantity[71, "LargeCalories"], Quantity[2.12, "Euros"], 3}, Entity["FoodType", "Banana"] -> {Quantity[105, "LargeCalories"], Quantity[1.89, "Euros"], 5}, Entity["FoodType", "Kiwi"] -> {Quantity[103, "LargeCalories"], Quantity[3.77, "Euros"], 10}, Entity["FoodType", "Pear"] -> {Quantity[96, "LargeCalories"], Quantity[2.87, "Euros"], 5}|>;

Determine o número de frutas de cada tipo que maximiza o conteúdo calórico para uma determinada quantidade de dinheiro.

In[2]:=
Click for copyable input
counts = KnapsackSolve[fruits, Quantity[25, "Euros"]]
Out[2]=

Esta é a contribuição calórica de cada um dos tipos de fruta e o total.

In[3]:=
Click for copyable input
fruits[[All, 1]] counts
Out[3]=
In[4]:=
Click for copyable input
fruits[[All, 1]] counts; Total[%]
Out[4]=

Este é o custo de cada tipo de fruta e o custo total.

In[5]:=
Click for copyable input
fruits[[All, 2]] counts
Out[5]=
In[6]:=
Click for copyable input
fruits[[All, 2]] counts; Total[%]
Out[6]=

Exemplos Relacionados

de en es fr ja ko ru zh