pdf-8 - Universität Leipzig

Werbung
Kürzeste Wege
kantenmarkierter (gewichteter) Graph
Teil 4
Distanz
P
G
= (V , E , g )
n: (v0 , v1 ), (v1 , v2 ), , ..., (vn−1 , vn )
n
P
Gewicht (Länge) des Weges/Pfads w (P ) =
g ((vi −1 , vi ))
Weg/Pfad
ADS: Algorithmen und Datenstrukturen 2
der Länge
i =1
d (u , v ): Gewicht des kürzesten Pfades von u
v
nach
Varianten
Prof. Peter F. Stadler & Sebastian Will
nicht-negative Gewichte vs. negative und positive Gewichte
Bestimmung der kürzesten Wege:
Bioinformatik/IZBI
Institut für Informatik
& Interdisziplinäres Zentrum für Bioinformatik
a) zwischen allen Knotenpaaren,
b) von einem Knoten
Universität Leipzig
u
aus
c) zwischen zwei Knoten
u
und
v
Bemerkungen
30. April 2014
kürzeste Wege sind nicht immer eindeutig
kürzeste Wege müssen nicht existieren, z.B. wenn:
kein Weg existiert oder
ein Zyklus mit negativem Gewicht existiert
1 / 23
Zur Erinnerung: Warshall's Transitive Hülle
G. Heyer, F. Holz (Abt ASV, Uni LE)
SS 2013
2 / 23
Warshall's Algorithmus für Distanzen
A = Adjazenzmatrix G (V , E ), n = |V |
Warshall-Algorithmus lässt sich einfach modizieren, um kürzeste Wege
zwischen allen Knotenpaaren zu berechnen
Von i = 1 bis n
A[i][i] = 1
Von j = 1 bis n
Von i = 1 bis n
Falls A[i][j] = 1 Dann
Von k = 1 bis n
Falls A[j][k] = 1 dann A[i][k] = 1
Fuer alle Paare i,j tue A[i][j] = g((i,j))
Von j = 1 bis n
Von i = 1 bis n
Von k = 1 bis n
A[i][k] = min (A[i][k], A[i][j] + A[j][k])
Annahme: kein Zyklus mit negativem Gewicht vorhanden
Komplexität:
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
ADS 2, V 4
SS 2013
3 / 23
Dijkstra-Algorithmus I
O (n3 ), n = |V |
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
4 / 23
Dijkstra-Algorithmus II
Bestimmung der von einem Knoten ausgehenden kürzesten Wege
gegeben: kanten-bewerteter Graph
G
= (V , E , g )
mit
g :E
(Kantengewichte)
→ R+
0
s ; zu jedem Knoten u wird die Distanz zu Startknoten s
D [u ] geführt
Startknoten
in
Q
sei Prioritäts-Warteschlange (sortierte Liste);
Priorität = Distanzwert
Funktion
succ (u ) liefert die Menge der direkten Nachfolger von u
Verallgemeinerung der Breitensuche (gewichtete Entfernung)
Fuer alle Knoten v tue D[v] = unendlich
D[s] = 0
PriorityQueue Q = V
Solange Q nicht leer dann
v = naechster Knoten aus Q mit kleinstem Abstand D
Entferne v aus Q
Fuer jeden Nachbarn u in succ(v) & Q
Falls D[v] + g((v,u)) < D[u] dann
D[u] = D[v] + g((v,u))
funktioniert nur bei nicht-negativen Gewichten
Optimierung gemäÿ Greedy-Prinzip
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
5 / 23
1
v
u
10
10
2
0
3
4
6
s
4
6
3
y
v
x
u
4
2
y
v
1
7
6
s
5
8
2
0
3
4
6
x
2
G. Heyer, F. Holz (Abt ASV, Uni LE)
Knoten, die am
Q
s
D (s ) = 0
Q genommen. Der kürzeste
0
0
Pfad zu v gehe über direkten Vorgänger v von v . Da v näher an s
0
0
liegt, ist v nach Induktionsvoraussetzung mit richtiger Länge D (v )
bereits entfernt. Da der kürzeste Weg zu v die Länge
D (v 0 ) + g ((v 0 , v )) hat und dieser Wert bei Entfernen von v 0 bereits v
zugewiesen wurde, wird v mit der richtigen Länge entfernt.
wird gewählt,
v
wird aus
hinzugenommene Kanten)
7
5
y
x
ADS 2, V 4
i
liegen, korrekt berechnet und diese Knoten sind aus
erfordert nicht-negative Kantengewichte (wachsende Weglänge durch
5
5
s
Induktionsschritt: Nimm an,
10
2
Schleifendurchgängen sind die Längen von
Induktionsanfang:
5
8
1
i
nächsten an
entfernt.
8
8
2
7
0
3
5
10
s
nach
2
0
5
x
u
6 / 23
Korrektheitsbeweis
10
8
s
SS 2013
v
1
8
8
u
ADS 2, V 4
Dijkstra-Algorithmus: Korrektheit
8
Dijkstra: Beispiel
G. Heyer, F. Holz (Abt ASV, Uni LE)
7
2
SS 2013
y
7 / 23
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
8 / 23
Dijkstra-Algorithmus: Eigenschaften
Kürzeste Wege mit negativen Kantengewichten
(ohne negative Zyklen)
O (n2 ), n = |V |
Komplexität
Bellmann-Ford-Algorithmus
O (n)
innere Schleife: Aunden des Minimums begrenzt durch O (n ), ebenso
das Aufsuchen der Nachbarn von v
Pfade bilden aufspannenden Baum (der die Wegstrecken von s aus
n-maliges Durchlaufen der äuÿeren Schleife liefert Faktor
Fuer alle Knoten v tue D[v] = unendlich
D[s] = 0
Von i = 1 bis n-1
Fuer alle Paare (u,v)
Falls D[u] + g((u,v)) < D[v] dann
D[v] = D[u] + g((u,v))
gesehen minimiert)
u und v :
Bestimmung des kürzesten Weges zwischen
Spezialfall für Dijkstra-Algorithmus mit Start-Knoten
v
sobald
aus
Q
u (Beendigung
entfernt wird)
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
9 / 23
v
u
10
3
−5
6
s
3
−5
6
s
5
y
v
x
u
11
3
10
3
−5
6
s
y
v
x
u
11
3
2
1
3
−5
6
s
2
x
6
2
5
y
x
1
4
3
−5
2
q
6
5
y
x
−1
2
11 / 23
Flüsse in Netzwerken II
q (Quelle) und s
c :→ R+ .
Kapazitätsbeschränkung:
P
G
= (V , E , c )
f :E
∀e ∈ E : f (e ) ≤ c (e ).
(v 0 ,v )∈E
→ R+
0,
so dass gilt:
c (e )
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
c
10/4
4/0
q
Gesucht: Fluss mit maximalem Wert
begrenzt durch Summe der aus
P
f ((v 0 , v )) =
6/6
a
8/6
q wegführenden bzw. in s
eingehenden
Kapazitäten
q und s
jeder weitere Schnitt durch den Graphen, der
trennt,
begrenzt max. Fluss
V in disjunkte
A und B , so dass q ∈ A und s ∈ B .
P
Die Kapazität des Schnitts ist c (A, B ) =
u∈A,v ∈B c ((u , v ))
Schnitt (A, B) eines Fluss-Netzwerks ist eine Zerlegung von
Teilmengen
minimaler Schnitt (minimal cut): Schnitt mit kleinster Kapazität
s
5/2
4/1
4/3
b
d
3/3
c (e ) / Fluss f (e )
G. Heyer, F. Holz (Abt ASV, Uni LE)
Kantenwert: Kapazität
3
mit
0
(v ,v 0 )∈E f ((v , v ))
f , w (f )P
, ist die Summe der Flusswerte der die Quelle q
verlassenden Kanten:
(q ,v )∈E f ((q , v ))
Der Wert von
d
(Senke), sowie einer
Ein Fluss für das Netzwerk ist eine Funktion
∀v ∈ V \ {q , s } :
4
b
Flüsse in Netzwerken III
Ein (Fluss-) Netzwerk ist ein gerichteter Graph
Flusserhaltung:
s
4
y
SS 2013
10
5
Kantenwert: Kapazität
ADS 2, V 4
c
4
6
(s , u )(s , x )(u , v )(u , x )(v , y )
G. Heyer, F. Holz (Abt ASV, Uni LE)
6
a
(Kanten werden hier in lexikographischer Ordnung durchlaufen), also
Kapazitätsfunktion
12 / 23
und Optimierung
y
v
5
6
ausgezeichneten Knoten
SS 2013
Wieviel Abwasser fasst ein Kanalnetz?
8
−2
0
5
5
−5
10
−2
0
5
10 / 23
Wieviel Strom kann durch ein Leitungsnetz ieÿen?
5
10
−2
0
3
8
1
10
SS 2013
Anwendungsprobleme:
11
5
8
8
2
ADS 2, V 4
Wieviel Autos können durch ein Straÿennetz fahren?
−2
0
5
x
u
v
1
10
−2
0
5
s
u
10
10
−2
0
v
8
10
s
1
8
8
1
G. Heyer, F. Holz (Abt ASV, Uni LE)
Flüsse in Netzwerken I
8
Bellmann-Ford: Beispiel
u
BF(G,s)
ADS 2, V 4
SS 2013
13 / 23
Restgraph
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
14 / 23
Zunehmender Weg
G = (V , E , c ). Sei
E 0 = {(v , w )|(v , w ) ∈ E ∨ (w , v ) ∈ E }
Sei f ein zulässiger Fluss für
Wir denieren die Restkapazität einer Kante
rest (e ) = c (e ) − f (e ) falls e ∈ E
f ((w , v )) falls (w , v ) ∈ E
Der Restgraph von
rest (e ) > 0
6/6
a
8/6
f
c
(bzgl.
G ) besteht aus den Kanten e ∈ E 0 , für die
5/2
2
3/3
4
c
2
ADS 2, V 4
3
rest (e )
d
SS 2013
3
im Restgraphen heiÿt
6
q
4
q
q
G. Heyer, F. Holz (Abt ASV, Uni LE)
2
G:
e
1
6/6
3
d
c
10/6
s
5/0
4/3
4/3
b
ADS 2, V 4
3
4/0
q
liegt
s
3
a
8/6
6
4
1
entlang des zunehmenden
Weges
c
3
b
auf
15 / 23
2
zunehmender Weg.
um min(rest (e )) mit
1
b
s
6
a
q
Optimierung des Flusses für
s
3
1
d
6
4
3
c (e )/f (e )
G. Heyer, F. Holz (Abt ASV, Uni LE)
6
q
4/3
b
6
a
10/4
s
4/1
Jeder gerichtete Pfad von
nach
4/0
q
e = (v , w ) wie folgt:
3/3
d
SS 2013
16 / 23
Min-Cut-Max-Flow-Theorem
Ford-Fulkerson-Algorithmus
Ford-Fulkerson-Algorithmus:
füge solange zunehmende Wege zum Gesamtuss hinzu wie möglich
Theorem (Min-Cut-Max-Flow-Theorem):
Sei
f
ein zulässiger Fluss für
G . Dann sind folgende Aussagen äquivalent:
f ist maximaler Fluss in G .
Der Restgraph von f enthält keinen zunehmenden Weg.
w (f ) = c (A, B ) für einen Schnitt (A, B ) von G .
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
Kapazität erhöht sich jeweils um Minimum der verfügbaren
Restkapazität der einzelnen Kanten des zunehmenden Weges
Solange es einen zunehmenden Weg p in Restgraph G gibt
r = min(rest(e)| e liegt auf p)
Fuer alle e = (v,w) auf p tue
Falls e in E dann
f(e) = f(e) + r
Sonst f((w,v)) = f((w,v)) - r
SS 2013
17 / 23
Maximales Bipartites Matching
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
18 / 23
Matching
Matching (Zuordnung) M für ungerichteten Graphen
G
= (V , E )
ist eine
Teilmenge der Kanten, so dass jeder Knoten in V in höchstens einer Kante
Beispiel:
vorkommt
Eine Gruppe von Erwachsenen und eine Gruppe von Kindern besuchen
Disneyland.
|M |
= Gröÿe der Zuordnung
Perfektes Matching: kein Knoten bleibt allein (unmatched), d.h.
Auf der Achterbahn darf ein Kind jeweils nur in Begleitung eines
jeder Knoten ist in einer Kante von M vertreten
Erwachsenen fahren.
Matching M ist maximal, wenn es kein Matching M' gibt mit
Nur Erwachsene/Kinder, die sich kennen, sollen zusammen fahren.
|M | < |M 0 |
Ein bipartiter Graph ist ein Graph, dessen Knotenmenge V in zwei disjunkte
Wieviele Kinder können maximal eine Fahrt mitmachen?
V1 und V2 aufgeteilt ist, und dessen Kanten jeweils einen
V1 mit einem aus V2 verbinden. (also keine Kanten innerhalb
von V1 oder V2 )
Teilmengen
Knoten aus
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
19 / 23
Bipartites Matching und maximaler Fluss
wesentliche Implementierungsalternativen:
Adjazenzmatrix und Adjazenzlisten
Algorithmen mit linearem Aufwand:
Traversierung von Graphen: Breitensuche vs. Tiefensuche
Topologisches Sortieren
Test auf Azyklität (Kreisfreiheit)
Anwendung des Ford-Fulkerson-Algorithmus
SS 2013
21 / 23
Zusammenfassung II
Weitere wichtige Algorithmen:
Bestimmung der transitiven Hülle: Warshall-Algorithmus
Kürzeste Wege: Dijkstra, Bellmann-Ford und Warshall
Minimale Spannbäume: Kruskal-Algorithmus
maximale Flüsse bzw. maximales Matching:
Ford-Fulkerson-Algorithmus
viele NP-vollständige Optimierungsprobleme
Traveling-Salesman-Problem, Cliquenproblem, Färbungsproblem ...
Bestimmung eines planaren Graphen (2D-Graph-Darstellung ohne
überschneidende Kanten)
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
20 / 23
ungerichteten Graphen behandeln.
V1 nach V2 richten.
Jeder Knoten in V1 erhält eingehende Kante von der Quelle.
Jeder Knoten in V2 erhält ausgehende Kante zur Senke.
Alle Kanten erhalten Kapazität c (e ) = 1
Kanten von
ADS 2, V 4
SS 2013
Viele wichtige Informatikprobleme lassen sich mit gerichteten bzw.
Quelle und Senke hinzufügen.
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
Zusammenfassung I
Maximales Matching kann auf maximalen Fluss zurückgeführt werden:
→
G. Heyer, F. Holz (Abt ASV, Uni LE)
SS 2013
23 / 23
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2, V 4
SS 2013
22 / 23
Herunterladen