Rucksackprobleme lassen sich leicht durch dynamische Programmierung lösen. Dynamische Programmierung läuft in Polynomialzeit; deshalb machen wir das, richtig? Ich habe gelesen, dass es sich tatsächlich um ein NP-vollständiges Problem handelt, was bedeuten würde, dass das Lösen des Problems in einem Polynomproblem wahrscheinlich unmöglich ist. Wo ist mein Fehler?
Ich habe die Technik des dynamischen Programmierens mehrmals angewendet, aber heute fragte mich ein Freund, wie ich meine Unterprobleme definiere. Mir wurde klar, dass ich keine Möglichkeit hatte, eine objektive formale Antwort zu geben. Wie definieren Sie formal ein Unterproblem für ein Problem, das Sie mit dynamischer Programmierung lösen würden?
Gibt es einen grundlegenden Unterschied zwischen dynamischer Programmierung von oben nach unten und von unten nach oben? Gibt es insbesondere ein Problem, das von unten nach oben und nicht von oben nach unten gelöst werden kann? Oder ist der Bottom-Up-Ansatz nur eine Abwicklung der Wiederholung im Top-Down-Ansatz?
Sorry im Voraus, wenn diese Frage dumm klingt ... Soweit ich weiß, funktioniert das Erstellen eines Algorithmus mit dynamischer Programmierung folgendermaßen: Drücken Sie das Problem als wiederkehrende Beziehung aus. Implementieren Sie die Wiederholungsbeziehung entweder durch Auswendiglernen oder durch einen Bottom-up-Ansatz. Soweit ich weiß, habe ich alles über dynamische Programmierung gesagt. …
Ich arbeite seit einiger Zeit an dynamischer Programmierung. Die kanonische Methode zum Auswerten einer dynamischen Programmierrekursion besteht darin, eine Tabelle mit allen erforderlichen Werten zu erstellen und zeilenweise zu füllen. Siehe zum Beispiel Cormen, Leiserson et al .: "Introduction to Algorithms" für eine Einführung. Ich konzentriere mich auf das tabellenbasierte …
Ich habe mich gerade mit dynamischer Programmierung befasst, als ich auf folgendes Zitat gestoßen bin Ein dynamischer Programmieralgorithmus untersucht alle Möglichkeiten zur Lösung des Problems und wählt die beste Lösung aus. Daher können wir uns die dynamische Programmierung grob als intelligente Brute-Force-Methode vorstellen, die es uns ermöglicht, alle möglichen Lösungen …
Ich habe diese Frage auf StackOverflow gestellt , aber ich denke, hier ist ein geeigneterer Ort. Dies ist ein Problem aus dem Kurs Einführung in Algorithmen : Sie haben ein Array aaa mit nnn positiven ganzen Zahlen (das Array muss nicht sortiert oder die Elemente eindeutig sein). Schlagen Sie einen …
Ich habe an dem folgenden Problem aus diesem Buch gearbeitet . Eine bestimmte Zeichenkettenverarbeitungssprache bietet eine primitive Operation, die eine Zeichenkette in zwei Teile aufteilt. Da bei dieser Operation die ursprüngliche Zeichenfolge kopiert wird, werden für eine Zeichenfolge mit der Länge n unabhängig von der Position des Schnitts n Zeiteinheiten …
In der Einführung in Algorithmen von Cormen et al. Wird in Abschnitt 15.3 Elemente der dynamischen Programmierung das Speichern wie folgt erläutert: Ein gespeicherter rekursiver Algorithmus verwaltet einen Eintrag in einer Tabelle zur Lösung jedes Teilproblems. Jeder Tabelleneintrag enthält anfangs einen speziellen Wert, der angibt, dass der Eintrag noch ausgefüllt …
Dynamisches Programmieren kann die Zeit reduzieren, die zum Ausführen eines rekursiven Algorithmus erforderlich ist. Ich weiß, dass dynamisches Programmieren die zeitliche Komplexität von Algorithmen reduzieren kann. Sind die allgemeinen Bedingungen so, dass bei Erfüllung durch einen rekursiven Algorithmus die Verwendung einer dynamischen Programmierung die zeitliche Komplexität des Algorithmus verringert? Wann …
Wenn ich zwei Matrizen und B mit den Dimensionen 1000 × 2 bzw. 2 × 1000 habe und ( A B ) 5000 berechnen möchte , ist es effizienter, den Ausdruck zuerst als A ( B A ) 4999 B und nur dann umzuschreiben numerisch auswerten, da A B die …
Wenn zwei Zeichenfolgen S1,S2S1,S2S_1, S_2 , schreiben wir S1S2S1S2S_1S_2 für ihre Verkettung. Bei einer Zeichenkette SSS und Integer k≥1k≥1k\geq 1 , wir schreiben (S)k=SS⋯S(S)k=SS⋯S(S)^k = SS\cdots S für die Verkettung von kkk Kopien von SSS . Wenn wir nun einen String haben, können wir ihn mit dieser Notation 'komprimieren', dh …
Wie würden Sie das Rucksackproblem in einer dynamischen Programmiersituation angehen, wenn Sie jetzt die Anzahl der Elemente im Rucksack durch eine Konstante begrenzen müssten ? Dies ist das gleiche Problem (maximales Gewicht von , jeder Gegenstand hat einen Wert und ein Gewicht ), aber Sie können dem Rucksack nur Gegenstände …
Dynamische Programmierung mit vielen Teilproblemen. Ich versuche also, dieses Problem in der Interview Street zu lösen: Gitter Gehen (50 Punkte) , Sie sind in einem befindet NNN -dimensionalen Gitter an der Position (x1,x2,…,xN)(x1,x2,…,xN)(x_1,x_2,\dots,x_N) . Die Abmessungen des Gitters sind (D1,D2,…,DN(D1,D2,…,DN(D_1,D_2,\dots,D_N ). In einem Schritt können Sie in einer der NNN …
Betrachten Sie die folgende Problemstellung: Bei einer Anfangszahl ziehen Sie und Ihr Freund abwechselnd ein perfektes Quadrat davon ab. Der erste, der auf Null kommt, gewinnt. Zum Beispiel: Ausgangszustand: 37 Spieler1 subtrahiert 16. Status: 21 Spieler2 subtrahiert 8. Status: 13 Spieler1 subtrahiert 4. Status: 9 Spieler2 subtrahiert 9. Status: 0 …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.