Dynamische Programmierung
Basierend auf dem Bellmansches Optimalitätsprinzip:
„Optimale Teillösungen bilden eine optimale Lösung.“
LgT
Geg.: Wörter a, b
Ges.: Längste gemeinsame Teilfolge LgT(a, b) Idee: C(i, j) ≡ LgT(a1…ai, b1…bj) sei bekannt
j i
j i
b a falls
b a falls } 1) - j (i, j), 1, - (i max{
1 1) - j 1, - j) (i
(i,
0 j) (0, 0) (i,
≠
=
+
=
=
=
C C
C C
C C
KgO
Geg.: Wörter a, b
Ges.: Kürzeste gemeinsame Oberfolge KgO(a, b) Idee: C(i, j) ≡ KgO(a1…ai, b1…bj) sei bekannt
j i
j i
b a falls
b a falls 1}
1) - j (i, 1, j) 1, - (i min{
1 1) - j 1, - j) (i
(i,
j j) (0, i 0) (i,
≠
=
+ +
= +
=
=
C C
C C
C C
Editierdistanz Geg.: Wörter a, b
Ges.: Geringste Anzahl Operationen (Löschen, Einfügen, Umbenennen) zur Überführung von Wort a nach b (= Maß für die Ähnlichkeit von a und b)
Idee: C(i, j) ≡ Edd(a1…ai, b1…bj) sei bekannt C(i-1, j-1) - Umbenennen von ai nach bj
C(i-1, j) - Löschen von ai C(i, j-1) - Einfügen von bj
j i
j i
b a falls
b a falls 1}
1) - j (i, 1, j) 1, - (i 1, 1) - j 1, - (i min{
1) - j 1, - j) (i
(i,
j j) (0, i 0) (i,
≠
=
+ +
= +
=
=
C C
C C C
C C
TSP
Geg.: Kostenmatrix K mit K(a, b) = Kosten der „Strecke“ a nach b Ges.: Optimale (günstigste) Rundreise
Idee: Optimaler Pfad Pn(i, V) der Länge n vom Knoten 1 zum Knoten i bekannt, wobei ∀ v∈V gilt: v∉Pn
Pn(i, ∅) = K(i, 1) schließen des Kreises
Pn(i, V) = min{K(i, v) + Pn+1(v, V \ v) | ∀ v∈V } expandieren des Pfades
Iterierte Matrizenmultiplikation Geg.: n Matrizen Ai ∈ Νi-1×i
Ges.: Berechnung von B = A1×A2×…×An durch minimale Anzahl Multiplikationen M Idee: Ai mit 0 Multiplikationen berechenbar
Ai×Ai+1 mit (i-1) × i × (i+1) Multiplikationen berechenbar (pi-1⋅pi⋅pi+1) Ai×Aj×Ak durch Ai×(Aj×Ak) oder (Ai×Aj)×Ak berechenbar …
j i falls
j i falls } j k i | p p p j) 1, (k k)
(i, min{
j) 0 (i,
j k 1 -
i <
≥
<
≤
⋅
⋅ + +
= +
M M M
Optimaler binärer Suchbaum
Geg.: Knoten ai und dazu gehörige Häufigkeiten bi (i = 1,…,n)
Ges.: Optimaler Suchbaum S mit minimalen Kosten c ~ Häufigkeiten × Tiefe ∀ Knoten ai
Idee: C(i, j) ≡ S(ai…aj) sei minimaler Suchbaum welcher die Knoten ai bis aj enthält
j i falls
j i falls } j k i | j) 1, (k 1), - k (i, min{
c 0 j)
(i, j
n ≤
>
≤
≤ +
= +
∑
=C C C
i n