WS 2006-07 Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (4) Editierdistanz Approximative Zeichenkettensuche Sequence Alignment Prof. Dr. Th. Ottmann WS
Christian Scheideler SS 2009
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Schnelle Matrizenoperationen von Christian Büttner
Thema: Algorithmusdesignverfahren Vu Hoang Lam IMN04 HTWK-Leipzig Obersemminar Softwareentwicklung.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Algorithmentheorie 04 –Hashing
Suche in Texten: Suffix-Bäume
Algorithmentheorie 6 – Greedy-Verfahren
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
1WS 06/07 Organisatorisches 1.Vorlesung am Montag, : 9-11 Uhr in Gebäude 106, Raum Podcasts: Probleme mit der Videoqualität sind behoben.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
Algorithmen und Datenstrukturen
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Algorithmentheorie 7 – Bin Packing
Union-Find-Strukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.
Geometrisches Divide and Conquer
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Minimum Spanning Tree: MST
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung
Diskrete Mathematik II
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Polynome und schnelle Fourier-Transformation
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Mehrkriterielle Optimierung mit Metaheuristiken
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Christian Mansky Design - Fallstudien Christian Mansky
Das Traveling Salesman Problem (TSP)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Korrektheit von Programmen – Testen
WS03/041 Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Wiederholung TexPoint fonts used in EMF.
 Präsentation transkript:

WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann

2WS 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.

3WS Kettenprodukt von Matrizen Gegeben: Folge (Kette) A 1,A 2,...,A n von Matrizen Gesucht: Produkt A 1 A A n 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.

4WS Beispiel für vollständig geklammerte Matrizenprodukte der Kette A 1,A 2,...,A n Alle vollständig geklammerten Matrizenprodukte der Kette A 1,A 2,A 3, A 4 sind: ( A 1 ( A 2 ( A 3 A 4 ) ) ) ( A 1 ( ( A 2 A 3 ) A 4 ) ) ( ( A 1 A 2 )( A 3 A 4 ) ) ( ( A 1 ( A 2 A 3 ) ) A 4 ) ( ( ( A 1 A 2 ) A 3 ) A 4 )

5WS Anzahl der verschiedenen Klammerungen Klammerungen entsprechen strukturell verschiedenen Bäumen.

6WS Anzahl der verschiedenen Klammerungen P(n) sei die Anzahl der verschiedenen Klammerungen von A 1...A k A k+1...A n Bem: Finden der optimalen Klammerung durch Ausprobieren sinnlos.

7WS Multiplikation zweier Matrizen Algorithmus Matrix-Mult Input: Eine (p q) Matrix A und eine (q r) Matrix B Output: Die (p r) Matrix C = A B 1 for i := 1 to p do 2 for j :=1 to r do 3 C[i, j] := 0 4 for k := 1 to q do 5 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 n 3 Multiplikationen benötigt. Es geht auch mit O(n ) Multiplikationen.

8WS Matrizenkettenprodukt Beispiel A 1 : Matrix A 2 :100 5 Matrix A 3 : 5 50 Matrix a) Klammerung (A 1 (A 2 A 3 )) erfordert A´´= (A 2 A 3 ): A 1 A´´ : Summe:

9WS Matrizenkettenprodukt Beispiel Berechnung des Produkts von A 1,A 2,A 3 mit A 1 : Matrix A 2 :100 5 Matrix A 3 : 5 50 Matrix b) Klammerung ( ( A 1 A 2 ) A 3 ) erfordert A´= (A 1 A 2 ): A´ A 3 : Summe:

10WS Struktur der optimalen Klammerung (A i...j ) = ((A i...k ) (A k+1....j )) i k < j Jede optimale Lösung des Matrixkettenprodukt Problems enthält optimale 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

11WS Rekursive Matrixkettenprodukt Algorithmus rek-mat-ket(p, i, j) Input: Eingabefolge p = p 0,p 1,....,p n, p i-1 p i Dimensionen der Matrix A i Invariante: rek-mat-ket(p, i, j) liefert m[i, j] 1 if i = j then return 0 2 m[i, j] := 3 for k := i to j – 1 do 4 m[i, j] := min(m[i,j], p i-1 p k p j + 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)

12WS Rekursives Matrixkettenprodukt, Laufzeit Sei T(n) die Anzahl der Schritte zur Berechnung von rek-mat-ket(p,1,n). Exponentielle Laufzeit!

13WS Matrixkettenprodukt mit dynamischer Programmierung Algorithmus dyn-mat-ket Input: Eingabefolge p= p 0,p 1,....,p n p i-1 p i Dimension der Matrix A i 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], p i-1 p k p j + m[i, k] + m[k + 1, j]) 9 return m[1, n]

14WS Berechnungsbeispiel A A A A A A P = (30,35,15,5,10,20,25)

15WS m j i Berechnungsbeispiel P = (30,35,15,5,10,20,25)

16WS Berechnungsbeispiel

17WS Matrixkettenprodukt und optimale Splitwerte mit dynamischer Programmierung Algorithmus dyn-mat-ket(p) Input: Eingabefolge p= p 0,p 1,....,p n p i-1 p i Dimension der Matrix A i Output: m[1,n] und eine Matrix s[i,j] von opt. Splitwerten 1 n := length(p) 2 for i := 1 to n do m[i, i] := 0 3 for l := 2 to n do 4 for i := 1 to n – l +1 do 5 j := i + l – 1 6 m[i, j] := 7 for k := i to j – 1 do 8 q := m[i, j] 9 m[i, j] := min(m[i, j], p i-1 p k p j + m[i, k] + m[k + 1, j]) 10 if m[i, j] < q then s[i, j] := k 11 return (m[1, n], s)

18WS j i Berechnungsbeispiel für Splitwerte

19WS 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 A i...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 (X Y) 5 else return A i Aufruf: Opt–Klam(A, s, 1, n)

20WS 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.

21WS 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], p i-1 p k p j + mem-mat-ket(p, i, k) + mem-mat-ket(p, k + 1, j)) 5 return m[i, j]

22WS Memoisiertes Matrixkettenprodukt (Notizblock-Methode) Aufruf: 1 n:= length(p) – 1 2 for i := 1 to n do 3 for j := 1 to n do 4 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ügen insgesamt O(n 3 ) Schritte. O(n 2 ) Einträge jeder Eintrag m[i, j] wird einmal eingetragen jeder 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]

23WS 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 M opt