WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th....
-
Upload
gottlieb-vogel -
Category
Documents
-
view
106 -
download
1
Transcript of WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th....
![Page 1: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/1.jpg)
WS 2006-07
Algorithmentheorie
08 – Dynamische Programmierung(2)
Matrixkettenprodukt
Prof. Dr. Th. Ottmann
![Page 2: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/2.jpg)
2 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/3.jpg)
3 WS 2006-07
Kettenprodukt von Matrizen
Gegeben: Folge (Kette) A1,A2,...,An von Matrizen
Gesucht: Produkt A1 A2 .... An
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/4.jpg)
4 WS 2006-07
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 ( A3 A4 ) ) )
( A1 ( ( A2 A3 ) A4 ) )
( ( A1 A2 )( A3 A4 ) )
( ( A1 ( A2 A3 ) ) A4 )
( ( ( A1 A2 ) A3 ) A4 )
![Page 5: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/5.jpg)
5 WS 2006-07
Anzahl der verschiedenen Klammerungen
Klammerungen entsprechen strukturell verschiedenen Bäumen.
![Page 6: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/6.jpg)
6 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/7.jpg)
7 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/8.jpg)
8 WS 2006-07
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 9: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/9.jpg)
9 WS 2006-07
Matrizenkettenprodukt Beispiel
Berechnung des Produkts von A1,A2,A3 mit
A1 :10 100 Matrix
A2 :100 5 Matrix
A3 : 5 50 Matrix
b) Klammerung ( ( A1 A2 ) A3 ) erfordert
A´= (A1 A2):
A´ A3 :
Summe:
![Page 10: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/10.jpg)
10 WS 2006-07
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,j] = optimaler Splitwert k, für den das Minimum angenommen wird
jkijki
pppjkmkim 1,1,min
![Page 11: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/11.jpg)
11 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/12.jpg)
12 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/13.jpg)
13 WS 2006-07
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:= length(p)
2 for i:= 1 to n do m[i, i] := 0
3 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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/14.jpg)
14 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/15.jpg)
15 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/16.jpg)
16 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/17.jpg)
17 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/18.jpg)
18 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/19.jpg)
19 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/20.jpg)
20 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/21.jpg)
21 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/22.jpg)
22 WS 2006-07
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: WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.](https://reader036.fdocuments.net/reader036/viewer/2022081518/55204d6549795902118bad36/html5/thumbnails/23.jpg)
23 WS 2006-07
Bemerkung zum Matrixkettenprodukt
1. Es gibt einen Algorithmus mit Laufzeit O(n log n), der optimale
Klammerung findet.
3. Es gibt einen Algorithmus mit linearer Laufzeit O(n), der eine
Klammerung findet mit Multiplikationsaufwand 1.155 Mopt