Vorlesung 2 KÜRZESTE WEGE 34 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Kürzeste Wege im Graphen Motivation ! Heute: ! Kürzeste Wege von einem Knoten (SSSP) ! Kürzeste Wege zwischen allen Knotenpaaren (APSP) ! Viele Anwendungen: ! ! ! ! ! ! 35 Navigationssysteme Oberflächenparameter Flugrouten Routenlayout Logistik, Verkehr Routing in Netzwerken Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik SSSP: DER ALGORITHMUS VON BELLMAN UND FORD 36 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Kürzeste Wege ! Definition: Sei ein gerichteter und gewichteter Graph G=(V,E) mit der Gewichtsfkt. w: E→R gegeben. Das Gewicht eines Weges p = <v0, v1, …, vk> ist die Summe der Gewichte k seiner Kanten: w( p ) = ∑ w(vi −1 , vi ) i =1 ! Definition: Sei G=(V,E) wie oben. Das Gewicht eines kürzesten Weges p zwischen u,v aus V ist definiert als: δ (u, v) = { p min{w( p ):u ⎯⎯→ v ∞: sonst } ! Definition: Sei G=(V,E) wie in Def. 1.2. Ein kürzester Weg zwischen u,v aus V ist ein Weg p mit w(p) = δ(u,v). 37 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Bellman-Ford-Algorithmus ! Eingabe: Gewichteter Graph G=(V, E) mit Kantengewichten w und einem Startknoten s ! Ausgabe: Existenz eines Zyklus negativer Länge oder Länge der kürzesten Wege von s zu allen anderen Knoten ! Graphbasiert: s. Tafel 38 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel [Cormen, Leiserson, Rivest, S. 533] 39 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Algebraischer Bellman-Ford ! Herleitung: s. Tafel ! Eingabe und Ausgabe wie zuvor Bellman-Ford(A, s) 1. d = ∞ 2. d(s) = 0 3. for k = 1 to N-1 do 4. d = d min.+ A 5. if d ≠ d min.+ A 6. return „negative-weight cycle found“ 7. return d 40 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Fazit Bellman-Ford Vorgehensweise: ! Reduzierung aufs Wesentliche (Relaxierung) ! Repräsentation der Datenstrukturen durch Vektoren und Matrizen ! Halbringnotation für Relaxierung Bewertung: ! Algebraische Schreibweise kompakter ! Fragen (MG): ! Welche Zeitkomplexität? ! Wie hoch im Vergleich zur graphbasierten Variante? 41 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik ALL-PAIRS SHORTEST PATHS 42 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths (APSP) ! Eingabe: Gewichteter Graph G=(V,E) ! Ausgabe: Für jedes Paar von Knoten u,v aus V die Distanz von u nach v sowie einen kürzesten Weg 43 a b c d e f a 0 1 5 5 10 9 b ∞ 0 4 5 10 9 c ∞ -3 0 1 6 5 d ∞ -4 0 0 5 4 e ∞ 5 8 9 0 -1 f ∞ ∞ ∞ ∞ ∞ 0 Graphenalgorithmen und lineare Algebra Hand in Hand 2 b 4 c 7 -4 1 6 8 a f -1 5 d 5 e Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths (APSP) ! Eingabe: Gewichteter Graph G=(V,E) ! Ausgabe: Für jedes Paar von Knoten u,v in V die Distanz von u nach v sowie einen kürzesten Weg 44 a b c d e f a 0 1 5 5 10 9 b ∞ 0 4 5 10 9 c ∞ -3 0 1 6 5 d ∞ -4 0 0 5 4 e ∞ 5 8 9 0 -1 f ∞ ∞ ∞ ∞ ∞ 0 Graphenalgorithmen und lineare Algebra Hand in Hand 2 b 4 c 7 -4 1 6 8 a f -1 5 d 5 e Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Eine einfache Idee Lösung durch wiederholtes Single-source shortest path (SSSP) ! Von jedem Knoten aus SSSP-Problem lösen ! Algorithmen: Dijkstra, Bellman-Ford ! Anwendbarkeit? 45 Algorithmus Zeitkomplexität bei |V|maliger Anwendung Dijkstra (lineares Array) Dijkstra (binärer Heap) Dijkstra (Fibonacci-Heap) Bellman-Ford O(|V|³ + |V||E|) O(|V||E| log |V|) O(|V|² log |V| + |V||E|) O(|V|2 |E|) Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths ! Frage (MG): Sehen Sie Alternativen? Lassen sich bereits bekannte Techniken anwenden? (l ) • Sei dij die Länge eines kürzesten i-j-Wegs bestehend aus höchstens l Kanten. d ij(l ) ⎧ 0, falls l = 0 und i = j ⎪ = ⎨ ∞, falls l = 0 und i ≠ j ⎪min(d (l −1) , min ( l −1) { d + wkj }), falls l ≥ 1 ij 1≤ k ≤ n ik ⎩ • Matrix D(n) enthält die gesuchte Lösung 46 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths ! Umsetzung der Formel in einen Algorithmus, der wiederholt für fortgesetzte D aufgerufen wird: Naive-Extend-Shortest-Path(D,W) 1. for iç1 to n do 2. for jç1 to n do 3. d‘ij ç ∞ 4. for k ç1 to n do 5. d‘ij ç min(d‘ij, dik + wkj) 6. return D´ 47 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths 2 1 5 4 2 7 4 1 6 8 -3 4 D 3 5 6 -1 5 1 2 3 4 5 6 1 1 0 2 ∞ 5 ∞ ∞ 1 2 ∞ 0 4 ∞ ∞ ∞ 2 3 ∞ ∞ 0 1 ∞ 7 3 4 -3 4 6 0 5 ∞ 4 5 ∞ ∞ 8 ∞ 0 -1 5 6 ∞ ∞ ∞ ∞ ∞ 0 D´ 2 3 4 5 6 6 Graphenalgorithmen und lineare Algebra Hand in Hand 48 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths 2 1 5 4 2 7 4 1 6 8 -3 4 D 3 5 6 -1 5 1 2 3 4 5 6 1 0 2 ∞ 5 ∞ ∞ 1 2 ∞ 0 4 ∞ ∞ ∞ 2 3 ∞ ∞ 0 1 ∞ 7 3 4 -3 4 6 0 5 ∞ 4 5 ∞ ∞ 8 ∞ 0 -1 5 6 ∞ ∞ ∞ ∞ ∞ 0 D´ 1 2 3 4 5 6 0 2 6 5 10 ∞ 6 Graphenalgorithmen und lineare Algebra Hand in Hand 49 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths 2 1 5 4 2 7 4 1 6 8 -3 4 D 3 1 2 3 4 5 6 1 0 2 ∞ 5 ∞ ∞ 2 ∞ 0 4 ∞ ∞ 3 ∞ ∞ 0 1 4 -3 4 6 5 ∞ ∞ 6 ∞ ∞ 5 6 -1 5 1 2 3 4 5 1 0 2 6 5 10 ∞ ∞ 2 ∞ 0 4 5 ∞ ∞ 7 3 0 5 ∞ 4 8 ∞ 0 -1 5 ∞ ∞ ∞ 0 D´ 6 11 6 Graphenalgorithmen und lineare Algebra Hand in Hand 50 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths 2 1 5 4 2 7 4 1 6 8 -3 4 D 3 1 2 3 4 5 6 1 0 2 ∞ 5 ∞ ∞ 2 ∞ 0 4 ∞ ∞ 3 ∞ ∞ 0 1 4 -3 4 6 5 ∞ ∞ 6 ∞ ∞ 5 6 -1 5 1 2 3 4 5 1 0 2 6 5 10 ∞ ∞ 2 ∞ 0 4 5 ∞ 11 ∞ 7 3 -2 5 0 1 6 7 0 5 ∞ 4 8 ∞ 0 -1 5 ∞ ∞ ∞ 0 D´ 6 6 Graphenalgorithmen und lineare Algebra Hand in Hand 51 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths 2 1 5 4 2 7 4 1 6 8 -3 4 D 3 1 2 3 4 5 6 1 0 2 ∞ 5 ∞ ∞ 2 ∞ 0 4 ∞ ∞ 3 ∞ ∞ 0 1 4 -3 4 6 5 ∞ ∞ 6 ∞ ∞ 5 6 -1 5 1 2 3 4 5 1 0 2 6 5 10 ∞ ∞ 2 ∞ 0 4 5 ∞ 11 ∞ 7 3 -2 5 0 1 6 7 0 5 ! 4 -3 -1 6 0 5 4 8 ∞ 0 -1 5 ∞ ∞ ∞ 0 D´ 6 6 Graphenalgorithmen und lineare Algebra Hand in Hand 52 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths 2 1 5 4 2 7 4 1 6 8 -3 4 D 53 3 1 2 3 4 5 6 1 0 2 ∞ 5 ∞ ∞ 2 ∞ 0 4 ∞ ∞ 3 ∞ ∞ 0 1 4 -3 4 6 5 ∞ ∞ 6 ∞ ∞ 5 6 -1 5 1 2 3 4 5 1 0 2 6 5 10 ∞ ∞ 2 ∞ 0 4 5 ∞ 11 ∞ 7 3 -2 5 0 1 6 7 0 5 ∞ 4 -3 -1 6 0 5 4 8 ∞ 0 -1 5 ∞ ∞ 8 9 0 -1 ∞ ∞ ∞ 0 D´ 6 6 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths 2 1 5 4 2 7 4 1 6 8 -3 4 D 54 3 1 2 3 4 5 6 1 0 2 ∞ 5 ∞ ∞ 2 ∞ 0 4 ∞ ∞ 3 ∞ ∞ 0 1 4 -3 4 6 5 ∞ ∞ 6 ∞ ∞ 5 6 -1 5 1 2 3 4 5 1 0 2 6 5 10 ∞ ∞ 2 ∞ 0 4 5 ∞ 11 ∞ 7 3 -2 5 0 1 6 7 0 5 ∞ 4 -3 -1 6 0 5 4 8 ∞ 0 -1 5 ∞ ∞ 8 9 0 -1 ∞ ∞ ∞ 0 6 ∞ ∞ ∞ ∞ ∞ 0 D´ Graphenalgorithmen und lineare Algebra Hand in Hand 6 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths Slow-All-Pairs-Shortest-Paths(W) 1. D(1) ← W 2. for m ← 2 to n-1 do 3. D(m) ← Naive-Extend-Shortest-Path(D(m-1),W) 4. return D(n-1) ! Fragen (MG): ! Welche Zeitkomplexität? ! Wie geht es schneller? 55 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Shortest Paths Faster-All-Pairs-Shortest-Paths(W) 1. D(1) ← W 2. m ← 1 3. while m < n-1 do 4. D(2m) ← Extend-Shortest-Path(D(m), D(m)) 5. m ← 2m 6. return D(m) 56 Graphenalgorithmen und lineare Algebra Hand in Hand 56 Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zeitkomplexität ! Die while-Schleife wird O(log n) mal durchlaufen ! Das naive Erweitern der Pfade hat kubischen Aufwand ! Aber: Schnellere Algorithmen zur Multiplikation zweier Matrizen existieren ! Beste bekannte obere Schranke für MM(n): O(n2.373) (Williams, UC Berkeley) ! Beste bekannte untere Schranke für MM(n): O(n2) 57 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zusammenfassung APSP ! Man betrachtet kürzeste Wege der Länge höchstens l ! Die Länge l wird schrittweise erhöht, bis n-1 erreicht ist ! Fortgesetztes Quadrieren führt zu logarithmischer Laufzeit der äußeren Schleife ! Gesamtlaufzeit: O(MM(n) log n) ! In der Praxis meist: O(n3 log n) oder O(n2.807 log n) ! Aber: Pfadinformation geht verloren durch Beschleunigung 58 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik MAXIMALE UNABHÄNGIGE MENGEN 59 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Aufgabe ! Sie richten eine Party aus und wollen Einladungen versenden ! Zu beachten: ! Unter ihren Freunden können sich einige nicht leiden è „Feinde“ dürfen nicht gleichzeitig eingeladen werden ! Ziel: Möglichst viele Personen einladen ! Frage (MG): Wie modellieren Sie das Problem und wie lösen Sie es? 60 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Unabhängige Menge im Graphen ! Definition: Sei G = (V, E) ein Graph. Eine unabhängige Menge in G ist eine Menge I ⊆ V derart, dass gilt: u,v ∈I ⇒ {u,v} ∉V ! Also: Von keiner Kante sind beide Endknoten in I ! Maximum independent set: Unabhängige Menge mit größtmöglicher Kardinalität in G ! Verwandtes Problem: Minimale Knotenüberdeckung ! Maximal independent set: Unabhängige Menge in G, die nicht erweiterbar ist ! Frage: Komplexität? 61 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiele für unabhängige Mengen 62 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Ein einfacher Algorithmus Eingabe: Graph G = (V, E) Ausgabe: Nicht erweiterbare unabhängige Menge I 1. I = , V‘ = V 2. while (V‘ ≠ ) do a) Wähle beliebiges v in V‘ b) Setze I = I ∪ v c) Setze V ' = V '\ (v ∪ N(v)) 3. return I ! N(v) ist die Nachbarschaft eines Knotens v 63 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel 64 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Lubys Algorithmus Eingabe: Graph G = (V, E) Ausgabe: Nicht erweiterbare unabhängige Menge I 1. I = , G‘ = G 2. while (G‘ ist nicht der leere Graph) do a) Wähle eine zufällige Menge von Knoten S in V(G‘), indem jeder Knoten v unabhängig mit Wkt. 1/(2d(v)) gewählt wird b) Für jede Kante (u, v) in E(G‘): Falls beide Endpunkte in S sind, dann entferne den Knoten mit kleinerem Grad aus S (Konflikte beliebig auflösen). Diese neue Menge wird S‘ genannt. c) Setze I = I ∪ S ' und G ' = G '\ (S '∪ N(S ')) . 3. return I ! Die Nachbarschaft einer Knotenmenge ist die Vereinigung der einzelnen Nachbarschaften 65 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Korrektheit ! In jedem Schritt wird die Menge S‘ hinzugefügt ! S‘ ist eine unabhängige Menge ! S‘ ist unabhängig zu I wegen der Löschung von S '∪ N(S ') ! => I ist immer eine unabhängige Menge ! I ist nicht erweiterbar (maximal) ! Alle aus G‘ entfernten Knoten sind entweder aus I oder aus N(I) 66 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Laufzeit ! Theorem: Die erwartete Anzahl von Runden ist O(log m). ! Sei Gj = (Vj, Ej) der Graph nach Runde j. ! Hauptlemma: Für ein c < 1 gilt: Ex(|Ej| / |Ej-1|) < c |Ej-1| ! Kategorisierung der Knoten v: ! Gut: Mindestens 1/3 der Nachbarn haben niedrigeren Grad als v ! Schlecht: Sonst ! Intuitiv: Ein guter Knoten hat gute Chancen für Aufnahme in I ! Kategorisierung der Kanten e: ! Schlecht: Beide Endpunkte von e sind schlecht ! Gut: Sonst 67 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik X v2N (u), d(v) d(u) Viele gute Kanten 1 1 1 d(u) · = 2d(u) 2d(u) 2 6. Falls 2 V gut ist, dannkleineren Grades eines ! Lemma Definition: Dieu Nachbarschaft Knotens u in V ist definiert als: X 1Graphenalgorithmen 1 1 Grundlegende . L(u) := {v: v in N(u) ∧ d(v)≤ d(u)} 2d(v) 6 v2N (u) Das folgende Lemma P besagt, dass ein Knoten, der für S gewählt wird, mind d(u)≥ d(u) ! Proof. Fakt:PEin Knoten 1 u ist gut, falls 1 |L(u)| 1 / 3.1 · = 6. Wahrscheinlichkeit 1/2 auch in I2d(v) aufgenommen v2N (u) 2d(v) v2L(u) 3 2d(u) wird. 1 Aus den vorigen Lemmas sichPnun folgern Lemma 5. beiden Für Knoten uu 2 VV gilt: r(uein 2 Iweiteres | u 2 S)Hilfsresultat ! Lemma: Für jeden jeden Knoten inlässt gilt: 2. 1 ! Lemma: Lemma 7. 8u 2 V, P r(u 2 I) Proof. Zum Beweis beschränken4d(u) wir. das Gegenereignis P r(u 2 / I | u 2 S) ! Lemma: danndann Pr(v in N(I))in≥I1/36. Ein Knoten Falls u 2 Sv gut wirdist, genau nicht aufgenommen, wenn ein Na 1 1 Proof. P r(u 2 I) = P r(u 2 I | u 2 S) · P r(u 2 S) 12 · 2d(v) . 4d(u) mindestens großemdie Grad in Sder aufgenommen ! Lemma:gleich Mindestens Hälfte Kanten sindwird. gut. Daher gilt: Lemma 8. Sei e = (u, v) eine gute Kante. Dann gilt P r(e entfernt) 1/36. P r(u 2 / I | u 2 S) = P r(9v 2 N (u), v 2 S, d(v) d(u) | u 2 S) XP r(e ent ! Proof. Beweise: Tafel der X Ohne siehe Beschränkung Allgemeinheit sei u gut. Dann lässt sich P r(v 2 S | u 2 S) P von unten durch P r(u 2 I [ N (I)) beschränken. Letzteres schätzen wir nun ab. v2N (u), d(v) d(u) v2N (u), d(v) d(u) betrachten wir zwei Fälle. Der erste ist 9v 2 N (u), d(v) 2. Nach Lemma 7 folgt 68 Graphenalgorithmen und lineare Algebra Hand inX Hand Paralleles Rechnen,1 Institut für Theoretische 1 1 Informatik, Fakultät für Informatik d(u) · 1 = 1 2d(u) 2d(u) . 2 P r(u 2 (u), I [d(v) N (I)) v2N d(u) P r(v 2 I) Hauptlemma ! Hauptlemma (anders ausgedrückt): In jeder Runde wird mindestens jede 72. Kante (im Erwartungswert) entfernt. ! Beweis: siehe Tafel 69 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Lubys Algorithmus algebraisch ! Siehe Matlab-Code und Übung 70 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zusammenfassung ! Unabhängige Mengen sind in Konfliktgraphen sehr nützlich ! Der triviale Algorithmus ist inhärent sequentiell ! Lubys Algorithmus bietet Vorteile: ! Parallelität: Auswahl der Knoten in jeder Phase ist voneinander unabhängig ! Laufzeitschranke: O(log n) Phasen (im Erwartungswert) ! Algebraische Implementierung vglw. kurz ! Bessere Analysen sind bekannt: ! In jeder Iteration werden mehr Kanten gelöscht ! Die Laufzeit gilt mit hoher Wahrscheinlichkeit 71 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik