In diesem tutorial, früher haben wir diskutiert, Fractional Knapsack problem mit Gierigen Ansatz. Wir haben gezeigt, dass Gieriger Ansatz eine optimale Lösung für Fractional Knapsack gibt. Dieses Kapitel behandelt jedoch das 0-1 Knapsack-Problem und seine Analyse.
Im 0-1 Rucksack können Gegenstände nicht zerbrochen werden, was bedeutet, dass der Dieb den Gegenstand als Ganzes nehmen oder ihn verlassen sollte., Dies ist der Grund dafür, es als 0-1 Knapsack zu bezeichnen.
Daher kann bei 0-1 Knapsack der Wert von xi entweder 0 oder 1 sein, wobei andere Einschränkungen gleich bleiben.
0-1 Knapsack kann nicht durch gierigen Ansatz gelöst werden. Gieriger Ansatz gewährleistet keine optimale Lösung. In vielen Fällen kann gieriger Ansatz eine optimale Lösung geben.
Die folgenden Beispiele werden unsere Aussage begründen.
Beispiel-1
Betrachten wir, dass die Kapazität des Rucksacks W = 25 ist und die Elemente wie in der folgenden Tabelle gezeigt sind.,
Item | A | B | C | D |
---|---|---|---|---|
10 | 24 | 18 | 18 | 10 |
Gewicht | 24 | 10 | 10 | 7 |
Ohne Berücksichtigung des Gewinns pro Gewichtseinheit (pi/wi), wenn wir Gierigen Ansatz anwenden, um dieses Problem zu lösen, wird der erste Punkt A ausgewählt, da er maximalen Gewinn unter allen Elementen beiträgt.,
Nach Auswahl von Element A wird kein Element mehr ausgewählt. Daher beträgt der Gesamtgewinn für diesen gegebenen Satz von Elementen 24. Während die optimale Lösung durch Auswahl der Elemente B und C erreicht werden kann, wobei der Gesamtgewinn 18 + 18 = 36 beträgt.
Beispiel-2
Anstatt die Elemente basierend auf dem Gesamtvorteil auszuwählen, werden in diesem Beispiel die Elemente basierend auf dem Verhältnis pi / wi ausgewählt. Betrachten wir, dass die Kapazität des Rucksacks W = 60 ist und die Elemente wie in der folgenden Tabelle gezeigt sind.,
Item | A | B | C |
---|---|---|---|
Price | 100 | 280 | 120 |
Weight | 10 | 40 | 20 |
Ratio | 10 | 7 | 6 |
Using the Greedy approach, first item A is selected. Then, the next item B is chosen. Hence, the total profit is 100 + 280 = 380., Die optimale Lösung dieser Instanz kann jedoch durch Auswahl der Elemente B und C erreicht werden, wobei der Gesamtgewinn 280 + 120 = 400 beträgt.
Daher kann geschlossen werden, dass Gieriger Ansatz möglicherweise keine optimale Lösung bietet.
Um 0-1 Knapsack zu lösen, ist ein dynamischer Programmieransatz erforderlich.
Problemstellung
Ein Dieb raubt ein Geschäft aus und kann ein maximales Gewicht von W in seinen Rucksack tragen. Es gibt n Artikel und das Gewicht des ith-Artikels ist wi und der Gewinn der Auswahl dieses Artikels ist pi. Welche Gegenstände sollte der Dieb mitnehmen?,
Dynamic-Programming-Ansatz
Lass ich den höchsten nummerierte Element in eine optimale Lösung für S-W-US-Dollar. Dann ist S ‚ = S – {i} eine optimale Lösung für W-wi, und der Wert für die Lösung S ist Vi plus der Wert des Unterproblems.
Wir können diese Tatsache in der folgenden Formel ausdrücken: Definieren Sie c als Lösung für die Elemente 1,2, … , i und das maximale Gewicht w.,
Der Algorithmus nimmt folgende Eingaben vor
-
Das maximale Gewicht W
-
Die Anzahl der Elemente n
-
Die beiden Sequenzen v = <v1, v2, …, vn> und w = <w1, w2, …, wn>
Der Satz von Elementen kann aus der Tabelle abgeleitet werden, beginnend bei c und rückwärts verfolgen, woher die optimalen Werte kamen.
Analyse
Dieser Algorithmus nimmt θ(n, w) mal als Tabelle c hat (n + 1).(w + 1) Einträge, wobei jeder Eintrag θ (1) Zeit zum Berechnen benötigt.,