Dynamische Programmierung
aus Wikipedia, der freien Enzyklopädie
Dynamische Programmierung ist ein Paradigma zum algorithmischen Lösen von Optimierungsproblemen. Der Begriff wurde in den 1940er Jahren von dem amerikanischen Mathematiker Richard Bellman geprägt, der diese Methode auf dem Gebiet der Kontrolltheorie anwendete. In diesem Zusammenhang wird auch oft von Bellmans Prinzip der dynamischen Programmierung gesprochen.
Dynamische Programmierung kann dann erfolgreich eingesetzt werden, wenn das Optimierungsproblem aus vielen gleichartigen Teilproblemen besteht, und eine optimale Lösung des Problems sich aus optimalen Lösungen der Teilprobleme zusammensetzt (Optimalitätsprinzip von Bellman). Das Verfahren der dynamischen Programmierung besteht darin, zuerst die optimalen Lösungen der kleinsten Teilprobleme direkt zu berechnen, und diese dann geeignet zu einer Lösung eines nächstgrößeren Teilproblems zusammenzusetzen, und so weiter. Es gilt hier, bei der Lösung kostspielige Rekursionen durch Wiederverwendung schon berechneter Zwischenlösungen zu vermeiden. Einmal berechnete Teilergebnisse werden in einer Tabelle gespeichert, um später auf sie zurückgreifen zu können.
In der Kontrolltheorie und verwandten Gebieten kann man das Prinzip der dynamischen Programmierung einsetzen, um etwa eine Gleichung herzuleiten (Hamilton-Jacobi-Bellman-Gleichung), deren Lösung den optimalen Wert ergibt. Die Argumentation ist dabei etwa folgende: Wenn das Problem zeitabhängig ist, kann man den optimalen Wert des Zielfunktionals zu einem bestimmten Zeitpunkt betrachten. Man fragt sich dann, welche Gleichung die optimale Lösung erfüllen muss, damit das Zielfunktional auch zu einem späteren Zeitpunkt optimal bleibt, dies führt zur Hamilton-Jacobi-Bellman-Gleichung. Damit kann man das Problem in Zeitschritte einteilen, anstatt es auf einmal lösen zu müssen.
In der Physik war dieses Prinzip schon seit langem bekannt (allerdings nicht unter diesem Namen). Der Übergang von einer globalen (alle Zeitpunkte gleichzeitig) zu einer zeitabhängigen (dynamischen) Betrachtungsweise entspricht dort der Transformation des Lagrange-Funktionals in das Hamilton-Funktional mit Hilfe der Legendretransformation.
[Bearbeiten] Beispiele
- CYK-Algorithmus
- Earley-Algorithmus
- Needleman-Wunsch-Algorithmus
- Smith-Waterman-Algorithmus
- Viterbi-Algorithmus
- Floyd-Warshall-Algorithmus
- Rucksackproblem