KW, MIS

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