Für eine Reihe von Artikeln mit Werten und Gewichte , und mit einem Gesamtgewicht die unsere Tasche tragen kann, wie erreichen wir den maximalen Gesamtwert, ohne die Tasche zu beschädigen? Dantzig schlug vor, dass wir das Verhältnis betrachten , und fügen Sie Artikel hinzu, für die dieses Verhältnis am größten ist, bis der Beutel voll ist. Dies wird jedoch als Näherungslösung angesehen.
Über dieses Problem habe ich auch schon nachgedacht. Ich bin auf die gleiche Lösung wie Dantzig gekommen und habe sie sogar für die bewiesen Problem. Natürlich war ich meinem Beweis gegenüber misstrauisch, noch bevor ich wusste, dass die Methode schon einmal vorgeschlagen worden war (da dies implizieren würde ). Ich bin jetzt noch misstrauischer.
Also erlöse mich von meinem Elend. Warum funktioniert es nicht?
Es geht nicht, weil es nicht geht.
Sagen Sie, Sie haben und es gibt drei Arten von Objekten:
Wenn Sie sich ansehen , Typ gewinnt, also nehmen Sie einen Typ Objekt und füllen Sie den verbleibenden Platz mit einem Typ auf , für den Gesamtwert .
Aber die optimale Lösung braucht fünf Typen Objekte für den Gesamtwert .
Wir könnten die allgemeine Schwierigkeit wie folgt charakterisieren: Eine Wahl, die anfangs gut schien, geriet später in Schwierigkeiten, weil unsere frühe Wahl von , kurzfristig optimal, zwingt uns, das sehr Schlechte zu nehmen nachher. Die optimale Lösung erfordert viele Entscheidungen, die auf kurze Sicht suboptimal erscheinen, aber gut zusammenarbeiten.
Dies ist ziemlich typisch für NP-vollständige Probleme. Sie haben viele Teile, die auf komplizierte Weise interagieren, sodass die Auswirkungen einer bestimmten Entscheidung in einem Teil des Problems nicht lokalisiert werden können, aber weitreichende Auswirkungen auf Entscheidungen haben, die an anderer Stelle getroffen werden. Vergleichen Sie dies mit dem prototypischen NP-vollständigen Problem CNF-SAT, bei dem die Teile logische Klauseln sind, die jeweils mehrere Komponenten enthalten, aber jede Komponente in mehreren Klauseln vorkommen kann. Jede Entscheidung über den Wert einer Komponente einer Klausel kann weitreichende Auswirkungen auf die anderen Klauseln haben.
Oder ziehen Sie in ähnlicher Weise das Packen in die Tonne in Betracht. Artikel, die optimal in den ersten Behälter passen, können sich als genau das herausstellen, was benötigt wird, um den Platz in späteren Behältern auszufüllen, so dass eine optimale Verpackung des ersten Behälters einen kurzfristigen Gewinn auf Kosten der Gesamtverpackung erzielen kann; Eine insgesamt optimale Lösung kann den ersten Behälter suboptimal packen, um bestimmte Sonderposten für später aufzubewahren.
Nur zur Verdeutlichung: Wenn Sie Artikel nach ihrem Wert/Gewicht-Verhältnis auffüllen, bis kein Artikel mehr in dieser Reihenfolge passt, ist das Ergebnis optimal , wenn das bis dahin aufgelaufene Gewicht genau dem verfügbaren Platz entspricht. Mit anderen Worten, es ist IMMER optimal für das angesammelte Gesamtgewicht. Ich denke, das ist das Ergebnis, das Sie im Sinn hatten. Es ist nicht schwer zu beweisen und findet sich in jeder Einführung in Rucksackprobleme, zum Beispiel in "Martello, S. & Toth, P. Knapsack problems: algorithms and computer implements. John Wiley & Sons, 1990"
Wie in der ersten Antwort und den dortigen Kommentaren besprochen, ist Ihre Methode jedoch offensichtlich nicht immer optimal, wenn sie endet, ohne den Beutel vollständig zu füllen. Denk an für groß , und Gegenstände (Gewicht , Wert ) (Gewicht , Wert ). Dann landet Ihr Algorithmus bei und einen Wert von , wenn es stattdessen hätte haben können mit einem Wert von . Nichtsdestotrotz, ist trivial optimal für das erreichte Gewicht, also optimal für einen Tornister mit Gesamtgewicht .
naslundx
ToniK