Optimalitätsprinzip von Bellman

Aus testwiki
Zur Navigation springen Zur Suche springen

Das Optimalitätsprinzip von Bellman ist ein grundlegendes Prinzip der Optimierung. Es ist nach Richard Bellman benannt und besagt, dass sich bei einigen Optimierungsproblemen jede Optimallösung aus optimalen Teillösungen zusammensetzt. Auf diesem Prinzip basieren Algorithmen der dynamischen Programmierung.

Ein Beispiel ist die Berechnung eines kürzesten Weges in einem Graphen (z. B. einem Straßennetz). Ein kürzester Weg P zwischen den Knoten (Städten) A und B, der durch die Knoten X und Y führt, muss auch zwischen X und Y einen kürzesten Weg zwischen diesen beiden Knoten verwenden. Wäre das nicht der Fall, könnte P verkürzt werden, indem zwischen X und Y ein kürzerer Teilweg verwendet wird, und dann wäre P kein kürzester Weg zwischen A und B gewesen, im Widerspruch zur Annahme. Der Bellman-Ford-Algorithmus zur Berechnung kürzester Wege, der auf dynamischer Programmierung beruht, macht sich dieses Prinzip zunutze. Dargestellt werden solche Graphen in einem Quelle-Senken-Baum.

Definition (Klassisch)

Vorlage:Zitat

Vorlage:Zitat

Gemeint ist:

Vorlage:Zitat

Definition (Formal)

Sei h eine Optimierungsfunktion, welche auf Listen arbeitet, dann gilt das Optimalitätsprinzip von Bellman für eine k-stellige Funktion f, wenn gilt:

  • h([f(x1,,xk)|x1z1,,xkzk])=h([f(x1,,xk)|x1h(z1),,xkh(zk)])
  • h(z1++z2)=h(h(z1)++h(z2))

(Giegerich et al., 2002)

zi,1ik sind Listen vom Typ A. h ist vom Typ h::[A]>[A]. Der ++ ist der Listenverknüpfungsoperator und [|] ist die Listenbeschreibungs-Notation, wie sie in Haskell definiert sind.

Literatur