KÜRZESTE WEGE

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