Ich habe sehr wenig Erfahrung mit dynamischer Programmierung. Ich benutzte es, um ein DNA-Alignment-Problem, ein grundlegendes Rucksackproblem und ein einfaches Wegfindungsproblem zu lösen. Ich habe verstanden, wie sie funktioniert haben, aber ich fühle mich noch nicht mit ihr verbunden.Kann ich dynamische Programmierung verwenden, um dies zu lösen?
Ich habe ein Problem, das mich an 0-1 dynamische Programmierung erinnert, aber die Unterschiede haben mich abgeworfen, und ich bin mir nicht sicher, ob ich diese Technik noch verwenden kann, oder wenn ich mich für einen rekursiven Ansatz begnüge .
Nehmen wir an, ich habe eine Liste von Artikeln mit unterschiedlichen Werten, Gewichten und Kosten. Es kann mehr als einen von jedem Gegenstand geben.
Lassen Sie uns sagen, ich muss eine Kombination dieser Elemente wählen, die am wertvollsten ist, aber innerhalb der Grenzen von Gewicht und Kosten bleibt. Bisher habe ich das Rucksackproblem mit 2 Einschränkungen beschrieben. Aber hier ist der Unterschied:
Der Wert eines ausgewählten Elements ändert sich je nachdem, wie viele von ihnen ich in der Kombination habe.
Sagen wir, dass jedem Element eine Funktion zugeordnet ist, die mir sagt, was eine Gruppe dieser Elemente für mich wert ist. Es ist eine grundlegende lineare Funktion, wie value_of_item = -3 (Menge dieses Artikels) + 50
Also wenn ich 1 eines Artikels in einer Combo habe, dann ist es Wert für mich ist 47. Wenn ich 2 hatte sie, dann sind sie mir nur 44 wert.
Wenn ich eine dynamische Programmierungstabelle dafür verwende, dann müsste ich für jede Zelle zurückgehen, um zu sehen, ob dieses Element bereits in der aktuellen Kombination ist, was DP sinnlos macht. Aber vielleicht gibt es eine Möglichkeit, das Problem neu zu definieren, damit ich DP nutzen kann.
Hoffentlich machte das Sinn.
Die Alternative ist, jede Kombination von Elementen zu generieren, innerhalb der Grenzen von Kosten und Gewicht, den Wert von jeder Kombination, wählen Sie die wertvollste Kombination. Für eine Liste von 1000 Artikeln sogar, das wird eine teure Suche sein, und es ist etwas, das ich immer wieder berechnen würde. Ich würde gerne einen Weg finden, die Vorteile von DP zu nutzen.
Die Art der DP ist eine Berechnung durchzuführen und dann eine schnelle Nachschlagen dieses für zukünftiges Berechnungsergebnis ermöglichen . Dies erfordert eine Zuordnung zwischen einer eindeutigen Zahl, die die Eingabebedingungen darstellt, und den berechneten Kosten für diesen Satz von Bedingungen. Wenn ich 2Red und 3Green und 4Blue habe, kann ich alle möglichen Kombinationen eindeutig numerieren: r = # von rot, g = # von grün, b = # von blau, id = r * (3 * 4) + g * 4 + b. Ich kann ID verwenden, um zwischengespeicherte Berechnungen zu suchen. – Speed8ump