Wolfram Language

Algebra und Zahlentheorie

Lösen Sie das Rucksackproblem

Die neue Funktion KnapsackSolve ermöglicht die einfache und benutzerfreundliche Lösung kombinatorischer Optimierungsprobleme wie das Rucksackproblem. Rucksackprobleme kommen in einer Vielzahl von Feldern vor, wie beim zweidimensionalen Zuschnittproblem und bei der Investitionsrechnung, und können zum Erstellen von Kryptosystemen verwendet werden.

Dies ist eine Einkaufsliste, auf der jede Frucht gemeinsam mit ihrem Kaloriengehalt, durchschnittlichem Preis und maximaler Stückzahl angegeben ist.

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

Bestimmen Sie die Stückzahl pro Frucht, die den maximalen Kaloriengehalt für einen bestimmten Geldbetrag ergibt.

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

Dies ist der Kaloriengehalt der einzelnen Früchte sowie der Gesamtbetrag.

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]=
In[5]:=
Click for copyable input
$Failed

Dies sind die Kosten pro Frucht sowie die Gesamtkosten.

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

Verwandte Beispiele

en es fr ja ko pt-br ru zh