Inhaltsverzeichnis

Werbung
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
Herunterladen