Die meisten klassischen Beispiele für dynamische Programmieralgorithmen haben Laufzeiten wie oder . Gibt es natürliche Beispiele mit einer Laufzeit von ?
Die meisten klassischen Beispiele für dynamische Programmieralgorithmen haben Laufzeiten wie oder . Gibt es natürliche Beispiele mit einer Laufzeit von ?
Antworten:
Ein natürliches Beispiel ist das Finden der am längsten ansteigenden Teilsequenz einer Folge von Zahlen. Kandidaten-Teilsequenzen können in der Eingabesequenz verknüpft werden. Dies ist eine ziemlich häufige Übung und funktioniert auch für andere Arten von Teilsequenzen. Es ist eigentlich die Übung 15.4-6 in der 3. Auflage von Cormen et al. Buch auch. Einen Algorithmus finden Sie in Abschnitt 2.2 in diesen Hinweisen .
Um meinen Kommentar zu erweitern:
Beachten Sie die tatsächliche Definition von DP, während beim Sortieren keine "Tabellensuche" durchgeführt wird:
Methode zur Lösung von Problemen mit optimaler Unterstruktur.
Wir sehen, dass ein Divide-and-Conquer-Ansatz zum Sortieren dies erfüllt.