WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th....
Transcript of WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th....
![Page 1: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/1.jpg)
WS03/04 1
Dynamische Programmierung (2)
Matrixkettenprodukt
Prof. Dr. S. Albers
Prof. Dr. Th. Ottmann
![Page 2: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/2.jpg)
2 WS03/04
Das Optimalitätsprinzip
Typische Anwendung für dynamisches Programmieren:
Optimierungsprobleme
Eine optimale Lösung für das Ausgangsproblem setzt
sich aus optimalen Lösungen für kleinere Probleme
zusammen.
![Page 3: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/3.jpg)
3 WS03/04
Kettenprodukt von Matrizen
Gegeben: Folge (Kette) A1,A2,...,An von Matrizen
Gesucht: Produkt A1 A2 .... A
Problem: Organisiere die Multiplikation so, dass möglichst wenig skalare Multiplikationen ausgeführt werden.
Definition: Ein Matrizenprodukt heißt vollständig geklammert, wenn es entweder eine einzelne Matrix oder das geklammerte Produkt zweier vollständig geklammerter Matrizenprodukte ist.
![Page 4: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/4.jpg)
4 WS03/04
Beispiel für vollständig geklammerte Matrizenprodukte der Kette A1,A2,...,An
Alle vollständig geklammerten Matrizenprodukte
der Kette A1,A2,A3, A4 sind:
(A1(A2(A3A4)))
(A1((A2 A3) A4))
((A1 A2)(A3 A4))
((A1(A2 A3)) A4)
(((A1A2) A3) A4)
![Page 5: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/5.jpg)
5 WS03/04
Anzahl der verschiedenen Klammerungen
Klammerungen entsprechen strukturell verschiedenen Bäumen.
![Page 6: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/6.jpg)
6 WS03/04
Anzahl der verschiedenen Klammerungen
P(n) sei die Anzahl der verschiedenen Klammerungen von A1...Ak Ak+1...An
1
1
2für
11n
k
nknPkPnP
P
ZahleCatalansch te 1
442
11
15
nCnP
nnnn
n
nnP
n
nn
Bem: Finden der optimalen Klammerung durch Ausprobieren sinnlos.
![Page 7: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/7.jpg)
7 WS03/04
Multiplikation zweier Matrizen
q
kkjikij
rpijrqijqpij
bac
cCBAbBaA
1
.
,,,
Algorithmus Matrix-MultInput: Eine (p q) Matrix A und eine (q r) Matrix BOutput: Die (p r) Matrix C = A B1 for i := 1 to p do2 for j :=1 to r do3 C[i, j] := 04 for k := 1 to q do5 C[i, j] := C[i, j] + A[i, k] B[k,j]
Anzahl Multiplikationen und Additionen: p q r
Bem: für zwei n n – Matrizen werden hier n3 Multiplikationen benötigt.Es geht auch mit O(n2.376) Multiplikationen.
![Page 8: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/8.jpg)
8 WS03/04
Matrizenkettenprodukt Beispiel
Berechnung des Produkts von A1,A2,A3 mit
A1 :10 100 Matrix
A2 :100 5 Matrix
A3 : 5 50 Matrix
a) Klammerung ((A1 A2) A3) erfordert
A´= (A1 A2):
A´ A3 :
Summe:
![Page 9: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/9.jpg)
9 WS03/04
Matrizenkettenprodukt Beispiel
A1 :10 100 Matrix
A2 :100 5 Matrix
A3 : 5 50 Matrix
a) Klammerung (A1 (A2 A3)) erfordert
A´´= (A2 A3):
A1 A´´ :
Summe:
![Page 10: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/10.jpg)
10 WS03/04
Struktur der optimalen Klammerung
(Ai...j) = ((Ai...k) (Ak+1....j)) i k < j
Jede optimale Lösung des Matrixkettenprodukt Problems enthältoptimale Lösungen von Teilproblemen.
Rekursive Bestimmung des Wertes einer optimalen Lösung:
m[i,j] sei minimale Anzahl von Operationen zur Berechung des
Teilproduktes A i...j:
m[i,j] = 0 falls i = j
m[i,j] = ,sonst
s[i,k] = optimaler Splitwert für ein k, für das das Minimum angenommen wird
jkijki
pppjkmkim 1,1,min
![Page 11: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/11.jpg)
11 WS03/04
Rekursive Matrixkettenprodukt
Algorithmus rek-mat-ket(p, i, j)
Input: Eingabefolge p = p0,p1,....,pn, pi-1 pi Dimensionen
der Matrix Ai
Invariante: rek-mat-ket(p, i, j) liefert m[i, j]1 if i = j then return 02 m[i, j] := 3 for k := i to j – 1 do
4 m[i, j] := min(m[i,j], pi-1 pk pj + rek-mat-ket(p, i, k) + rek-mat-ket(p, k+1, j))
5 return m[i, j]
Aufruf: rek-mat-ket(p,1, n)
![Page 12: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/12.jpg)
12 WS03/04
Rekursives Matrixkettenprodukt, Laufzeit
Sei T(n) die Anzahl der Schritte zur Berechnung von rek-mat-ket(p,1,n).
Induktion) (vollst. 3)(
)(2
11)(
1)1(
1
1
1
1
1
n
n
i
n
k
nT
iTn
knTkTnT
T
Exponentielle Laufzeit!
![Page 13: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/13.jpg)
13 WS03/04
Matrixkettenprodukt mit dynamischer Programmierung
Algorithmus dyn-mat-ket
Input: Eingabefolge p= p0,p1,....,pn pi-1 pi Dimension der Matrix Ai
Output: m[1,n]1 n:= lenght(p)2 for i:= 1 to n do m[i, i] := 03 for l:=2 to n do
/* l = Länge des Teilproblems */4 for i := 1 to n – l + 1 do
/* i ist der linke Index */5 j := i + l - 1
/* j ist der rechte Index*/6 m[i, j] := 7 for k := i to j - 1 do
8 m[i, j] := min(m[i, j], pi-1 pk pj + m[i, k] + m[k + 1, j])9 return m[1, n]
![Page 14: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/14.jpg)
14 WS03/04
Berechnungsbeispiel
A1 30 35 A4 5 10
A2 35 15 A5 10 20
A3 15 5 A6 20 25
P = (30,35,15,5,10,20,25)
![Page 15: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/15.jpg)
15 WS03/04
m
1
2
3
4
5
6 1
2
3
4
5
6
j i
9.375
7.875
15,750
0 0
2.625
4.375 2.500
1.000
0 0 0 0
750
3.500
5.000
Berechnungsbeispiel
P = (30,35,15,5,10,20,25)
![Page 16: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/16.jpg)
16 WS03/04
Berechnungsbeispiel
7125
1137520103504375
71252053510002625
1300020153525000
min
5,54,2
5,43,2
5,32,2
min
5,1,2min
5,2
541
531
521
5152
pppmm
pppmm
pppmm
pppkmkm
m
kk
![Page 17: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/17.jpg)
17 WS03/04
Matrixkettenprodukt und optimale Splitwerte mit dynamischer Programmierung
Algorithmus dyn-mat-ket(p)
Input: Eingabefolge p= p0,p1,....,pn pi-1 pi Dimension der Matrix Ai
Output: m[1,n] und eine Matrix s[i,j] von opt. Splitwerten1 n := length(p)2 for i := 1 to n do m[i, i] := 03 for l := 2 to n do4 for i := 1 to n – l +1 do5 j := i + l – 16 m[i, j] := 7 for k := i to j – 1 do8 q := m[i, j]
9 m[i, j] := min(m[i, j], pi-1 pk pj + m[i, k] + m[k + 1, j])
10 if m[i, j] < q then s[i, j] := k11 return (m[1, n], s)
![Page 18: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/18.jpg)
18 WS03/04
2
3
4
5
6 1
2
3
4
5
j i
3
1
1 2
3 3
43
5
5
Berechnungsbeispiel für Splitwerte
![Page 19: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/19.jpg)
19 WS03/04
Berechnung der optimalen Klammerung
Algorithmus Opt-Klam
Input: Die Sequenz A der Matrizen, die Matrix s der optimalen
Splitwerte, zwei Indizes i und j
Output: Eine optimale Klammerung von Ai...j
1 if i < j
2 then X := Opt-Klam(A, s, i, s[i, j])
3 Y := Opt-Klam(A, s, s[i, j] + 1, j)
4 return (XY)
5 else return Ai
Aufruf: Opt–Klam(A, s, 1, n)
![Page 20: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/20.jpg)
20 WS03/04
Matrixkettenprodukt mit dynamischer Programmierung (Top-down Ansatz)
Notizblock-Methode zur Beschleunigung einer
rekursiven Problemlösung:
Ein Teilproblem wird nur beim ersten Auftreten gelöst,
die Lösung wird in einer Tabelle gespeichert und bei
jedem späteren Auftreten desselben Teilproblems
wird die Lösung (ohne erneute Rechnung!) in
der Lösungstabelle nachgesehen.
![Page 21: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/21.jpg)
21 WS03/04
Memoisiertes Matrixkettenprodukt(Notizblock-Methode)
Algorithmus mem-mat-ket(p, i, j)
Invariante: mem-mat-ket(p, i, j) liefert m[i, j] und m[i, j] hat den korrekten Wert, falls m[i, j] <
1 if i = j then return 0
2 if m[i, j] < then return m[i, j]
3 for k := i to j – 1 do
4 m[i, j] := min(m[i, j], pi-1 pk pj +
mem-mat-ket(p, i, k) +
mem-mat-ket(p, k + 1, j))
5 return m[i, j]
![Page 22: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/22.jpg)
22 WS03/04
Memoisiertes Matrixkettenprodukt(Notizblock-Methode)
Aufruf:
1 n:= length(p) – 12 for i := 1 to n do3 for j := 1 to n do4 m[i, j] := 5 mem-mat-ket(p,1,n)
Zur Berechnung aller Einträge m[i, j] mit Hilfe von mem-mat-ket genügeninsgesamt O(n3) Schritte.
O(n2) Einträge jeder Eintrag m[i, j] wird einmal eingetragenjeder Eintrag m[i, j] wird zur Berechnung eines Eintrages m[i´,j´] betrachtet, falls i´= i und j´>j oder j´= j und i´< i 2n Einträge benötigen m[i, j]
![Page 23: WS03/041 Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.](https://reader038.fdocuments.net/reader038/viewer/2022110117/55204d6549795902118bacfb/html5/thumbnails/23.jpg)
23 WS03/04
Bemerkung zum Matrixkettenprodukt
1. Es gibt eine Algorithmus mit linearer Laufzeit O(n), der eine
Klammerung findet mit Multiplikationsaufwand 1.155 Mopt
2. Es gibt einen Algorithmus mit Laufzeit O(n log n), der optimale
Klammerung findet.