16. All Pairs Shortest Path (ASPS)



Ähnliche Dokumente
Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Das Briefträgerproblem

Abschnitt: Algorithmendesign und Laufzeitanalyse

Datenstrukturen & Algorithmen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Konzepte der Informatik

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Numerische Verfahren und Grundlagen der Analysis

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Teile und Herrsche Teil 2

Anmerkungen zur Übergangsprüfung

Algorithmen II Vorlesung am

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Programmierkurs Java

WS 2009/10. Diskrete Strukturen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Theoretische Grundlagen der Informatik

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Programmieren I. Kapitel 7. Sortieren und Suchen

Musterlösungen zur Linearen Algebra II Blatt 5

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester

Vorlesung 2 KÜRZESTE WEGE

4. Relationen. Beschreibung einer binären Relation

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Algorithmentheorie Maximale Flüsse

8 Diskrete Optimierung

6.2 Perfekte Sicherheit

Wortproblem für kontextfreie Grammatiken

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

WS 2008/09. Diskrete Strukturen

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Aufgaben zur Flächenberechnung mit der Integralrechung

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04

Überblick. Lineares Suchen

Proseminar Effiziente Algorithmen

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Kombinatorische Optimierung

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

W-Rechnung und Statistik für Ingenieure Übung 11

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Lineare Gleichungssysteme

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

Information Systems Engineering Seminar

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Simplex-Umformung für Dummies

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Algorithmen und Datenstrukturen 2

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

Theoretische Grundlagen der Informatik WS 09/10

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Einführung in die Programmierung (EPR)

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Der Zwei-Quadrate-Satz von Fermat

Guten Morgen und Willkommen zur Saalübung!

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Kapiteltests zum Leitprogramm Binäre Suchbäume

4 Greedy-Algorithmen (gierige Algorithmen)

Vorkurs Mathematik Übungen zu Polynomgleichungen

1 topologisches Sortieren

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Absolute Stetigkeit von Maßen

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

6.2 Scan-Konvertierung (Scan Conversion)

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

WS 2013/14. Diskrete Strukturen

Professionelle Seminare im Bereich MS-Office

Algorithmen und Datenstrukturen 2

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übungen Programmieren 1 Felix Rohrer. Übungen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

4 Vorlesung: Matrix und Determinante

7 Die Determinante einer Matrix

EINFACHES HAUSHALT- KASSABUCH

Welches Problem denn? Das Heiratsproblem. Formale Beschreibung. Paarungen

Grundbegriffe der Informatik

Gleitkommaarithmetik und Pivotsuche bei Gauß-Elimination. Lehrstuhl für Angewandte Mathematik Wintersemester 2009/

Kostenmaße. F3 03/04 p.188/395

Algorithmen & Komplexität

Beispiel vor dem Beweis:

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

EDV-Fortbildung Kombi-Schulung Word-Excel Modul Excel. Informationen zum Programm. Die Programmoberfläche von Excel

Auswerten mit Excel. Viele Video-Tutorials auf Youtube z.b.

Informationsblatt Induktionsbeweis

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Maximizing the Spread of Influence through a Social Network

19. Dynamic Programming I

Transkript:

. All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e f a 0 0 9 b 0 0 9 c -3 0 d - 0 0 a b - d 8 c e 7 - f e 8 9 0 - f 0. All Pairs Shortest Path

All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e f a 0 0 9 b 0 0 9 c -3 0 d - 0 0 a b - d 8 c e 7 - f e 8 9 0 - f 0. All Pairs Shortest Path

Eingabe APSP: Matrix W=(w ), die Graph repräsentiert ij w = ij All Pairs Shortest Path 0, wenn i=j Gewicht der ger. Kante (i,j), wenn i j und (i,j) E, wenn i j und (i,j) E a b c d e f a 0 b 0 b c 0 7 d - 0 e 8 0 - f 0 a - d 8 c e 7 - f. All Pairs Shortest Path 3

Eingabe APSP: Matrix W=(w ), die Graph repräsentiert ij w = ij All Pairs Shortest Path 0, wenn i=j Gewicht der ger. Kante (i,j), wenn i j und (i,j) E, wenn i j und (i,j) E a b c d e f a 0 b 0 b c 0 7 d - 0 e 8 0 - f 0 a - d 8 c e 7 - f. All Pairs Shortest Path

Eingabe APSP: Matrix W=(w ), die Graph repräsentiert ij w = ij All Pairs Shortest Path Annahme: Keine negativen Zyklen! 0, wenn i=j Gewicht der ger. Kante (i,j), wenn i j und (i,j) E, wenn i j und (i,j) E a b c d e f a 0 b 0 b c 0 7 d - 0 e 8 0 - f 0 a - d 8 c e 7 - f. All Pairs Shortest Path

Nummeriere Knoten von bis n= V Betrachte kürzeste i-j-wege, die nur über Knoten bis k laufen 3 0 3 0 3 0 7-0 0 7 8 9 0 - k=3 3-8 7-0. All Pairs Shortest Path

Nummeriere Knoten von bis n= V Betrachte kürzeste i-j-wege, die nur über Knoten bis k laufen 3 0 3 0 3 0 7-0 0 7 8 9 0 - k=3 3-8 7-0. All Pairs Shortest Path 7

Zur Erinnerung: All Pairs Shortest Path Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-weg, der keinen Knoten doppelt benutzt. Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-weg, der nur über Knoten aus {,,k} läuft: k i j. All Pairs Shortest Path 8

Zur Erinnerung: All Pairs Shortest Path Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-weg, der keinen Knoten doppelt benutzt. Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-weg, der nur über Knoten aus {,,k} läuft: k Knoten k tritt maximal einmal auf i j. All Pairs Shortest Path 9

Zur Erinnerung: All Pairs Shortest Path Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-weg, der keinen Knoten doppelt benutzt. Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-weg, der nur über Knoten aus {,,k} läuft: Weg von u nach k führt nur über Knoten aus {,,k-} k i j. All Pairs Shortest Path 0

Zur Erinnerung: All Pairs Shortest Path Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-weg, der keinen Knoten doppelt benutzt. Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-weg, der nur über Knoten aus {,,k} läuft: Weg von k nach v führt nur über Knoten aus {,,k-} k i j. All Pairs Shortest Path

Kürzester i-j-weg über Knoten aus {,,k} ist (a) kürzester i-j-weg über Knoten aus {,,k-} oder (b) kürzester i-k-weg über Knoten aus {,,k-} gefolgt von kürzestem k-j-weg über Knoten aus {,,k-} Fall (b): k i j. All Pairs Shortest Path

(k) Sei d ij die Länge eines kürzesten i-j-wegs mit Knoten aus {,,k} (k) d = ij w ij, falls k=0 (k-) (k-) (k-) min ( d, d + d ), falls k ij ik kj (n) (n) ij Matrix D =(d ) enthält die gesuchte Lösung. All Pairs Shortest Path 3

Floyd-Warshall(W,n) (0). D W. for k to n do 3. for i to n do. for j to n do. d min(d ij, d ik + d kj ). return D ij (n) (k) (k-) (k-) (k-). All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 0 8 0 - D (0) 0 D () 3 3. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 0 8 0 - D (0) 0 D () 3 0 3. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 0 8 0 - D (0) 0 D () 3 0 0 3. All Pairs Shortest Path 7

3 7-3 8-3 0 0 3 0 7-3 0 8 0 - D (0) 0 D () 3 0 0 3 0 7. All Pairs Shortest Path 8

3 7-3 8-3 0 0 3 0 7-3 0 8 0 - D (0) 0 D () 3 0 0 3 0 7-3 - 0. All Pairs Shortest Path 9

3 7-3 8-3 0 0 3 0 7-3 0 8 0 - D (0) 0 D () 3 0 0 3 0 7-3 - 0 8 0 -. All Pairs Shortest Path 0

3 7-3 8-3 0 0 3 0 7-3 0 8 0 - D (0) 0 D () 3 0 0 3 0 7-3 - 0 8 0-0. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 - 0 8 0 - D () 0 D () 3 0 3. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 - 0 8 0 - D () 0 D () 3 0 0 3. All Pairs Shortest Path 3

3 7-3 8-3 0 0 3 0 7-3 - 0 8 0 - D () 0 D () 3 0 0 3. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 - 0 8 0 - D () 0 D () 3 0 0 3 0 7. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 - 0 8 0 - D () 0 D () 3 0 0 3 0 7-3 - 3 0. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 7-3 - 0 8 0 - D () 0 D () 3 0 0 3 0 7-3 - 3 0 8 0 -. All Pairs Shortest Path 7

3 7-3 8-3 0 0 3 0 7-3 - 0 8 0 - D () 0 D () 3 0 0 3 0 7-3 - 3 0 8 0-0. All Pairs Shortest Path 8

3 7-3 8-3 0 0 3 0 7-3 - 3 0 8 0 - D () 0 D (3) 3 0 3 3. All Pairs Shortest Path 9

3 7-3 8-3 0 0 3 0 7-3 - 3 0 8 0 - D () 0 D (3) 3 0 3 0 3. All Pairs Shortest Path 30

3 7-3 8-3 0 0 3 0 7-3 - 3 0 8 0 - D () 0 D (3) 3 0 3 0 3 0 7. All Pairs Shortest Path 3

3 7-3 8-3 0 0 3 0 7-3 - 3 0 8 0 - D () 0 D (3) 3 0 3 0 3 0 7-3 - 3 0 0. All Pairs Shortest Path 3

3 7-3 8-3 0 0 3 0 7-3 - 3 0 8 0 - D () 0 D (3) 3 0 3 0 3 0 7-3 - 3 0 0 8 9 0 -. All Pairs Shortest Path 33

3 7-3 8-3 0 0 3 0 7-3 - 3 0 8 0 - D () 0 D (3) 3 0 3 0 3 0 7-3 - 3 0 0 8 9 0-0. All Pairs Shortest Path 3

3 7-3 8-3 0 3 0 3 0 7-3 - 3 0 0 8 9 0 - D (3) 0 D () 3 0 0 3 3. All Pairs Shortest Path 3

3 7-3 8-3 0 3 0 3 0 7-3 - 3 0 0 8 9 0 - D (3) 0 D () 3 0 0 3 0 0 3. All Pairs Shortest Path 3

3 7-3 8-3 0 3 0 3 0 7-3 - 3 0 0 8 9 0 - D (3) 0 D () 3 0 0 3 0 0 3-0 0 7. All Pairs Shortest Path 37

3 7-3 8-3 0 3 0 3 0 7-3 - 3 0 0 8 9 0 - D (3) 0 D () 3 0 0 3 0 0 3-0 0 7-3 - 3 0 0. All Pairs Shortest Path 38

3 7-3 8-3 0 3 0 3 0 7-3 - 3 0 0 8 9 0 - D (3) 0 D () 3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0 -. All Pairs Shortest Path 39

3 7-3 8-3 0 3 0 3 0 7-3 - 3 0 0 8 9 0 - D (3) 0 D () 3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0-0. All Pairs Shortest Path 0

3 7-3 8-3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0 - D () 0 D () 3 0 0 9 3. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0 - D () 0 D () 3 0 0 9 0 0 9 3. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0 - D () 0 D () 3 0 0 9 0 0 9 3-0 0. All Pairs Shortest Path 3

3 7-3 8-3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0 - D () 0 D () 3 0 0 9 0 0 9 3-0 0-3 - 3 0. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0 - D () 0 D () 3 0 0 9 0 0 9 3-0 0-3 - 3 0 8 8 9 0 -. All Pairs Shortest Path

3 7-3 8-3 0 0 3 0 0 3-0 0 7-3 - 3 0 0 8 8 9 0 - D () 0 D () 3 0 0 9 0 0 9 3-0 0-3 - 3 0 8 8 9 0-0. All Pairs Shortest Path

3 7-3 8-3 0 0 9 0 0 9 3-0 0-3 - 3 0 8 8 9 0 - D () 0 D () 3 0 0 9 0 0 9 3-0 0-3 - 3 0 8 8 9 0-0. All Pairs Shortest Path 7

3 7-3 8-3 0 0 9 0 0 9 3-0 0-3 - 3 0 8 8 9 0 - D () 0 D () 3 0 0 9 0 0 9 3-0 0-3 - 3 0 8 8 9 0-0. All Pairs Shortest Path 8

Satz.: Sei G=(V,E) ein Graph mit nicht-negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O( V ³) Zeit.. All Pairs Shortest Path 9

Aufrechterhalten der kürzesten Wege: Konstruiere Vorgängermatrix Π Dazu konstruiere Sequenz Π,, Π mit Π = Π (k) Π ist Vorgängermatrix zu D (k) π ij ist Vorgänger von Knoten j auf dem kürzesten Weg von Knoten i über Knoten aus {,,k} Die Startmatrix: () (n) (n) (k) (0) π ij = nil, falls i=j oder w ij = i, falls i j und w < ij. All Pairs Shortest Path 0

Aufrechterhalten der kürzesten Wege: Konstruiere Vorgängermatrix Π Dazu konstruiere Sequenz Π,, Π mit Π = Π (k) Π ist Vorgängermatrix zu D (k) π ij ist Vorgänger von Knoten j auf dem kürzesten Weg von Knoten i über Knoten aus {,,k} Das Aktualisieren: (k) π ij = π π (k-) ij (k-) kj (k-) () (n) (n) (k), falls d d + d ij, falls d > d + d ij (k-) (k-) ik (k-) ik (k-) kj (k-) kj. All Pairs Shortest Path

Teile & Herrsche: Divide & Conquer Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Probleme: Wie setzt man zusammen? [erfordert algorithmisches Geschick und Übung] Laufzeitanalyse (Auflösen der Rekursion) [ist normalerweise nach Standardschema; erfordert ebenfalls Übung] 7. Divide & Conquer

Divide & Conquer Teile & Herrsche: Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Algorithmen: Merge Sort Quick Sort 7. Divide & Conquer 3

Matrix Multiplikation 3 7 0 0 3 0 0 3 0 0 3 0 0 0 3 = 7. Divide & Conquer

Matrix Multiplikation 3 7 0 0 3 0 0 3 0 0 3 0 0 0 3 = Zeile Spalte: 3 + 7 0 + 3 + = 9 7. Divide & Conquer

Matrix Multiplikation 3 7 0 9 0 3 0 0 3 0 0 3 0 0 0 3 = Zeile Spalte: 3 + 7 0 + 3 + = 9 7. Divide & Conquer

Matrix Multiplikation 3 7 0 9 0 0 3 0 0 3 0 0 3 0 0 0 3 = Zeile Spalte: 3 + 7 0 + + 3 = 0 7. Divide & Conquer 7

Matrix Multiplikation 3 7 0 9 0 3 0 3 0 0 3 0 0 3 0 0 0 3 = 7. Divide & Conquer 8

Matrix Multiplikation 3 7 0 9 0 3 9 0 3 0 0 3 0 0 3 0 0 0 3 = 7. Divide & Conquer 9

Matrix Multiplikation 3 7 0 9 0 3 9 0 3 0 0 3 0 0 3 0 0 0 3 = 7. Divide & Conquer 0

Matrix Multiplikation 3 7 0 9 0 3 9 0 3 0 0 3 0 0 3 0 0 0 3 = 7. Divide & Conquer

Matrix Multiplikation 3 7 0 9 0 3 9 0 3 0 0 3 0 0 3 0 0 0 3 = 7. Divide & Conquer

Matrix Multiplikation Problem: Berechne das Produkt zweier n n Matrizen Eingabe: Matrizen X,Y Ausgabe: Matrix Z = X Y X x, x, x,3 x, x, x, x,3 x, = x3, x3, x3,3 x3, x, x, x,3 x,, Y y y = y y,, 3, y y y y,, 3, y y y y,3,3 3,3 y y y y,, 3,,,,3, 7. Divide & Conquer 3

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 7

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 8

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 9

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 70

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n). new array Z[,..,n][,..,n]. for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 7

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 7

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do Θ(n) 3. for j to n do. Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 73

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do Θ(n) 3. for j to n do Θ(n²). Z[i][j] 0. for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 7

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do Θ(n) 3. for j to n do Θ(n²). Z[i][j] 0 Θ(n²). for k to n do. Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 7

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do Θ(n) 3. for j to n do Θ(n²). Z[i][j] 0 Θ(n²). for k to n do Θ(n³). Z[i][j] Z[i][j] + X[i][k] Y[k][j] 7. return Z 7. Divide & Conquer 7

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do Θ(n) 3. for j to n do Θ(n²). Z[i][j] 0 Θ(n²). for k to n do Θ(n³). Z[i][j] Z[i][j] + X[i][k] Y[k][j] Θ(n 3 ) 7. return Z 7. Divide & Conquer 77

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do Θ(n) 3. for j to n do Θ(n²). Z[i][j] 0 Θ(n²). for k to n do Θ(n³). Z[i][j] Z[i][j] + X[i][k] Y[k][j] Θ(n 3 ) 7. return Z Θ() 7. Divide & Conquer 78

Matrix Multiplikation MatrixMultiplikation(Array X, Y, n) Laufzeit:. new array Z[,..,n][,..,n] Θ(n²). for i to n do Θ(n) 3. for j to n do Θ(n²). Z[i][j] 0 Θ(n²). for k to n do Θ(n³). Z[i][j] Z[i][j] + X[i][k] Y[k][j] Θ(n 3 ) 7. return Z Θ() Θ(n³) 7. Divide & Conquer 79

Teile und Herrsche: Matrix Multiplikation A C B E D G F H = AE + BG AF + CE+ DG CF+ BH DH Aufwand: 8 Multiplikationen von n/ n/ Matrizen Additionen von n/ n/ Matrizen 7. Divide & Conquer 80

Teile und Herrsche: Matrix Multiplikation A C B E D G F H = AE + BG AF + CE+ DG CF+ BH DH Aufwand: 8 Multiplikationen von n/ n/ Matrizen Additionen von n/ n/ Matrizen Laufzeit: T(n) = 8 T(n/) + Θ(n²) 7. Divide & Conquer 8

Laufzeit: T(n) = 8 T(n/) + k n² a b f(n) Master Theorem: f(n) = k n² Matrix Multiplikation 7. Divide & Conquer 8

Laufzeit: T(n) = 8 T(n/) + k n² a b f(n) Master Theorem: f(n) = k n² Matrix Multiplikation log a Fall : Laufzeit Θ(n b ) = Θ(n³) 7. Divide & Conquer 83

Laufzeit: T(n) = 8 T(n/) + k n² a b f(n) Master Theorem: f(n) = k n² Matrix Multiplikation log a Fall : Laufzeit Θ(n b ) = Θ(n³) Formaler Beweis durch Induktion!! 7. Divide & Conquer 8

Laufzeit: T(n) = 8 T(n/) + k n² a b f(n) Master Theorem: f(n) = k n² Matrix Multiplikation log a Fall : Laufzeit Θ(n b ) = Θ(n³) Formaler Beweis durch Induktion!! Nicht besser als einfacher Algorithmus 7. Divide & Conquer 8