HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity 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 HEINZ NIXDORF INSTITUTE Organisatorisches University of Paderborn Algorithms and Complexity • 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!) Auch für gemeinsame • Prüfung: mündlich 15-20 min • Prüfungszeiträume: 11.12. - 15.12. 9.2. - 20.2. 23.3. - 3.4. Prüfungen mit Komplexitätstheorie Friedhelm Meyer auf der Heide 2 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Shortest paths problems Friedhelm Meyer auf der Heide 3 HEINZ NIXDORF INSTITUTE Shortest paths problems University of Paderborn Algorithms and Complexity Friedhelm Meyer auf der Heide 4 HEINZ NIXDORF INSTITUTE Shortest paths problems University of Paderborn Algorithms and Complexity Friedhelm Meyer auf der Heide 5 HEINZ NIXDORF INSTITUTE Negative edge weights University of Paderborn Algorithms and Complexity In the sequel, we assume that there are no negative edge weights. Friedhelm Meyer auf der Heide 6 HEINZ NIXDORF INSTITUTE Dijkstra‘s algorithm University of Paderborn Algorithms and Complexity 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 HEINZ NIXDORF INSTITUTE Dijkstra‘s algorithm University of Paderborn Algorithms and Complexity Friedhelm Meyer auf der Heide 8 HEINZ NIXDORF INSTITUTE Dijkstra‘s algorithm University of Paderborn Algorithms and Complexity 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 HEINZ NIXDORF INSTITUTE Dijkstra‘s algorithm University of Paderborn Algorithms and Complexity Animation in a geometric graph: Edge weight = Euclidean distance Friedhelm Meyer auf der Heide 10 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity All-pairs-shortest-paths (APSP) Friedhelm Meyer auf der Heide 11 HEINZ NIXDORF INSTITUTE All-pairs-shortest-paths (APSP) University of Paderborn Algorithms and Complexity 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 HEINZ NIXDORF INSTITUTE Beispiel University of Paderborn Algorithms and Complexity Friedhelm Meyer auf der Heide 13 HEINZ NIXDORF INSTITUTE Einfacher Algorithmus University of Paderborn Algorithms and Complexity Starte Dijkstras Algorithmus für jeden Knoten i ∈ V. Laufzeit: Bei Eingabeformat „Gewichtsmatrix“ benötigt Dijkstras Algorithmus Zeit O(n3), dieser Algorithmus für APSP also Zeit O(n4). Geht das schneller? Friedhelm Meyer auf der Heide 14 Floyd-Warshall Algorithmus: Dynamische Programmierung HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity 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 n3 viele werden berechnet: HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity benötigt konstante Zeit, Also: Zeit O(n3). Friedhelm Meyer auf der Heide 16 HEINZ NIXDORF INSTITUTE Beispiel University of Paderborn Algorithms and Complexity D(0) = W = Friedhelm Meyer auf der Heide 17 HEINZ NIXDORF INSTITUTE APSP : noch mal Dynamische Programmierung University of Paderborn Algorithms and Complexity Friedhelm Meyer auf der Heide 18 HEINZ NIXDORF INSTITUTE APSP : noch mal Dynamische Programmierung University of Paderborn Algorithms and Complexity Dynamische Programmierung liefert Zeit O(n3). Friedhelm Meyer auf der Heide 19 HEINZ NIXDORF INSTITUTE APSP via Matrixmultiplikation Beobachtung: Sei D(m) die Matrix ( University of Paderborn Algorithms and Complexity (1) ), dann ist D = 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 HEINZ NIXDORF INSTITUTE APSP via Matrixmultiplikation University of Paderborn Algorithms and Complexity 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 dem Q(Min, +)) assoziativ, d.h. z.B. : D(m) = D(m-1) x W = Wm , und wir können D(m) = Wm ( für Zweierpotenzen m) durch iteriertes Quadrieren berechnen. W, W2, W4, W8, …,Wm Das benötigt log(m) Matrixmultiplikationen. Friedhelm Meyer auf der Heide 21 HEINZ NIXDORF INSTITUTE APSP via Matrixmultiplikation University of Paderborn Algorithms and Complexity Zeit für Matrixmultiplikation (Schulmethode): O(n3) Zeit: O(log(n) x “Zeit für Matrixmult.”) Friedhelm Meyer auf der Heide 22 HEINZ NIXDORF INSTITUTE APSP via Matrixmultiplikation University of Paderborn Algorithms and Complexity Zeit für Matrixmultiplikation(Schulmethode): O(n3) Zeit für APSP: O(log(n) x “Zeit für Matrixmult.” =O(n3 log(n)) Sie haben auf dem ersten Aufgabenblatt die Matrixmultiplikation von Schönhage-Strassen kennengelernt, Laufzeit :=O(nlog2(7) = O(n2.81). Der asymptotisch schnellste Algorithmus für M.M. (von CoppersmithWinograd) hat Laufzeit O(n2.38) Achtung: Diese Verfahren können wir nicht direkt einsetzen, da sie einen Körper oder zumindest Ring (z.B. Q(+,*)) voraussetzen, aber für Q(min,+) nicht funktionieren (Min hat kein inverses Element). Beste bekannte Laufzeit: O(n3 (log log n)3 / (log n)2) Friedhelm Meyer auf der Heide 23 HEINZ NIXDORF INSTITUTE Berechnung der transitiven Hülle University of Paderborn Algorithms and Complexity 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 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Thank you for your attention! Friedhelm Meyer auf der Heide Heinz Nixdorf Institute & Computer Science Department University of Paderborn Fürstenallee 11 33102 Paderborn, Germany Tel.: +49 (0) 52 51/60 64 80 Fax: +49 (0) 52 51/62 64 82 E-Mail: [email protected] http://www.upb.de/cs/ag-madh Friedhelm Meyer auf der Heide 25