Rucksack-Problem

(Lösung: Wenn eine Zahl jedes Kastens, dann drei gelbe Kästen und drei graue Kästen verfügbar ist; wenn nur die gezeigten Kästen, dann alle außer dem grünen Kasten verfügbar sind.)]]

Das Rucksack-Problem oder Rucksack-Problem sind ein Problem in der kombinatorischen Optimierung: In Anbetracht einer Reihe von Sachen, jedes mit einem Gewicht und einem Wert, bestimmen die Zahl jedes Artikels, um in eine Sammlung einzuschließen, so dass das Gesamtgewicht weniger ist als oder gleich einer vorgeschriebenen Grenze und der Gesamtwert so groß wie möglich ist. Es leitet seinen Namen vom Problem ab, das von jemandem gesehen ist, der durch einen Rucksack der festen Größe gezwungen wird und ihn mit den wertvollsten Sachen füllen muss.

Das Problem entsteht häufig in der Betriebsmittelzuweisung, wo es Finanzeinschränkungen gibt und in Feldern wie combinatorics, Informatik, Kompliziertheitstheorie, Geheimschrift und angewandte Mathematik studiert wird.

Das Rucksack-Problem ist seit mehr als einem Jahrhundert mit frühen Arbeiten studiert worden, die schon zu Lebzeiten von 1897 datieren. Es ist nicht bekannt, wie der Name "Rucksack-Problem" hervorgebracht, obwohl das Problem solchen in den frühen Arbeiten des Mathematikers Tobias Dantzig (1884-1956) genannt geworden ist, darauf hinweisend, dass der Name in der Volkskunde vor einem mathematischen Problem bestanden haben könnte, völlig definiert worden war.

Anwendungen

Eine 1998-Studie des Steinigen Bach-Universitätsalgorithmus-Behältnisses hat gezeigt, dass, aus 75 algorithmischen Problemen, das Rucksack-Problem das 18. populärste und das 4. erforderlichste nach Kd-Bäumen, Nachsilbe-Bäumen und dem Behälter-Verpackungsproblem war.

Rucksack-Probleme erscheinen in wirklichen Beschlussfassungsprozessen in einem großen Angebot an Feldern, wie die Entdeckung der am wenigsten verschwenderischen Weise, Rohstoffe, Auswahl an Kapitalanlagen und Finanzmappen, Auswahl am Vermögen für anlagenunterstützten securitization und das Erzeugen von Schlüsseln für den Merkle-Hellman Rucksack cryptosystem zu schneiden.

Eine frühe Anwendung von Rucksack-Algorithmen war im Aufbau und Zählen von Tests, in denen die Testnehmer eine Wahl haben, betreffs deren Fragen sie antworten. Für kleine Beispiele ist es ein ziemlich einfacher Prozess, um die Testnehmer mit solch einer Wahl zu versorgen. Zum Beispiel, wenn eine Prüfung 12 Fragen jeder enthält, der 10 Punkten im Betrag von ist, der Testnehmer müssen nur auf 10 Fragen antworten, eine maximale mögliche Kerbe von 100 Punkten zu erreichen. Jedoch, auf Tests mit einem heterogenen Vertrieb von Punkt-Werten - d. h. verschiedene Fragen sind verschiedener Punkt-Werte wert - es ist schwieriger, Wahlen zur Verfügung zu stellen. Feuerman und Weiss haben ein System vorgeschlagen, in dem Studenten ein heterogener Test mit insgesamt 125 möglichen Punkten gegeben wird. Die Studenten werden gebeten, auf alle Fragen an den besten von ihren geistigen Anlagen zu antworten. Der möglichen Teilmengen von Problemen, deren sich Gesamtpunkt-Werte 100 belaufen, würde ein Rucksack-Algorithmus bestimmen, welche Teilmenge jedem Studenten die höchstmögliche Kerbe gibt.

Mathematische Definition

Die allgemeinste Formulierung des Problems ist das 0-1 Rucksack-Problem, das die Nummer x von Kopien jeder Art des Artikels einschränkt

zur Null oder ein. Das Bild kann oben auf diese Weise interpretiert werden.

Mathematisch 0 kann 1 Rucksack-Problem als formuliert werden:

Lassen Sie dort, n Sachen, ich durch ich zu sein

ist der Wert des Artikels i

ist das Gewicht des Artikels i

Das maximale Gewicht, das wir in der Tasche tragen können, ist W.

Es ist üblich anzunehmen, dass alle Werte und Gewichte nichtnegativ sind. Um die Darstellung zu vereinfachen, nehmen wir auch an, dass die Sachen in der zunehmenden Ordnung des Gewichts verzeichnet werden.

  • Maximieren Sie Thema

Maximieren Sie die Summe der Werte der Sachen im Rucksack, so dass die Summe der Gewichte weniger sein muss als die Kapazität des Rucksacks.

Das begrenzte Rucksack-Problem entfernt die Beschränkung, dass es nur einen jedes Artikels gibt, aber die Zahl von Kopien von einschränkt

jede Art des Artikels zu einem Wert der ganzen Zahl.

Mathematisch kann das begrenzte Rucksack-Problem als formuliert werden:

  • maximieren Sie Thema

Das unbegrenzte Rucksack-Problem (UKP) legt nicht ober hat zur Zahl von Kopien jeder Art des Artikels gebunden und kann als oben abgesehen davon formuliert werden die einzige Beschränkung dessen besteht darin, dass es eine positive ganze Zahl ist. Wenn das Beispiel mit den farbigen Ziegeln oben als ein unbegrenztes Rucksack-Problem angesehen wird, dann ist die Lösung, drei gelbe Kästen und drei graue Kästen zu nehmen.

Das Rucksack-Problem in der Informatik

Das Rucksack-Problem ist von der Perspektive der Informatik aus vielen Gründen interessant:

  • Die Entscheidungsproblem-Form des Rucksack-Problems ("Kann ein Wert von mindestens V erreicht werden, ohne das Gewicht W zu überschreiten?) ist NP-complete, um genau zu lösen, so wird es erwartet, dass kein Algorithmus sowohl richtig sein kann als auch schneller (polynomisch-malig) auf allen Fällen.
  • Während das Entscheidungsproblem NP-complete ist, ist das Optimierungsproblem NP-hard, seine Entschlossenheit ist mindestens so schwierig wie das Entscheidungsproblem, und es gibt keinen bekannten polynomischen Algorithmus, den, in Anbetracht einer Lösung, man sagen kann, ob es optimal ist (es, der bedeuten würde, dass es keine Lösung mit einem größeren gibt, so das Entscheidungsproblem NP-complete behebend).
  • Es gibt einen pseudopolynomischen Zeitalgorithmus mit der dynamischen Programmierung
  • Es gibt ein völlig polynomisch-maliges Annäherungsschema, das den pseudopolynomischen Zeitalgorithmus als ein Unterprogramm verwendet, das unten beschrieben ist.
  • Viele Fälle, die in der Praxis, und "zufällige Beispiele" von etwas Vertrieb entstehen, können dennoch genau gelöst werden.

Es gibt eine Verbindung zwischen den "Entscheidungs-" und "Optimierungs"-Problemen darin, dass, wenn dort ein polynomischer Algorithmus besteht, der das "Entscheidungs"-Problem dann behebt, man den maximalen Wert für das Optimierungsproblem in der polynomischen Zeit finden kann, indem man diesen Algorithmus wiederholend anwendet, während man den Wert von k vergrößert. Andererseits, wenn ein Algorithmus den optimalen Wert des Optimierungsproblems in der polynomischen Zeit findet, dann kann das Entscheidungsproblem in der polynomischen Zeit durch das Vergleichen des Werts der Lösungsproduktion durch diesen Algorithmus mit dem Wert von k behoben werden. So sind beide Versionen des Problems der ähnlichen Schwierigkeit.

Ein Thema in der Forschungsliteratur soll identifizieren, was die "harten" Beispiele des Rucksack-Problems aussehen, oder einen anderen Weg angesehen haben, um zu identifizieren, welche Eigenschaften von Beispielen sie in der Praxis verantwortlicher machen könnten als ihr Grenzfall, den NP-complete Verhalten andeutet. Die Absicht in der Entdeckung dieser "harten" Beispiele ist dafür dort verwenden in öffentlichen Schlüsselgeheimschrift-Systemen, wie der Merkle-Hellman Rucksack cryptosystem.

Das Beheben des Rucksack-Problems

Mehrere Algorithmen sind frei verfügbar, um Rucksack-Probleme zu beheben, die auf dynamischer Programmierannäherung, Zweig und gebundener Annäherung oder Kreuzungen von beiden Annäherungen gestützt sind.

Dynamischer Programmieralgorithmus

Unbegrenztes Rucksack-Problem

Wenn alle Gewichte sind

natürliche Zahlen, das Rucksack-Problem kann in der pseudopolynomischen Zeit mit der dynamischen Programmierung behoben werden. Der folgende beschreibt eine dynamische Programmierlösung für das unbegrenzte Rucksack-Problem.

Um Dinge zu vereinfachen, nehmen Sie an, dass alle Gewichte ausschließlich positiv sind (w> 0). Wir möchten Gesamtwertthema der Einschränkung maximieren, dass Gesamtgewicht weniger ist als oder gleich W. Dann für jeden w  W, definieren Sie M [w], um der maximale Wert zu sein, der mit dem Gesamtgewicht weniger erreicht als oder zur w. M [W] gleich werden kann, dann ist die Lösung des Problems.

Bemerken Sie, dass M [w] die folgenden Eigenschaften hat:

  • (die Summe von Nullsachen, d. h., die Summierung des leeren Satzes)

wo der Wert der i-th Art des Artikels ist.

Der folgende ist Pseudocode für das dynamische Programm:

:

Eingang: Werte v und Gewichte w für Sachen 1 zu n; Zahl von verschiedenen Sachen n; Rucksack-Kapazität W

für w von 0 bis W tun

T [0, w]: = 0

Ende für

weil ich von 1 bis n tue

für j von 0 bis W tun

wenn j> = w [ich] dann

T [ich, j]: = max (T [i-1, j], T [ich, j-w [ich]] + v [ich])

sonst

T [ich, j]: = T [i-1, j]

enden Sie wenn

Ende für

Ende für

Hier wird das Maximum des leeren Satzes genommen, um Null zu sein. Das Tabellieren der Ergebnisse gibt durch die Lösung. Da die Berechnung von jedem mit Überprüfen-Sachen verbunden ist, und es Werte gibt zu rechnen, ist die Laufzeit der dynamischen Programmierlösung. Das Teilen durch ihren größten allgemeinen Teiler ist eine offensichtliche Weise, die Laufzeit zu verbessern.

Die Kompliziertheit widerspricht der Tatsache nicht, dass das Rucksack-Problem NP-complete seitdem unterschiedlich ist, ist nicht Polynom in der Länge des Eingangs zum Problem. Die Länge des Eingangs zum Problem ist zur Zahl von Bit in proportional, nicht zu sich.

0-1 Rucksack-Problem

Eine ähnliche dynamische Programmierlösung für das 0-1 Rucksack-Problem läuft auch in der pseudopolynomischen Zeit. Nehmen Sie als oben an sind ausschließlich positive ganze Zahlen. Definieren Sie, um der maximale Wert zu sein, der mit dem Gewicht weniger erreicht als oder zum Verwenden von Sachen bis dazu gleich werden kann.

Wir können rekursiv wie folgt definieren:

  • wenn (ist der neue Artikel mehr als die aktuelle Gewicht-Grenze)
,
  • wenn.

Die Lösung kann dann durch das Rechnen gefunden werden. Um das effizient zu tun, können wir einen Tisch verwenden, um vorherige Berechnung zu versorgen.

Diese Lösung wird deshalb rechtzeitig und Raum laufen. Zusätzlich, wenn wir nur eine 1-dimensionale Reihe verwenden, um die aktuellen optimalen Werte zu versorgen und diese Reihe Zeiten zu übertragen, von zu jedem Mal umschreibend, wenn wir dasselbe Ergebnis für nur den Raum bekommen.

Treffen Sie sich im mittleren Algorithmus

Ein anderer Algorithmus für 0-1 Rucksack, entdeckt 1974 und manchmal genannt "trifft sich in der Mitte" wegen Parallelen zu einem ähnlich genannten Algorithmus in der Geheimschrift, ist in der Zahl von verschiedenen Sachen Exponential-, aber kann dem DP Algorithmus vorzuziehend sein, wenn im Vergleich zu n groß ist. Insbesondere wenn nichtnegativ, aber nicht ganze Zahlen zu sein, wir noch den dynamischen Programmieralgorithmus verwenden konnten, indem wir geklettert haben und uns gerundet haben (d. h. Festkommaarithmetik verwendet haben), aber wenn das Problem verlangt, dass Bruchziffern der Präzision die richtige Antwort erreichen, wird durch erklettert werden müssen, und der DP Algorithmus wird Zeit und Raum verlangen.

: Treffen Sie sich im mittleren Algorithmus

Eingang:

eine Reihe von Sachen mit Gewichten und Werten

Produktion:

der größte vereinigte Wert einer Teilmenge

verteilen Sie den Satz {1... n} in zwei Sätze A und B ungefähr der gleichen Größe

schätzen Sie die Gewichte und Werte aller Teilmengen jedes Satzes

für jede Teilmenge Eines

finden Sie, dass die Teilmenge von B des größten Werts s.t. das vereinigte Gewicht weniger ist als W

gehen Sie den größten vereinigten Wert gesehen bis jetzt nach

Der Algorithmus nimmt Raum und effiziente Durchführungen des Schritts 3 (zum Beispiel, die Teilmengen von B durch das Gewicht sortierend, Teilmengen von B verwerfend, die mehr wiegen als andere Teilmengen von B des größeren oder gleichen Werts, und das Verwenden binärer Suche, um das beste Match zu finden), auf eine Durchlaufzeit dessen hinauslaufen. Als mit dem Entsprechen im mittleren Angriff in der Geheimschrift übertrifft das die Durchlaufzeit einer naiven Annäherung der rohen Gewalt (alle Teilmengen {1... n} untersuchend), auf Kosten des Verwendens unveränderlichen aber nicht Exponentialraums.

Annäherungsalgorithmen

Bezüglich der meisten NP-complete Probleme kann es genug sein, bearbeitungsfähige Lösungen zu finden, selbst wenn sie nicht optimal sind. Vorzugsweise, jedoch, kommt die Annäherung mit einer Garantie auf dem Unterschied zwischen dem Wert der Lösung gefunden und dem Wert der optimalen Lösung.

Als mit vielen nützlichen, aber rechenbetont komplizierten Algorithmen hat es wesentliche Forschung über das Schaffen und Analysieren von Algorithmen gegeben, die einer Lösung näher kommen. Das Rucksack-Problem, obwohl NP-Hard, ist eine einer Sammlung von Algorithmen, denen noch zu jedem angegebenen Grad näher gekommen werden kann. Das bedeutet, dass das Problem ein Polynomisches Zeitannäherungsschema hat. Um genau zu sein, hat das Rucksack-Problem Fully Polynomial Time Approximation Scheme (FPTAS) und läuft in der pseudopolynomischen Zeit.

Völlig polynomisches Zeitannäherungsschema für das Rucksack-Problem

Der FPTAS für das Rucksack-Problem nutzt die Tatsache aus, dass der Grund das Problem ist nicht polynomische Zeitalgorithmen, darin besteht, weil die mit den Sachen vereinigten Gewinne nicht eingeschränkt werden. Wenn man einige von kleinsten positiven Ziffern der Gewinnwerte dann abrundet, werden sie durch ein Polynom und 1/ε begrenzt, wo ε ein gebundener die Genauigkeit der Lösung ist. Diese Beschränkung bedeutet dann, dass ein Algorithmus eine Lösung in der polynomischen Zeit finden kann, die innerhalb (des 1-ε) Prozents der optimalen Lösung richtig ist.

: Ein Algorithmus für FPTAS

Eingang:

ε  [0,1],

eine Liste, A, n Sachen ihre Werte, und Gewichte

Produktion: S die FPTAS Lösung

K: = εP/n wo P=v_i, wo Artikel ich der höchste geschätzte Artikel bin

weil von 1 bis n

profitieren Sie' = profit / K

geben Sie die Lösung, S, mit dem Gewinn' Werte im dynamischen über entworfenen Programm zurück

Lehrsatz: Der Satz, S, Produktion durch den Algorithmus befriedigt oben:

Gewinn (S')  (1-ε)* Gewinn (S *)

Wo S die Lösung ist, erzeugen durch den Algorithmus, und S* ist die optimale Lösung.

Gieriger Annäherungsalgorithmus

George Dantzig hat einen gierigen Annäherungsalgorithmus vorgeschlagen, um das unbegrenzte Rucksack-Problem zu beheben. Seine Version sortiert die Sachen in der abnehmenden Ordnung des Werts pro Einheit des Gewichts. Es fährt dann fort, sie in den Sack einzufügen, mit so vielen Kopien wie möglich der ersten Art des Artikels anfangend, bis es nicht mehr Raum im Sack für mehr gibt. Vorausgesetzt, dass es eine unbegrenzte Versorgung jeder Art des Artikels gibt, wenn der maximale Wert von Sachen ist, die den Sack einbauen, dann, wie man versichert, erreicht der gierige Algorithmus mindestens einen Wert dessen. Jedoch, für das begrenzte Problem, wo die Versorgung jeder Art des Artikels beschränkt wird, kann der Algorithmus alles andere als optimal sein.

Überlegenheitsbeziehungen im Unbegrenzten Rucksack-Problem

Das Beheben des unbegrenzten Rucksack-Problems kann leichter dadurch gemacht werden, Sachen wegzuwerfen, die nie erforderlich sein werden. Für einen gegebenen Artikel i, nehmen Sie an, dass wir eine Reihe von Sachen J solch finden konnten, dass ihr Gesamtgewicht weniger ist als das Gewicht von mir, und ihr Gesamtwert größer ist als der Wert von mir. Dann kann ich nicht in der optimalen Lösung erscheinen, weil wir immer jede potenzielle Lösung verbessern konnten, die mich enthält, indem wir i mit dem Satz J ersetzt haben. Deshalb können wir den i-th Artikel zusammen ignorieren. In solchen Fällen, wie man sagt, beherrscht J mich. (Bemerken Sie, dass das für begrenzte Rucksack-Probleme nicht gilt, seitdem wir bereits die Sachen in J. verbraucht haben können)

Entdeckung von Überlegenheitsbeziehungen erlaubt uns, die Größe des Suchraums bedeutsam zu reduzieren. Es gibt mehrere verschiedene Typen von Überlegenheitsbeziehungen, die alle eine Ungleichheit der Form befriedigen:

, und für einen

wo

und. Der Vektor zeigt die Zahl von Kopien jedes Mitgliedes von J an.

Gesammelte Überlegenheit

Der i-th Artikel wird durch J insgesamt beherrscht, als schriftlich, wenn das Gesamtgewicht von einer Kombination von Sachen in J weniger ist, als w und ihr Gesamtwert größer sind als v. Formell, und für einige, d. h. diese Überlegenheit Nachprüfend, ist rechenbetont hart, so kann sie nur mit einer dynamischen Programmierannäherung verwendet werden. Tatsächlich ist das zum Beheben eines kleineren Rucksack-Entscheidungsproblems where2 V = v, W = w gleichwertig, und die Sachen werden auf J eingeschränkt.

Schwellenüberlegenheit

Der i-th Artikel ist Schwelle, die durch J beherrscht ist, schriftlich als, wenn eine Zahl von Kopien von mir durch J beherrscht werde. Formell,

, und für einige und. Das ist eine Generalisation der gesammelten Überlegenheit, die zuerst darin eingeführt ist und im EDUK Algorithmus verwendet ist. Das kleinste solcher

definiert die Schwelle des Artikels i, schriftlich. In diesem Fall konnte die optimale Lösung an den meisten Kopien von mir enthalten.

Vielfache Überlegenheit

Der i-th Artikel ist multiplizieren beherrscht durch einen einzelnen Artikel j, schriftlich als, wenn ich durch eine Zahl von Kopien von j beherrscht werde. Formell,

, und für einen

d. h.

Diese Überlegenheit konnte während der Aufbereitung effizient verwendet werden, weil es relativ leicht entdeckt werden kann.

Modulüberlegenheit

Lassen Sie b der beste Artikel, d. h. für alles ich sein. Das ist der Artikel mit der größten Dichte des Werts.

Der i-th Artikel wird durch einen einzelnen Artikel j modular beherrscht, als geschrieben, wenn ich durch j plus mehrere Kopien von b beherrscht werde. Formell,

, und d. h.

Schwankungen auf dem Rucksack-Problem

Es gibt viele Schwankungen des Rucksack-Problems, die aus der riesengroßen Zahl von Anwendungen des grundlegenden Problems entstanden sind. Die Hauptschwankungen kommen durch das Ändern der Zahl von einem Problem-Parameter wie die Zahl von Sachen, Zahl von Zielen oder sogar die Zahl von Rucksäcken vor.

Mehrobjektives Rucksack-Problem

Diese Schwankung ändert die Absicht der Person, die den Rucksack füllt. Statt eines Ziels, wie Maximierung des Geldgewinns, konnte das Ziel mehrere Dimensionen haben. Zum Beispiel konnte es soziale oder Umweltsorgen sowie Wirtschaftsabsichten geben. Oft gerichtete Probleme schließen Mappe und Transport-Logistik-Optimierungen ein

Es gibt viele Heuristik, um diese Variante einschließlich des Ameise-Kolonie-Optimierungsalgorithmus zu lösen.

Als ein konkretes Beispiel, nehmen Sie an, dass Sie ein Vergnügungsreise-Schiff geführt haben. Sie müssen wie viel berühmte Komiker entscheiden, um zu mieten. Dieses Boot kann mehr als eine Tonne von Passagieren behandeln, und die Unterhaltungskünstler müssen weniger als 1000 Pfd. wiegen. Jeder Komiker hat ein Gewicht, bringt im Geschäft, das auf ihrer Beliebtheit gestützt ist, und bittet um ein spezifisches Gehalt. In diesem Beispiel haben Sie vielfache Ziele. Sie, wollen natürlich, die Beliebtheit Ihrer Unterhaltungskünstler maximieren, während Sie ihre Gehälter minimieren. Außerdem wollen Sie so viele Unterhaltungskünstler wie möglich haben.

Vielfaches Rucksack-Problem

Diese Schwankung ist dem Behälter-Verpackungsproblem ähnlich. Das Konzept ist, dass es vielfache Rucksäcke gibt. Das kann eine triviale Änderung scheinen, aber es ist zum Hinzufügen zur Kapazität des anfänglichen Rucksacks nicht gleichwertig. Diese Schwankung wird in vielem Laden und Terminplanung von Problemen in der Operationsforschung verwendet und hat einen FPTAS

Quadratisches Rucksack-Problem

Das quadratische Rucksack-Problem wurde zuerst von Gallo, Hammer und Simeone 1960 eingeführt.

Problem der Teilmenge-Summe

Das Teilmenge-Summe-Problem, ist ein spezieller Fall der Entscheidung und 0-1 Probleme, wo jede Art des Artikels, das Gewicht dem Wert gleichkommt:. Im Feld der Geheimschrift wird das Begriff-Rucksack-Problem häufig verwendet, um sich spezifisch auf das Teilmenge-Summe-Problem zu beziehen, und ist als eines von 21 NP-complete Problemen von Karp allgemein bekannt

Siehe auch

  • Liste von Rucksack-Problemen
  • Verpackung des Problems
  • Der Ausschnitt des Aktienproblems
  • Dauerndes Rucksack-Problem
  • Kombinatorische Optimierung
  • Kombinatorische Versteigerung

Referenzen

  • A6: MP9, pg.247.

<zitieren/>

<zitieren/>

Links


Kam (Begriffserklärung) / Kernite
Impressum & Datenschutz