Wolfram Language

Algèbre et théorie des nombres

Résolvez le problème du sac à dos

La nouvelle fonction KnapsackSolve fournit une forme facile simple et convivial pour résoudre des problèmes d'optimisation combinatoire tels que le problème du sac à dos. Les problèmes de sac à dos apparaissent dans une grande variété de domaines, tels que les problèmes de coupe bidimensionnels et la budgétisation des immobilisations, et peuvent être utilisés pour construire des systèmes cryptographiques.

Ceci est une liste de courses dans laquelle chaque fruit est spécifié avec sa teneur en calories, le prix moyen et le nombre maximum.

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}|>;

Déterminez le nombre de fruits de chaque type qui maximise la teneur en calories pour une quantité donnée d'argent.

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

C'est la contribution calorique de chacun des types de fruits et le coût 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]=

C'est le coût pour chaque type de fruit et le coût 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]=

Exemples connexes

de en es ja ko pt-br ru zh