Vorlesung 2 KÜRZESTE WEGE 45 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) ! Distanzen zwischen allen Knotenpaaren (APD) ! Viele Anwendungen: ! Navis ! Netzwerkrouting ! ... 46 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 47 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). 48 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 49 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] 50 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 51 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? 52 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik ALL-PAIRS DISTANCES 53 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Distances (APD) ! Eingabe: Gewichteter Graph G=(V,E) ! Ausgabe: Für jedes Paar von Knoten u,v aus V die Distanz von u nach v (APSP: sowie einen kürzesten Weg) 54 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 Distances (APD) ! Eingabe: Gewichteter Graph G=(V,E) ! Ausgabe: Für jedes Paar von Knoten u,v in V die Distanz von u nach v (APSP: sowie einen kürzesten Weg) 55 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? 56 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 Distances ! 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 57 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Distances ! Umsetzung der Formel in einen Algorithmus, der wiederholt für fortgesetzte D aufgerufen wird: Naive-Extend-Distances(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´ 58 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Distances 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 59 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 60 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 61 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 62 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 63 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 64 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´ Graphenalgorithmen und lineare Algebra Hand in Hand 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 65 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 Distances Slow-All-Pairs-Distances(W) 1. D(1) ← W 2. for m ← 2 to n-1 do 3. D(m) ← Naive-Extend-Distances(D(m-1),W) 4. return D(n-1) ! Fragen (MG): ! Welche Zeitkomplexität? ! Wie geht es schneller? 66 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik All Pairs Distances Faster-All-Pairs-Distances(W) 1. D(1) ← W 2. m ← 1 3. while m < n-1 do 4. D(2m) ← Extend-Distances(D(m), D(m)) 5. m ← 2m 6. return D(m) 67 Graphenalgorithmen und lineare Algebra Hand in Hand 67 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) 68 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Zusammenfassung APD ! 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 ggf. andere Lösungen schneller ! Aber: Pfadinformation geht verloren durch Beschleunigung 69 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? 70 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik MAXIMALE UNABHÄNGIGE MENGEN 71 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? 72 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 73 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 74 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel 75 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 76 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Beispiel 77 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) 78 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Lubys Algorithmus algebraisch (1) ! IS = [] ! while length(G) > 0 ! ! ! ! % Select vertices with probability 1/(2*degree) degree = sum(G, 2) prob = 1 ./ (2 * degree) select = rand(length(G), 1) <= prob ! ! ! ! % Deselect one of each pair of selected neighbors neighbors = select & (G * select) deselects = ... % lower degree neighbors if ~isempty(neighbors) ! select(deselects) = 0 ! end 79 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik Lubys Algorithmus algebraisch (2) ! % Add selected nodes to independent set ! IS = [IS find(select)] ! % Exclude neighbors of selected vertices ! remain = not(select | G * select) ! % Iterate on the remaining subgraph ! G = G(remain, remain) ! end % while 80 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 81 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 82 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 83 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 passt (mit Kommentaren) auf zwei Folien ! Bessere Analysen sind bekannt: ! In jeder Iteration werden mehr Kanten gelöscht ! Die Laufzeit gilt mit hoher Wahrscheinlichkeit 84 Graphenalgorithmen und lineare Algebra Hand in Hand Paralleles Rechnen, Institut für Theoretische Informatik, Fakultät für Informatik