Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen WS 08/09 Friedhelm Meyer auf der Heide Vorlesung 6, 28.10.08 Friedhelm Meyer auf der Heide 1
Organisatorisches Prüfungsanmeldung bis 30.10. im LSF für den Prüfungszeitraum im Dezember. Für die anderen: Anfang Dezember. Prüfungsvoraussetzung : 30% der Punkte der Hausaufgaben (auf jeden Fall anmelden!) Prüfung: mündlich 15-20 min Prüfungszeiträume: 11.12. - 15.12. 9.2. - 20.2. 23.3. - 3.4. Auch für gemeinsame Prüfungen mit Komplexitätstheorie Friedhelm Meyer auf der Heide 2
Shortest paths problems Friedhelm Meyer auf der Heide 3
Shortest paths problems Friedhelm Meyer auf der Heide 4
Shortest paths problems Friedhelm Meyer auf der Heide 5
Negative edge weights In the sequel, we assume that there are no negative edge weights. Friedhelm Meyer auf der Heide 6
Dijkstra s algorithm Decrease key Lemma: After each run of the while-loop, d(u) = δ(s,u) for each u S. Clearly, this lemma implies the correctness. Friedhelm Meyer auf der Heide 7
Dijkstra s algorithm Friedhelm Meyer auf der Heide 8
Dijkstra s algorithm Time bound: V times extract min, E times Decrease key dominate the runtime. Store Q in a linear array: Extract min time O( V ), Decrease key time O(1) Time: O( V 2 + E ) = O( V 2 ) Store Q in a Fibonacci-Heap: Extract min and Decrease key need time O(log( V )) Time: O(( V + E ) log( V )) = O( E log( V )) Friedhelm Meyer auf der Heide 9
Dijkstra s algorithm Animation in a geometric graph: Edge weight = Euclidean distance Friedhelm Meyer auf der Heide 10
All-pairs-shortest-paths (APSP) Friedhelm Meyer auf der Heide 11
All-pairs-shortest-paths (APSP) Eingabe: Gerichteter, gewichteter Graph G=(V,E,w), V={1,,n}, ohne negative Kreise, repräsentiert durch nxn-gewichtsmatrix W mit Ausgabe: nxn-matrix A mit a(i,j)= Länge eines kürzesten Weges von i nach j. (Wir setzen wieder voraus, dass keine negativen Kreise existieren.) Friedhelm Meyer auf der Heide 12
Beispiel Friedhelm Meyer auf der Heide 13
Einfacher Algorithmus Starte Dijkstras Algorithmus für jeden Knoten i V. Laufzeit: Bei Eingabeformat Gewichtsmatrix benötigt Dijkstras Algorithmus Zeit O(n 3 ), dieser Algorithmus für APSP also Zeit O(n 4 ). Geht das schneller? Friedhelm Meyer auf der Heide 14
Floyd-Warshall Algorithmus: Dynamische Programmierung Sei die Länge eines kürzesten Weges von i nach j, der ausser i und j nur Knoten aus {1,,k} benutzt. Dann ist die Länge eins kürzesten Weges von i nach j. Weiter gilt: Weg der Länge : Benutzt nur innere Knoten aus {1,,k-1} oder benutzt zusätzlich noch Knoten k. Friedhelm Meyer auf der Heide 15
Floyd-Warshall Algorithmus: Dynamische Programmierung Laufzeit: Berechnung eines n 3 viele werden berechnet: Also: Zeit O(n 3 ). benötigt konstante Zeit, Friedhelm Meyer auf der Heide 16
Beispiel D (0) = W = Friedhelm Meyer auf der Heide 17
APSP : noch mal Dynamische Programmierung Friedhelm Meyer auf der Heide 18
APSP : noch mal Dynamische Programmierung Dynamische Programmierung liefert Zeit O(n 3 ). Friedhelm Meyer auf der Heide 19
APSP via Matrixmultiplikation Beobachtung: Sei D (m) die Matrix ( ), dann ist D (1) = W. Betrachte Matrixmultiplikation, wobei Multiplikation durch Addition und Addition durch Minimumbildung ersetzt ist. Dann gilt für m 2: D (m) =D (m-1) x W Für jedes m n-1 ist D (m) die gesuchte Ausgabematrix A. Was haben wir davon?? Friedhelm Meyer auf der Heide 20
APSP via Matrixmultiplikation D (1) = W D (m) = D (m-1) x W für m 2. Für jedes m n-1 ist D (m) die gesuchte Ausgabematrix A. Die Matrixmultiplikation ist (auch über demq(min, +)) assoziativ, d.h. z.b. : D (m) = D (m-1) x W = W m, und wir können D (m) = W m ( für Zweierpotenzen m) durch iteriertes Quadrieren berechnen. W, W 2, W 4, W 8,,W m Das benötigt log(m) Matrixmultiplikationen. Friedhelm Meyer auf der Heide 21
APSP via Matrixmultiplikation Zeit für Matrixmultiplikation (Schulmethode): O(n 3 ) Zeit: O(log(n) x Zeit für Matrixmult. ) Friedhelm Meyer auf der Heide 22
APSP via Matrixmultiplikation Zeit für Matrixmultiplikation(Schulmethode): O(n 3 ) Zeit für APSP: O(log(n) x Zeit für Matrixmult. =O(n 3 log(n)) Sie haben auf dem ersten Aufgabenblatt die Matrixmultiplikation von Schönhage-Strassen kennengelernt, Laufzeit :=O(n log 2(7) = O(n 2.81 ). Der asymptotisch schnellste Algorithmus für M.M. (von Coppersmith- Winograd) hat Laufzeit O(n 2.38 ) Achtung: Diese Verfahren können wir nicht direkt einsetzen, da sie einen Körper oder zumindest Ring (z.b. Q(+,*)) voraussetzen, aber fürq(min,+) nicht funktionieren (Min hat kein inverses Element). Beste bekannte Laufzeit: O(n 3 (log log n) 3 / (log n) 2 ) Friedhelm Meyer auf der Heide 23
Berechnung der transitiven Hülle Eingabe: Gerichteter Graph G=(V,E), V={1,,n}, Beschrieben durch Adjazenzmatrix A. Ausgabe: 0-1-Matrix H mit h(i,j)=1 gdw. es gibt gerichteten Weg von i nach j in G. Der Graph G* mit Adjazenzmatrix H heisst transitive Hülle von G Friedhelm Meyer auf der Heide 24
Thank you for your attention! Friedhelm Meyer auf der Heide Heinz Nixdorf Institute & Computer Science Department Fürstenallee 11 33102 Paderborn, Germany Tel.: +49 (0) 52 51/60 64 80 Fax: +49 (0) 52 51/62 64 82 E-Mail: fmadh@upb.de http://www.upb.de/cs/ag-madh Friedhelm Meyer auf der Heide 25