Mehrere Constraint-Knapsack-Problem
Wenn es mehr als eine Einschränkung (zum Beispiel sowohl eine Obergrenze für die Lautstärke und ein Gewichts-limit, wo das Volumen und das Gewicht der einzelnen Elemente sind nicht miteinander verwandt), so erhalten wir die multiply-constrained knapsack problem, multi-dimensionale knapsack-problem, oder m-dimensionale knapsack-problem.
Wie code ich das in die optimierte Mode? Naja, man kann sich entwickeln, eine brute-force-rekursive Lösung. Kann branch-and-bound.. aber im wesentlichen eine exponentielle meisten der Zeit, bis Sie eine Art von memoization oder verwenden Sie dynamische Programmierung, die auch wieder eine riesige Menge an Speicher, wenn nicht gut getan.
Das problem, das ich bin vor ist diese
Habe ich meine Rucksack-Funktion
Rucksack( Kapazität, Wert, i) statt der üblichen
Rucksack ( Kapazität , i ) da ich die oberen Grenzwerte für diese beiden. kann jemand mich leiten? oder Bereitstellung der geeigneten Ressourcen für die Lösung dieser Probleme für hinreichend große n
oder ist das NP-vollständige ?
Dank
InformationsquelleAutor der Frage EFreak | 2009-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zusammenführen der Einschränkungen. Blick auf http://www.diku.dk/~pisinger/95-1.pdf
Kapitel 1.3.1 genannten Verschmelzung der Einschränkungen.
Ist ein Beispiel sagen, Sie haben
variable , constraint1 , constraint2
1 , 43 , 66
2 , 65 , 54
3 , 34 , 49
4 , 99 , 32
5 , 2 , 88
Multiplizieren die erste Einschränkung, die von einigen großen Zahl und fügen Sie es der zweite Einschränkung.
So haben Sie
variable verbundene Einschränkung
1 , 430066
2 , 650054
3 , 340049
4 , 990032
5 , 20088
Von dort aus tun, was immer Algorithmus, den Sie tun wollten, mit einer Einschränkung. Die wichtigsten limiter in den Sinn kommt mit diesem, wie viele Ziffern die variable aufnehmen kann.
InformationsquelleAutor der Antwort user1934868
Als ein gutes Beispiel dienen könnte Folgendes problem:
Gegeben ein ungerichteter graph G mit positiven gewichten und N Ecken.
Beginnen Sie mit einer Summe von M Geld. Für die durch einen Eckpunkt i, die Sie zahlen müssen, S[ich] Geld. Wenn Sie nicht genug Geld haben - können Sie nicht passieren, dass vertex. Den kürzesten Weg zu finden vom Eckpunkt 1 zum Eckpunkt N, unter Beachtung der oben genannten Bedingungen; oder der Staat, dass ein solcher Pfad nicht existiert. Wenn es existiert mehr als ein Pfad mit der gleichen Länge, dann die Ausgabe der billigste. Einschränkungen: 1
Pseudocode:
InformationsquelleAutor der Antwort EFreak
Ranzen mit mehreren Einschränkungen wird eine Verpackungs-problem. Lesen Sie bis. http://en.wikipedia.org/wiki/Packing_problem
InformationsquelleAutor der Antwort Pranav
Dort sind gierig wie Heuristiken zur Berechnung einer "Effizienz" für jedes Element, das schnell laufen und Ertrag Ungefähre Lösungen.
Können Sie einen branch-and-bound-Algorithmus. Sie bekommen eine erste untere Schranke mit einem gierig wie die Heuristik, die verwendet werden können, zum initialisieren der vorhandenen Lösung. Sie berechnen können, Obere Grenzen für die verschiedenen sub-Probleme betrachtet man jede der m Nebenbedingungen nacheinander (entspannt die anderen Randbedingungen in das problem), dann verwenden Sie die niedrigste von diesen Grenzen als eine Obere Schranke für das ursprüngliche problem. Diese Technik ist aufgrund Shih. Allerdings ist diese Technik wahrscheinlich nicht gut funktionieren, wenn keine Besondere Einschränkung neigt zu Dominieren, die Lösung, oder wenn die erste Lösung aus, die gierig wie die Heuristik ist nicht in der Nähe des optimalen.
Gibt es bessere modernere algorithmen, die sind schwieriger zu implementieren, finden Sie unter "multidimensional knapsack problem" Papiere von J Puchinger!
InformationsquelleAutor der Antwort tyebillion
Als Sie sagte, vol und Gewicht sind beide positive Mengen, versuchen, die Tatsache, dass das Gewicht immer verringert:
Nun
t=0
wennwt
positiv ist,t=1
wennwt
negativ ist.InformationsquelleAutor der Antwort Teja Vardhan Reddy