Inhaltsverzeichnis - - Kurzer Überblick Seite 1 - 1) Einleitung Seite 1 - 2) Vorbereitungen Seite 2 - ungewichtete und ungerichtete Graphen Seite 2 - Erweiterung für gerichtete Graphen Seite 8 3) a) Abschätzung des Durchmessers - - b) Approximierung des Durchmessers - - - 4) APSP-Abschätzung Algorithmus approx-APSP 5) Abschätzung von k-pairs kürzesten Wegen - - Algorithmus approx-diameter c) Erweiterung für gewichtete Graphen - - Algorithmus 2-vs-4 Algorithmus approx-kPSP(i) Zusammenfassung Seite 8 Seite 9 Seite 12 Seite 13 Seite 14 Seite 14 Seite 15 Seite 18 Seite 18 Seite 19 Schnelle Durchmesser- und kürzeste Wege- Abschätzung (ohne Matrix-Multiplikation) Lit: D. Aingworth, C. Chekuri, P. Indyk and R. Motwani: Fast Estimation of Diameter and Shortest Paths (Without Matrix Multiplication). SIAM Journal on Computing, Bd. 28 (4), S. 1167-1181, 1999. Kurzer Überblick: - In der Vergangenheit wurden bedeutende Fortschritte in der Entwicklung von Algorithmen für APSP-Probleme (all-pairs shortest paths) verzeichnet. Bedeutend dabei ist die jeweilige Laufzeit, die schneller als O(n3) ist. - Def: APSP: G = (V,E) gerichteter Graph, c:E→ Kantenbewertung. Zu allen u,v∈V mit u ≠ v sind die minimalen Längen von Wegen von u nach v oder auch solche Wege selbst zu berechnen. - Das Problem bei diesen Algorithmen ist die Tatsache, daß sie Fast Matrix Multiplikation Algorithmen sind und damit unpraktisch bei der Durchführung sind. - Ziel dieser Arbeit: Entwicklung eines kombinatorischen Algorithmus, der diese verbesserte Laufzeit erreicht. - Wichtigstes Ergebnis: Ein Algorithmus, der das APSP-Problem in ungerichteten und ungewichteten Graphen mit einem „additiven Fehler“ von 2 in O(n2,5 log n ) löst. - Wenn die kürzesten Wege nur zwischen k bestimmten Knotenpaaren bestimmt werden müssen, gibt es einen effizienteren Algorithmus mit der Laufzeit O(n1,5 k log n + n2 log2n) 1) Einleitung: Es wird das Problem betrachtet, APSP für einen ungewichteten und ungerichteten Graphen G mit n Knoten und m Kanten zu berechnen. Neuere Arbeiten, die schnellere Algorithmen für dieses Problem vorstellen, basieren auf der Formulierung des Problems als Terme von Matrizen mit kleinen ganzzahligen Einträgen und benutzen die Fast Matrix Multiplikation. Sie erreichen eine Laufzeit von O(nω polylog(n)), wobei ω für den Exponent der Laufzeit des benutzten Matrix Multiplikation Algorithmus steht. Der aktuell beste Algorithmus dieser Art läuft mit ω = 2,376. 1 Im Vergleich zu diesem Algorithmus hat der „ursprüngliche“ Algorithmus für APSP, der BFS für jeden Knoten ausführt, die Laufzeit Θ(nm). Bei dieser Art von Problem ist die Durchführbarkeit des Algorithmus in der Praxis sehr wichtig. Leider wird dieser Gesichtspunkt mit Fast Matrix Multiplikation Algorithmen nicht erfüllt. Deshalb ist es das Ziel einen „kombinatorischen“ Algorithmus für APSP mit der Laufzeit O(n3-ε) zu entwickeln. Mit der Bezeichnung „kombinatorischer“ Algorithmus wollen die Autoren den Kontrast zum Fast Matrix Multiplikation Algorithmus hervorheben. Dieser Algorithmus kann für ungerichtete Graphen mit kleinen ganzzahligen Kantengewichten verallgemeinert werden. Ein entscheidender Schritt in der Entwicklung eines solchen Algorithmus war der Wechsel des Schwerpunktes auf den Gesichtspunkt, Durchmesser zwischen Knoten zu berechnen. Der Durchmesser zwischen zwei Knoten kann durch Berechnen von APSP Distanzen im Graphen ermittelt werden. Dies ist die einzige Möglichkeit das Durchmesser-Problem zu lösen. Deshalb soll hier ein schneller Algorithmus zur Approximation des Durchmessers konstruiert werden. Es ist einfach den Durchmesser ∆ innerhalb der Abschätzung E 1/2·∆ ≤ E ≤ ∆ mit der Laufzeit O(m) anzugeben, indem man eine BFS für jeden Knoten v durchführt; wenn d die erhaltenen Höhe des BFS-Baumes ist, liegt der Durchmesser von G zwischen d und 2d. Bis zu dieser Arbeit war kein besserer Algorithmus für dieses Problem bekannt. Das Ergebnis der Autoren eines solchen Algorithmus kann auch auf gerichtete Graphen mit beliebigen positiven, reellen Kantengewichten ausgedehnt werden. 2) Vorbereitungen: Alle Definitionen sind für ungerichtete, ungewichtete und zusammenhängende Graphen G(V,E) mit n Knoten und m Kanten. Später erfolgt eine Ausdehnung auf gerichtete und gewichtete Graphen. Knoten-BFS: Wähle einen beliebigen Knoten aus, markiere ihn und hänge ihn an eine „Warteschlange“ an. Solange die Warteschlange noch einen Knoten enthält, betrachte den vordersten Knoten v in der Warteschlange. Suchschritt an v: Falls v einen unmarkierten Nachbarn besitzt, markiere ihn und hänge ihn an die Warteschlange und speichere die entsprechende Kante. 2 backtrack: Ansonsten entferne v aus der Warteschlange. Bsp: Def. 2.1: Die Distanz/der Abstand d(u,v) zwischen zwei Knoten u und v ist die Länge des kürzesten Weges zwischen ihnen. Bsp: 2 =2 =4 => d(u,v) = 2 Def. 2.2: Der Durchmesser ∆ eines Graphen ist definiert als maxu,v ∈G d(u,v). Bsp: ∆=5 3 Def. 2.3: Die k-Nachbarschaft Nk(v) eines Knotens v ist die Menge aller Knoten (außer v), die höchstens den Abstand k von v haben. Nk(v) = {u ∈ V| 0 < d(u,v) ≤ k} Der Grad eines Knotens v (Knotengrad) wird bezeichnet durch dv = │N1(v)│. N(v) = N1(v)∪{v} bezeichnet die Menge der Knoten, die höchstens den Abstand 1 von v haben. Wichtig: die Menge N(v) beinhaltet nicht nur die Nachbarn von v, sondern auch v selbst. Bsp: Sei k = 2 N2(v) = {1,2,3,4,5,6}, dv = |{1,4,5,6}| = 4 Nv = {1,4,5,6,v} Def. 2.4: Für alle Knoten v∈V bezeichnen wir mit B(v) die Höhe eines BFS-Baumes in G mit der Wurzel v. Bsp: B(v) = 5 In dieser Arbeit wird die Variable s, die später erst definiert wird, benutzt, um die Knoten zu klassifizieren; als Knoten von niedrigem Grad bzw. Knoten von hohem Grad. 4 Def. 2.5: Sei L(V) = {u ∈ V│du < s} und H(V) = V\L(V). Bsp: Sei s = 3 => L(V) = {u ∈ V│du < 3} d1=|{2,3,4,5}| = 4 d6=|{5,7}| = 2 d2=|{1,3,4}| = 3 d7=|{6,8}| = 2 d3=|{1,2,4,5}| = 4 d8=|{7,9}| = 2 d4=|{1,2,3,5}| = 4 d9=|{8,10}| = 2 d5=|{1,3,4,6}| = 4 d10=|{9}| = 1 => L(V) = {6,7,8,9,10} und H(V) ={1,2,3,4,5} Def. 2.6: Gegeben sei eine Menge A ⊆ V. Eine Menge D ⊆ V ist ein „dominating set“ für A genau dann, wenn für jeden Knoten v∈A N(v)∩D≠Ø. D.h. für jeden Knoten in A\D ist einer seiner Nachbarn in D. Bsp: 1) Sei A = {1,2,3,4,5} => D = {3} 2) Sei A = V => D = {3,6} Das folgende Theorem liegt allen in dieser Arbeit verwendeten Algorithmen zugrunde. Theorem 2.7: Es existiert ein dominating set für H(V) mit der Größe O(s-1 n logn), welches in der Zeit O(m+ns) gefunden werden kann. 5 Anmerkung 2.8: Es ist leicht zu sehen, daß das zufällige Auswählen einer Menge mit Θ(s-1 n logn) Knoten das gewünschte dominating set für H(V) mit hoher Wahrscheinlichkeit ergibt. Beweis: i) Ann: H(V) = V Wir interessieren uns für das standard dominating set für den Graphen G. Das Problem ein minimales dominating set für G zu berechnen, kann als ÜberdeckungsProblem umformuliert werden: Konstruiere für alle Knoten v eine Menge Sv = N(v). Dies ergibt ein Fall des ÜberdeckungsProblems S = {Sv | v∈V}, bei dem das Ziel ist, eine minimale Anzahl von Mengen zu finden, deren Vereinigung V ist. S1 = {1,2,4} S5 = {2,4,5,6,7} S2 = {1,2,3,5} S6 = {5,6,7} S3 = {2,3,4} S7 = {5,6,7,8} S4 = {1,3,4,5,8} S8 = {4,7,8} In diesem Fall überdecken S4 und S5 V. => C = {S4,S5}, C⊆S. Gegeben sei eine Überdeckungslösung C⊆S. Die Knotenmenge, die mit den „Untermengen“ in C übereinstimmen, bilden ein dominating set für G mit der gleichen Größe wie C (Hier: D={4,5}). Dies ist der Fall, da jeder Knoten v in einer der Mengen Sw∈C vorkommt und demgemäß entweder sich selbst im dominating set befindet oder einen Nachbar darin hat. Ebenso stimmt ein dominating set für G mit der Überdeckung für S mit derselben Kardinalität überein. Der greedy-Überdeckungs-Algorithmus wählt wiederholt die Menge, die die meisten unüberdeckten Elemente enthält. Es ist bekannt, daß eine solche Überdeckung höchstens um den Faktor log n schlechter ist als die optimale „Bruchlösung“ (keine ganze Zahl). 6 Weil jeder Knoten mindestens den Grad s hat (weil H(V) = V und H(V) = {du ≥ s}) und deshalb die entsprechende Menge Sv mindestens die Kardinalität s hat, ergibt das Zuschreiben eines Gewichts von 1/s für jede Menge in S eine Überdeckung mit dem Gesamtgewicht von n/s. Deshalb ist die optimale Mengengröße O(n/s). Der greedy-Überdeckungs-Algorithmus liefert deshalb eine Lösung der Größe O(s-1 n logn). Dies ergibt ein dominating set für G mit derselben Größe. Wenn der greedy-Überdeckungs-Algorithmus dadurch implementiert wird, daß die Mengen in buckets nach der Anzahl der unüberdeckten Knoten sortiert werden, läuft der Algorithmus in der Zeit O(m), da es höchstens m verschiedenen Werte gibt und deshalb die Menge in O(m) sortiert werden kann. ii) Sei H(V)≠V. Konstruiere einen Graph G´= (V´,E´). Füge eine Menge von Scheinknoten X = {xi| 1 ≤ i ≤ s}folgendermaßen hinzu: definiere V´= V∪X und E´= E ∪{(xi,xj)1 ≤ i<j ≤ s}∪{(u,xi)| u∈L(V)}. Sei s = 3 L(V) = {6,7,8,9,10} H(V) = {1,2,3,4,5} Jeder Knoten in diesem neuen Graphen G´ hat den Grad s oder höher. Nach den vorhergehenden Argumentationen können wir ein dominating set für G´ mit der Größe O(s-1 (n+s) log(n+s)) = O(s-1 n logn) konstruieren. Da keiner der neuen Knoten in X mit den Knoten in H(V) verbunden ist, gibt die Einschränkung dieses dominating sets für V ein dominating set für H(V) mit der Größe O(s-1 n logn). Die Laufzeit vergrößert sich durch das Hinzufügen der neuen Knoten und Kanten, aber da die Gesamtzahl der addierten Kanten höchstens ns+s2 = O(ns) ist, bekommen wir die gewünschte Zeitschranke. 7 Erweiterung für gerichtete Graphen: s Gegeben sei ein gerichteter Graph G(V,E); durch G wird der Graph bezeichnet, den man aus G erhält, indem die Richtung aller Kanten von G umgedreht wird. Der Begriff „Grad“ wird benutzt, um auf den „Ausgrad“ (bzw. auslaufenden Grad) eines r Knotens zu verweisen und für v∈V wird sein Grad durch d v bezeichnet. Die Definitionen, die zuvor für Abstände, Durchmesser, Nachbarschaft, BFS-Bäume und dominating sets gegeben wurden, erweitern sich für gerichtete Graphen wie folgt: s Die Definitionen werden nur für G gegeben. Die Definitionen für G können analog erhalten werden. Def. 2.9: Für zwei Knoten u, v ∈V wird d(u,v) als die Länge des kürzesten Weges von u nach v definiert. Wenn kein solcher Weg existiert, wird d(u,v) = ∞ angenommen. Def. 2.10: Der Durchmesser ∆ eines Graphen G ist als maxu,v∈G d(u,v) definiert. r r r Def. 2.11: Sei N k(v) = {u∈V | 0<d(u,v)≤k}. Weiter bezeichne N (v) = N 1(v) ∪ {v} die Menge von Knoten, die höchstens den Abstand 1 von v haben. Def. 2.12: BFS ist ein BFS-Baum im gerichteten Graph G. Für alle Knoten v∈V bezeichnet r man mit B (v) die Höhe des BFS -Baumes in G mit der Wurzel v. r r Wir definieren H (V), L (V) und „dominating set“ für gerichtete Graphen in Beziehung zu den „auslaufenden“ Kanten abhängig von den Knoten. r r r r Def. 2.13: ∃ s L (V) = {u∈V | d u < s} und H (V) = V\L (V) Def. 2.14: Gegeben sei A⊆V. D⊆V ist ein „out-dominating set“ von A genau dann, wenn r für jeden Knoten v∈ A N (v) ∩ D ≠ Ø. Folgendes Korollar ist eine einfache Konsequenz des Theorems 2.7. r Korollar 2.15: Gegeben sei ein gerichteter Graph G(V,E). Für H (V) existiert ein out-dominating set mit der Größe O(s-1 log n) das in der Zeit O(m+ns) gefunden werden kann. 3) a) Abschätzung des Durchmessers: In diesem Abschnitt wird ein Algorithmus entwickelt, der eine Abschätzung E ausgibt, für die 2/3·∆ ≤ E ≤ ∆ gilt. Als ersten Schritt in diese Richtung wird ein Algorithmus präsentiert, der zwischen Graphen mit dem Durchmesser 2 und 4 unterscheiden kann. Dieser wird dann zum gewünschten „Abschätzalgorithmus“ generalisiert. 8 Durchmesser von 2 und 4 unterscheiden Lemma 3.1: Ann: G hat ein Knotenpaar a und b mit d(a,b) ≥ 4. r s Dann hat jeder BFS -Baum mit Wurzel v∈N (a) und jeder BFS -Baum mit Wurzel v∈N (b) mindestens die Höhe 3. Bsp: r N s (a) = {a, 1,2,3} N (b) = {b,9} d(a,b) =5 r B (a) = 7 w B (v) = 7 Algorithmus 2-vs-4 r 1) falls L (V) ≠ Ø, dann r a) wähle v ∈ L (V) r b) berechne einen BFS -Baum von v und einen BFS -Baum von jedem Knoten in N (v). 2) sonst r a) berechne ein out-dominating set D für H (V) = V b) berechne einen BFS -Baum für jeden Knoten in D. 3) falls alle BFS-Bäume die Höhe 2 haben, gib 2 aus sonst gib 4 aus. Bsp: i) n = 9 => s = 2,93 ∆ = 4 (d(3,2) = 4) r r r r r r r r r d 1 = 3, d 2 = 4, d 3 = 3, d 4 = 3, d 5 = 3, d 6 = 2, d 7 = 1, d 8 = 3, d 9 = 2 r r L (V) = {6,7,9}, H (V) = {1,2,3,4,5,8} 9 1) a) Sei v = 6 r b) BFS -Baum von v = 6 => B (v) = 7 r N (6) = {6,7,9} w BFS -Baum von v´= 7 => B (7) = 3 w w usw.( B (6) und B (9) ) => Ausgabe: 4 ii) n = 5 => s = 1,87 ∆=2 r r r r r d 1 = 2, d 2 = 2, d 3 = 2, d 4 = 2, d 5 = 2 r H (V) = V 2) sonst r a) outdominating set D für H (V) = V D = {2,4,5} r r b) BFS -Baum für v = 2 B (v) = 2 BFS -Baum für v = 5 B (v) = 2 r BFS -Baum für v = 4 B (v) = 2 => Ausgabe: 2 10 Theorem 3.2: Der Algorithmus 2-vs-4 unterscheidet Graphen mit Durchmesser 2 und 4 und hat die Laufzeit O(ms-1 n logn + ms). Beweis: Es ist klar, daß der Algorithmus 2 für Graphen mit dem Durchmesser 2 ausgibt, da in solchen Graphen die BFS-Bäume die Höhe 2 nicht überschreiten können. Ann: G hat den Durchmesser 4. Fixiere ein Knotenpaar a,b ∈ V so, daß gilt d(a,b) ≥ 4. Wir wollen zeigen, daß der Algorithmus eine den entsprechend den Kanten gerichtete BFS r s von einem Punkt v∈N (a) ∪N (b) ausführt. Aus Lemma 3.1 können wir schließen, daß die Höhe des BFS-Baumes mit der Wurzel v mindestens 3 ist; der Algorithmus wird 4 ausgeben. Es können 2 Fälle im Algorithmus auftreten: r 1. Fall: L (V) ≠ Ø. r i) wenn b zu N (v) gehört, gibt es nichts zu beweisen. r ii) wenn B (v) > 2, gibt es nichts zu beweisen. r r iii) wenn B (v) = 1, folgt, daß d v = n-1. r Da s als o(n) gewählt ⇒ v∉L (V). Dies ist aber ein Widerspruch zur Voraussetzung. r Der einzige Fall, der übrig bleibt ist B (v) = 2 und d(v,b) = 2. r N 1(v) hat weniger als s Knoten. r s x gehört sowohl zu N (v) als auch zu N (b). r s ⇒ N (v) ∩ N (b) ≠ Ø. ⇒ mit Lemma 3.1 folgt, daß der Algorithmus 4 ausgibt. r Die Größe von N (v) ist höchstens s. Deshalb ist die Zeit, die benötigt wird, um den BFS-Baum zu berechnen, durch O(ms) begrenzt. r r 2. Fall: L (V) = Ø, d.h. H (V) = V. r Da D ein out-dominating set von V ist ⇒ D ∩ N (a) ≠ Ø. Mit Theorem 2.7 folgt |D| = O(s-1 n logn). ⇒ Laufzeit ist O(ms-1 n logn). Wählt man s = n log n , erhält man folgendes Korollar. Korollar 3.3: Graphen mit den Durchmessern 2 und 4 können in O(m n log n ) unterschieden werden. 11 b) Approximierung des Durchmessers: Die Ideen, die im 2-vs-4 Algorithmus benutzt wurden, können generalisiert werden, um den Durchmesser für alle gerichteten Graphen abzuschätzen. Man bestimmt 2 beliebige Knoten a und b, für die d(a,b) = ∆ (∆=Durchmesser). r s Ann: Man kann einen Knoten v in N ∆/3(a) oder v‘ in N ∆/3(b) finden. r s r s Daraus folgt, daß B (v) ≥ 2/3·∆ oder B (v‘) ≥ 2/3·∆ und wir können B (v) oder B (v‘) für unsere Abschätzung benutzen. Wie vorhin können wie eine kleine Menge von Knoten finden, für die gilt, daß sie einen r s Knoten in N ∆/3(a) ∪ N ∆/3(b) hat. Wir können den BFS-Baum eines jeden diesen Knotens berechnen und das Maximum dieser Höhen als unsere Abschätzung E benutzen. Für die Notation im Folgenden ist es einfacher ∆/3 als eine ganze Zahl anzunehmen. Im allgemeinen muß die Analyse jedoch modifiziert werden, um ∆/3 benutzen zu können. Ann: ∆ ≥ 3. Def. 3.4: Ein k-Partial-BFS-Baum wird dadurch erhalten, daß eine BFS bis zu dem Knoten ausgeführt wird, bei dem (ohne die Wurzel) k Knoten durchlaufen wurden. Sei k = 9 Lemma 3.5: Ein k-Partial-BFS-Baum kann in O(k2) berechnet werden. Beachte: ein k-Partial-BFS-Baum beinhaltet die k Knoten, die am nächsten zur Wurzel sind. Diese Menge ist aber nicht eindeutig definiert. Def. 3.6: Sei PBFS k(v) die Knotenmenge, die durch die k-Partial-BFS von v besucht wurde. PB (v) bezeichne die Höhe des auf diese Art konstruierten Baumes. PBFS und PB sind analog definiert. 12 Bsp: Sei k = 8 PBFS k(v) = {1,2,3,4,5,9,10,11} PB (v) = 3 Algorithmus approx-diameter 1) berechne einen s-Partial-BFS -Baum für jeden Knoten in V als Wurzel. 2) sei w der Knoten mit der maximalen Höhe (PB (w)) der Partial-BFS -Bäume. 3) berechne ein BFS -Baum von w und ein BFS Baum für jeden Punkt in PBFS s(w). 4) berechne einen neuen Graphen Ĝ aus G dadurch, daß alle Kanten der Form (v,u), wobei u∈PBFS s(v), hinzugefügt werden. 5) berechne ein out-dominating set D in Ĝ. 6) berechne ein BFS -Baum für jeden Knoten in D. 7) gib die Abschätzung E aus, die der maximalen Höhe aller BFS-Bäume aus Schritt 3 und 6 entspricht. Lemma 3.7: Das dominating set D, das in Schritt 5 gefunden wird, hat die Größe O(s-1 n logn). r r Lemma 3.8: Wenn |N ∆/3(v)| ≥ s für alle v∈V, dann ist D ∩ (N ∆/3(v) ∪ {v}) ≠ Ø für alle v∈V. r Lemma 3.9: Sei S die Menge von Knoten v so, daß |N ∆/3(v)|< s. Wenn S ≠ Ø, dann gehört der Knoten w, der im 2. Schritt gefunden wird, zu S. r s Wenn zusätzlich B (w) < 2/3·∆ ist, gilt für alle Knoten v PBFS s(w) ∩ N ∆/3(v) ≠ Ø. Theorem 3.10: Der Algorithmus approx-diameter ergibt eine Abschätzung E, für die 2/3·∆ ≤ E ≤ ∆ gilt, in der Zeit O(ms+ms-1 n logn+ns2). Wählt man s= n log n , ergibt dies die Laufzeit O(m n log n + n2 logn). Beweis: Es gibt zwei Fälle. Seien a und b zwei Knoten, für die gilt d(a,b) = ∆. r 1. Fall: Für alle Knoten v gilt |N ∆/3(v)| ≥ s. i) wenn a oder b aus D ist, sind wir fertig. 13 ii) sonst folgt aus dem Beweis des Lemmas 3.8, daß die Menge D einen Knoten v mit r v∈N ∆/3(a) besitzt. In Schritt 6 berechnet man BFS -Bäume für jeden Knoten aus D. Einer dieser Knoten r ist v und B (v) ist die gewünschte Abschätzung. r 2. Fall: Es gibt einen Knoten v ∈V, für den |N ∆/3(v)| < s gilt. Sei w der Knoten aus Schritt 2. r r i) wenn B (w) ≥ 2/3·∆ ist B (w) unsere Abschätzung. s ii) Sonst folgt aus Lemma 3.9, daß PBFS s(w) einen Knoten v∈N ∆/3(b) besitzt. Weil wir in Schritt 3 für jeden Knoten aus PBFS s(w) BFS -Bäume berechnen, ist einer dieser Knoten v s und B (v) die gewünschte Abschätzung. c) Erweiterung für gewichtete Graphen: Der Algorithmus zur Abschätzung der Durchmesser erweitert sich für den Fall der gewichteten Graphen gut. Dies erfordert einige Modifikationen des Algorithmus approx-diameter: - Die BFS wird durch den Dijkstra´s Algorithmus für kürzeste Wege ersetzt. - Bei der Konstruktion des neuen Graphen Ĝ in Schritt 4 müssen wir zuerst alle Originalkanten von G entfernen, bevor wir die neuen Kanten hinzufügen, da es in einem gewichteten Graphen nicht notwendigerweise der Fall ist, daß der Nachbar eines Knoten v zu N∆/3(v) gehört. Die Laufzeit bleibt dieselbe. 4) APSP- Abschätzung Wir beschränken uns auf ungerichtete und ungewichtete Graphen. Auch APSP-Abstände können mit einem additiven Fehler von 2 bestimmt werden. Basis-Idee: Ein dominating set muß einen Knoten beinhalten, der innerhalb eines Abstandes 1 von allen kürzesten Wegen ist, da ein dominating set einen Nachbarn von jedem Knoten des Graphen enthält. 14 Algorithmus approx-APSP Kommentar: Definiere G[L(V)] als den Subgraph von G, der durch L(V) induziert wird. 1) Setze alle Einträge in der Abstandsmatrix ď auf ∞. 2) Berechne ein dominating set D für H(V) mit der Größe s-1n logn. 3) Berechne ein BFS-Baum für jeden Knoten v∈D und erneuere ď mit den erhaltenen kürzesten Weglängen von v. 4) Berechne ein BFS-Baum in G[L(V)] für jeden Knoten v∈L(V) und erneuere ď mit den erhaltenen kürzesten Weglängen von v. 5) für alle u,v ∈ V\D ď(u,v) ← min {ď(u,v), min {ď(w,u) + ď(w,v)}} w ∈D 6) gib ď als die APSP Matrix und den größten Eintrag als Durchmesser aus. Bsp: Schritt 3: 15 Schritt 4: Schritt 5: kürzester Weg der Weg, der in Schritt 5 berechnet wird (In Schritt 4 erhält man den roten Weg nicht, da er über H(V) geht => Abschätzung nötig) Theorem 4.1: Im Algorithmus approx-APSP erfüllen die Abstände, die in ď auftreten, für alle Knoten u,v ∈V die Ungleichung 0 ≤ ď(u,v) – d(u,v) ≤ 2. Außerdem kann der Algorithmus so modifiziert werden, daß er Wege mit der Länge ď produziert, anstatt nur die Approximationsabstände auszugeben. Dieser Algorithmus hat die Laufzeit O(n2s+n3s-1logn). Wählt man s = n log n , ergibt dies eine Laufzeit O(n2,5 log n ). Beweis: Zuerst zeigen wir, daß der Algorithmus so modifiziert werden kann, daß er die aktuellen Wege ausgibt, anstatt nur die Abstände. Um dies zu erreichen, kann im Schritt 3 und 4 jeder neue Matrixeintrag mit dem Weg, der vom BFS-Baum dafür benutzt wurde, verknüpft werden. In Schritt 5 verknüpfen wir nur die zwei Wege aus Schritt 3, die den minimalen Wert von ď ermitteln. 16 Für einen Knoten u ist klar, daß der kürzeste Weg-Abstand zu einem Knoten v∈V, der ausgegeben wird, nicht kleiner sein kann als die korrekten Werte, da sie mit den aktuellen Wegen übereinstimmen. Um zu sehen, daß sie nicht mehr als 2 differieren, müssen wir drei Fälle betrachten. 1. Fall: u∈D In diesem Fall wird der BFS-Baum von v in Schritt 3 berechnet. Deshalb sind die Abstände, die ausgegeben werden korrekt. 2. Fall: u∈H(V)\D Aufgrund der Definition von D muß u einen Nachbarn w in D haben. Der Abstand von u und w zu einem anderen Knoten kann nicht mehr als 1 variieren. Die Abstände von w sind nach dem 1. Fall immer korrekt. Die Zuweisung in Schritt 5 garantiert ď(u,v) ≤ ď(w,u) + ď(w,v) = d(w,v)+1 ≤ d(u,v)+2 3. Fall: u∈L(V) Nehme einen kürzesten Weg von u nach v. Ann: Der Weg von u nach v sei völlig in L(V) enthalten. Dann wird ď(u,v) in Schritt 4 richtig gesetzt. Sonst muß der Weg einen Knoten w∈H(V) enthalten. a) wenn w∈D, wird der richtige Abstand berechnet, wie im 1. Fall. b) wenn w∈H(V)\D, dann gibt es einen Nachbarn x∈D von w. In Schritt 5 wird eine der betrachteten Möglichkeiten einen Weg von u nach x und einen Weg von x nach v liefern. Weil die Abstände x beinhalten, werden sie in Schritt 3 korrekt berechnet. Dies bedeutet, daß ď(u,v) ≤ d(x,u) + d(x,v) ≤ d(w,u) + d(w,v) + 2 = d(u,v) + 2 Laufzeitberechnung: - Schritt 1 erfordert nur O(n2) Zeit. - Schritt 2 kann nach Theorem 2.7 in der festgesetzen Zeit ausgeführt werden. - Schritt 3 erfordert ms-1 n logn zur Berechnung der BFS-Bäume. - Schritt 4 kann nur O(n) Bäume berechnen, aber jeder einzelne hat O(ns) Kanten. Deshalb erfordert dies nur O(n2s) Zeit. - Schritt 5 nimmt alle n2 Knotenpaare und vergleicht diese mit den s-1n logn Knoten aus D. ⇒ dies impliziert die gewünschte Laufzeit. Eine Ausdehnung der Ergebnisse auf ungerichtete Graphen mit kleinen ganzzahligen Kantengewichten ist möglich. 17 5) Abschätzung von k-pairs kürzesten Wegen: Es werden nur die Abstände zwischen einer gegebenen Menge P mit k unterschiedlichen Paaren bestimmt. Dazu kann der Algorithmus approx-APSP generalisiert werden, um dieses Problem mit derselben Fehlergrenze zu behandeln. Der generalisierte Algorithmus wird „approx-kPSP“ genannt. Er hat die Laufzeit O(n1,5 k log n + n2log2n), wobei k die Kardinalität der Menge P ist. Wenn P alle Knotenpaare beinhaltet, ist das Verhalten von approx-kPSP mit dem von approx-APSP identisch. Aber für kleine k ist der Algorithmus bedeutsam schneller als approx-APSP. Die wichtigste Idee hinter der Beschleunigung ist die richtige Wahl von s. Algorithmus approx-kPSP(i) Kommentar: Definiere si = n/2i und t = log(n1,5 / k log n ). Alle ď(u,v) sind anfänglich gleich ∞ und G1 = (V1,E1) ist als G gesetzt. 1) falls i = t berechne ein BFS-Baum für jeden Knoten v∈Vi in Gi und erneuere ď mit den erhaltenen kürzesten Weglängen. 2) sonst sei Ui = {v∈Vi| Grad von v in Gi ist mindestens si} Vi+1 = Vi\Ui und Gi+1 sei der Subgraph von Gi induziert durch Vi+1. a) nenne approx-kPSP(i+1) b) berechne ein dominating set Di für Ui in Gi c) berechne ein BFS-Baum für jedes v∈Di und erneuere ď mit den erhaltenen kürzesten Weglängen d) für jede {u,v}∈P führe aus ď(u,v) ← min{ď(u,v), min ď(w,u) + ď(w,v)} w ∈D 3) return Der Algorithmus ist rekursiv und wird auf der höchsten Ebene mit dem Parameterwert i = 1 mit der Annahme G = G1 aufgerufen. Der Algorithmus macht t rekursive Aufrufe, wobei t als Parameter so gewählt wurde, daß er die Laufzeit minimiert. 18 Lemma 5.1: Der Parameter t kann so gewählt werden, daß die Laufzeit von Algorithmus approx-kPSP O(n1,5 k log n + n2 log2n) ist. Diese Laufzeit wird für t = log(n1,5 / k log n ) erreicht. Theorem 5.2: Für alle Paare (u,v)∈P erfüllen die Abstände, die durch approx-kPSP in ď ausgegeben wurden, die Ungleichung 0 ≤ ď(u,v) – d(u,v) ≤ 2. Der Algorithmus hat die Laufzeit O(n2log2n + n1,5 k log n ). Zusammenfassung: In der Arbeit wurden drei Teilprobleme betrachtet und folgende Ergebnisse erzielt. - Durchmesser: ¾ Algorithmus 2-vs-4 O(ms-1 n logn + ms) (für s= n log n => O(m n log n )) für spezielle gerichtete und ungewichtete Graphen wird generalisiert zu ¾ Algorithmus approx-diameter 2/3·∆ ≤ E ≤ ∆ Abschätzung O(ms+ms-1 n logn+ns2) (für s= n log n => O(m n log n + n2 logn) für alle gerichtete und ungewichtete Graphen Erweiterung für gewichtete Graphen möglich - APSP: ¾ Algorithmus approx-APSP 0 ≤ ď(u,v) – d(u,v) ≤ 2 O(n2s+n3s-1logn) (für s= n log n => O(n2,5 log n )) Erweiterung für ungewichtete Graphen mit kleinen ganzzahligen Kantengewichten möglich - APSP für k-pairs kürzeste Wege: ¾ Algorithmus approx-kPSP(i) 0 ≤ ď(u,v) – d(u,v) ≤ 2 O(n2log2n+n1,5 k log n ) 19