Algorithmische Graphentheorie

Werbung
Algorithmische Graphentheorie
Vorlesung 6 und 7: Kreis- und Wegeprobleme
Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca
[email protected]
12. Mai 2017
1/62
K ÜRZESTE W EGE
2/62
WAS BEDEUTET M ÖGLICHST KURZ ?
Was bedeutet möglichst kurz eigentlich? Soll der Weg
streckenmäßig möglichst kurz sein? Oder in kürzester Zeit
zurück gelegt werden? Oder soll er aus möglichst wenigen
Teilstrecken bestehen, d.h. mit möglichst wenig Umsteigen
auskommen? Je nach Kontext können verschiedene
Definitionen von möglichst kurz sinnvoll sein. Hat man sich für
eine Definition entschieden, so gewichtet man die Kanten im
betrachteten Graphen entsprechend. Man sucht also einen Weg,
bei dem das Gesamtgewicht möglichst klein ist. Aber wie
findet man den nun?
3/62
A BST ÄNDE IN G RAPHEN
Definition
Es sei G = (V, E) ein Graph. Der Abstand d(v, w) zweier Knoten
v, w ∈ V ist die minimale Länge eines Weges von v nach w. Falls es
keinen solchen Weg gibt, setzen wir d(v, w) = ∞.
Bemerkung
Die Länge eines Kantenzugs bzw. Weges ist definiert als die
Anzahl der Kanten, die in diesem enthalten sind. Insbesondere
gilt also d(v, v) = 0 für alle v ∈ V.
4/62
A LGORITHMUS ZUR B ERECHNUNG VON A BST ÄNDEN
Es sei G = (V, E) ein durch seine Adjazenzlisten Av gegebener
Graph und v0 sei ein Knoten von G. Es werden die Abstände
d(v) von v0 zu v für alle v ∈ V berechnet.
5/62
E RL ÄUTERUNGEN
6/62
A BST ÄNDE IN N ETZWERKE
Wir ordnen nun jeder Kante eines Graphen eine Länge zu.
Typisches Beispiel sind Straßennetze mit Entfernungsangaben.
Definition
Es sei G = (V, E) ein Graph sowie w : E → R eine Bewertung der
Kanten mit reellen Zahlen.
Das Paar (G, w) heißt Netzwerk. Für jede Kante e ∈ E heißt w(e) die
Länge oder das Gewicht von e.
Für einen Kantenzug K = (v0 , . . . , vk ) ist
P
w(K) := ki=1 w({vi−1 , vi }) die Länge von K.
7/62
A BST ÄNDE IN N ETZWERKE
Definition
Es sei (G, w) ein Netzwerk, G = (V, E) sowie w(e) ≥ 0 für alle
e ∈ E. Der Abstand d(v, w) zweier Knoten v, w ∈ V in einem
Netzwerk ist definiert als das Minimum der Längen aller Wege von v
nach w. Falls es keinen solchen Weg gibt, setzen wir d(v, w) = ∞.
Definition
Ein Teilgraph G = (V, E) von G heißt Baum kürzester Wege
bezüglich (der Wurzel) s, wenn G ein spannender Baum mit Wurzel s
ist und für alle v ∈ V einen kürzesten Weg von s nach v enthält.
8/62
L EMMA
Es sei G = (V, E) ein gerichteter oder ungerichteter gewichteter
Graph mit Gewichten w(e) für alle e ∈ E und v0 , vl ∈ V. Ist
P = (v0 , e1 , v1 , . . . , el , vl ) ein kürzester Weg mit Startknoten v0
und Endknoten vl , so ist für alle 0 ≤ i < j ≤ l der Teilweg
Pij = (vi , ei , vi+1 , . . . , ej , vj ) ein kürzester Weg mit Startknoten vi
und Endknoten vj .
9/62
B EWEIS
10/62
K ÜRZESTE W EGE VS . NEGATIVE K ANTENGEWICHTE
Frage
Was passiert falls wir negative Kantengewichte erlauben?
11/62
W URZELB ÄUME K ÜRZESTER W EGE
Satz
Es sei G = (V, E) ein gerichteter oder ungerichteter,
zusammenhängender und gewichteter Graph mit
Kantengewichten w(e) für alle e ∈ E und s ∈ V. Ein Teilgraph
T = (V, E) von G ist genau dann ein Baum kürzester Wege
bezüglich s, wenn T ein spannender Baum mit Wurzel s ist und
für alle Kanten e = (v, u) ∈ E \ E gilt
d(u) ≤ d(v) + w(e),
wobei für alle v ∈ V der Wert d(v) die Länge des eindeutigen (!)
Weges in T von s nach v bezeichnet.
12/62
K ÜRZESTE W EGE IN N ETZWERKE
Algorithmus von Dijkstra
Es sei (G, w) ein Netzwerk mit G = (V, E) und einer
nichtnegativen Längenfunktion w auf E sowie v0 ∈ V. Es
werden alle Abstände d(v) von v0 zu einem Knoten v ∈ V
berechnet.
13/62
A LGORITHMUS VON D IJKSTRA
Der Algorithmus von Dijkstra kann analog für gerichtete
Graphen verwendet werden.
Der Algorithmus kann leicht so erweitert werden, dass nicht
nur die Abstände d(v0 , v) sondern auch die kürzesten Wege
berechnet werden.
Satz
Nach der Terminierung vom Algorithmus von Dijkstra gilt
d(v) = d(v0 , v) für alle v ∈ V. Die Zeitkomplexität des
Algorithmus ist O(|V|2 ).
14/62
B EISPIEL
15/62
K ÜRZESTE W EGE IN GERICHTETE G RAPHEN :
G RUNDBAUSTEINE
Zur Erinnerung
Bei der Breitensuche setzte man die Abstände am Anfang auf
d(s) = 0 für den Startknoten s und d(v) = ∞ für alle anderen
Knoten v 6= s. Die Vorgänger wurden auf π(v) = 0 für alle
Knoten v ∈ V gesetzt. Dann begann man im Startknoten s und
setzte bei allen Nachbarn v den Abstand auf d(v) = 1 und den
Vorgänger auf π(v) = s. In der Reihenfolge ihres Auffindens
untersuchte man anschließend alle anderen Knoten und
korrigierte bei deren Nachbarn, falls nötig, den Abstand und
den Vorgänger.
Wir werden das Verfahren nun so abändern, dass es in
gerichteten Graphen mit beliebigen Gewichten funktioniert.
Dazu betrachten wir zunächst die zwei zentralen Bestandteile
des Verfahrens:
16/62
K ÜRZESTE W EGE IN GERICHTETE G RAPHEN :
I NITIALISIERUNG
Initialisierung des Verfahrens mit den bekannten Daten
17/62
K ÜRZESTE W EGE IN GERICHTETE G RAPHEN : T EST (e)
Die zweite zentrale Zutat ist die Regel für die Aufdatierung
von Abständen und Vorgängern, die wir ein kleines bisschen
abwandeln wollen. Bei der Breitensuche wurde für jede Kante
e = (v, u) mit bekanntem Anfangsknoten v geprüft, ob zu dem
Endknoten u schon ein Weg existierte oder nicht. Wir werden
zusätzlich noch überprüfen, ob der schon bekannte Weg, so er
existiert, länger ist, als einer über die betrachtete Kante:
18/62
Um ein Verfahren zur Bestimmung kürzester Wege zu
entwickeln, müssen wir noch festlegen, in welcher Reihenfolge
die Kanten e = (v, u) mit dem Testalgorithmus getestet werden
sollen. Doch auch ohne hierfür eine Regel festzulegen, können
wir schon einige Aussagen treffen. Dafür verwenden wir
wieder den bei der Breitensuche eingeführten
Vorgängergraphen Gπ = (Vπ , Eπ ).
19/62
S ATZ
Es sei G = (V, E) ein gerichteter Graph mit Kantengewichten
w(e) für alle e ∈ E und einer Wurzel s ∈ V. Initialisiert man die
Abstände d(v) und die Vorgänger π(v) mit dem
Initialisierungsalgorithmus und führt eine beliebige Anzahl
von Testschritten mit dem Testalgorithmus aus, so gelten:
1
d(v) ≥ dist(s, v) für alle v ∈ V.
2
Jeder Kreis im Vorgängergraphen Gπ = (Vπ , Eπ ) hat
negative Länge.
3
Falls G keinen Kreis negativer Länge enthält, so ist Gπ ein
Baum mit Wurzel s, der für jedes v ∈ Vπ {s} einen Weg der
Länge höchstens d(v) enthält, der sich durch
Rückverfolgen der Vorgänger π(v) konstruieren lässt.
20/62
B EWEIS
21/62
B EWEIS
22/62
B EWEIS
23/62
B EWEIS
Folglich ist s eine Wurzel in Gπ . Da nach Konstruktion
ausserdem g(s) = 0 und g(v) = 1 für alle v ∈ Vπ \ {s} gilt, ist Gπ
ein Baum mit Wurzel s.
24/62
A LGORITHMUS VON D IJKSTRA F ÜR GERICHTETE
G RAPHEN
25/62
B EISPIEL
26/62
A LGORITHMUS VON B ELLMAN -F ORD
Treten in einem gewichteten Graphen auch negative
Kantengewichte auf, so funktioniert der Algorithmus von
Dijkstra nicht mehr korrekt. Betrachten wir den Graphen aus
der Abbildung, so bestimmt der Algorithmus von Dijkstra mit
Startknoten s = 1 die Abstände d = (0, 2, 1), richtig wäre aber
offensichtlich d = (0, 2, 0).
27/62
B EISPIEL
Angenommen, wir haben Euro und wollen bei der Bank
möglichst günstig 100 US-Dollar kaufen. Wir können nun
direkt Dollar kaufen und müssen der Bank für jeden Dollar,
den wir kaufen wollen, einen gewissen Preis bezahlen. Wir
könnten stattdessen aber auch erst Britische Pfund für Euros
kaufen, mit den Pfund dann Schweizer Franken kaufen und
diese schließlich verwenden um die Dollar zu kaufen. Um eine
Einheit der neuen Währung zu bekommen, müssen wir immer
einen gewissen Preis in der alten Währung bezahlen. Die Frage
ist nun, in welcher Reihenfolge wir am besten wechseln um die
Kosten möglichst gering zu halten?
28/62
B EISPIEL
Dieses Problem können wir als gerichteten Graphen
modellieren, indem wir jeder Währung einen Knoten zuordnen
und die Kanten mit dem Preis w(e) gewichten, den wir in der
Startwährung bezahlen müssen um eine Einheit der
Zielwährung zu bekommen. Die Gesamtkosten eines
Tauschvorganges
entlang eines Weges P sind dann durch
Q
w(P) = e∈P w(e) gegeben und wir suchen einen möglichst
günstigen Weg vom Euro-Knoten zum Dollar-Knoten. Dies
lässt sich in ein kürzeste Wege-Problem umwandeln, wenn wir
die Tauschkosten logarithmieren, denn es gilt
Y
X
log w(P) = log
w(e) =
log w(e).
e∈P
e∈P
Abhängig davon, ob w(e) ≥ 1 ist oder 1 > w(e) > 0, ist
log w(e) ≥ 0 oder log w(e) < 0.
29/62
A LGORITHMUS VON B ELLMAN -F ORD
30/62
B EISPIEL
31/62
K ÜRZESTE W EGE IN DAG S
Da in DAGs keine Kreise auftreten, sind negative
Kantenlängen unproblematisch.
Satz
Gegeben sei ein gerichtetes Netzwerk (G, w) mit G = (V, A).
Wir lassen auch w(e) < 0 zu. L = (v1 , . . . , vn ) sei eine
topologische Sortierung von V. Dann ergibt sich die Länge
d(v1 , vi ) eines kürzesten Weges von v1 zu einem Knoten vi
durch die folgende Rekursion für d(vi ):
1
d(v1 ) = 0
2
Für i > 1:
d(vi ) =
min
{1≤j<i|(vj ,vi )∈A}
w(vj , vi ) + d(vj ).
32/62
B EMERKUNG
Wenn man min durch max ersetzt, dann erhält man die
Länge eines längsten Weges.
Das allgemeine Entscheidungsproblem, ob in einem
(ungerichteten) Netzwerk ein (einfacher) Weg der Länge
≥ l existiert, ist dagegen NP-vollständig.
Die angewandte Vorgehensweise, eine optimale Lösung
durch eine bestmögliche Kombination der Lösungen zu
Subproblemen zu finden, nennt man dynamisches
Programmieren.
Der Satz läßt sich in einen Algorithmus mit
Zeitkomplexität O(|V| + |A|) umsetzen.
33/62
B EMERKUNG
Mit dem Verfahren können nicht nur kurzeste und längste
Wege sondern auch Anzahlen von Wegen berechnet
werden.
Z.B. die Anzahl N(vi ) derWege von v1 nach vi .
Hierfür muss der Minimum-Operator durch die
Summenbildung
X
N(vi ) =
N(vj )
{1≤j<i|(vj ,vi )∈A}
ersetzt und die Initialisierung N(v1 ) = 1 verwendet
werden.
34/62
A NWENDUNGEN
35/62
B ERECHNUNG OPTIMALER B LOCKUNGEN
36/62
B ERECHNUNG OPTIMALER B LOCKUNGEN
37/62
B ERECHNUNG OPTIMALER B LOCKUNGEN
38/62
B EISPIEL
39/62
M ODELLIERUNG
40/62
P ROJEKTPLANUNG MIT N ETZPLANTECHNIK
41/62
P ROJEKTPLANUNG MIT N ETZPLANTECHNIK
42/62
B EISPIEL : Z USAMMENBAU EINES FAHRRADS
43/62
M ODELLIERUNG
44/62
M ODELLIERUNG
45/62
C RITICAL PATH M ETHOD
46/62
P ROJEKTPLANUNG
47/62
D IE R OUTEN DER GERINGSTEN V IDEO ÜBERWACHUNG
48/62
TSP - P ROBLEM DES H ANDLUNGSREISENDEN
Gegeben sei ein ungerichteter, vollständiger und gewichteter
Graph. Dann wird ein Hamilton-Kreis minimaler Länge
gesucht. Da der Graph vollständig ist, gibt es einen solchen
immer. Wie wir aus dem letzten Abschnitt wissen, ist es schon
sehr schwer Hamilton-Kreise zu finden. Noch schwerer ist es
dann natürlich unter den (|V| − 1)!/2 Hamilton-Kreise, den mit
minimaler Länge zu finden. Daher werden wir in diesem
Abschnitt sogenannte Heuristiken zur Lösung des Problems
des Handlungsreisenden betrachten. Unter einer Heuristik
versteht man ein Verfahren zur Lösung eines
Optimierungsproblems, dass versucht mit Hilfe von Faustregeln
und intelligentem Raten eine gute Lösung zu finden, aber nicht
garantieren kann eine optimale Lösung zu finden.
49/62
N ÄCHSTER -N ACHBAR -H EURISTIK
50/62
K ORREKTHEIT DES A LGORITHMUS
Satz
Es sei G = (V, E) ein ungerichteter, vollständiger und
gewichteter Graph mit Kantengewichten w(e) für alle e ∈ E.
Dann findet der Algorithmus einen Hamilton-Kreis in G.
Beweis:
Da G vollständig ist, gibt es in jeder Iteration mindestens eine
Kante zu einem noch nicht besuchten Knoten und folglich auch
eine mit minimalem Gewicht. Daher ist die Wahl von e∗
wohldefiniert. Nach |V| − 1 Iterationen enthält P nach
Konstruktion |V| verschiedene Knoten, also alle Knoten in V.
Da G vollständig ist, existiert eine Kante vom letzten Knoten
zum Startknoten und der geschlossene Kreis P ist ein
Hamilton-Kreis in G.
51/62
B EMERKUNG
Der Algorithmus findest zwar immer einen Hamilton-Kreis,
aber nicht immer den kürzesten. Tatsächlich kann die Länge
des gefundenen Hamilton-Kreises sogar beliebig viel größer
sein als die des kürzesten.
Abbildung 1: Beispiel für die Nächster-Nachbar-Heuristik
52/62
B EMERKUNG
Wählt man hier C > 1, so ist der blau eingezeichnete Kreis der
von der Nächster-Nachbar-Heuristik mit Startknoten s = 1
gefundene Hamilton-Kreis mit der Länge 5 + C. Nutzt man die
Diagonalen, so ist es jedoch auch möglich einen
Hamilton-Kreis der Länge 8 zu finden.
Für C > 3 ist der von der Heuristik gefundene Kreis also nicht
optimal, kann sogar beliebig viel länger das der optimale
werden.
53/62
B ESSERE H EURISTIKEN
Eine weitere Heuristik, bei der man abschätzen kann, wieviel
schlechter der gefundene Hamilton-Kreis im Vergleich zum
optimalen höchstens sein kann, beruht auf der Konstruktion
minimaler spannender Bäume. Diese funktioniert allerdings
nur in sogenannten metrischen Graphen.
54/62
M ETRISCHE G RAPHEN
Definition
Es sei G = (V, E) ein ungerichteter gewichteter Graph mit positiven
Kantengewichten w(e) > 0 für alle e ∈ E. Der Graph G heißt
metrisch, wenn für alle u, v, z ∈ V mit {u, v}, {u, z}, {z, v} ∈ E die
Dreiecksungleichung
w({u, v}) ≤ w({u, z}) + w({z, v})
gilt.
55/62
F RAGE
Sei G ein ungerichteter, vollständiger und metrischer Graph.
Welcher ist der Zusammenhang zwischen der Länge des
kürzesten Hamilton-Kreises P∗H und das Gewicht eines
minimalen spannenden Baums T∗ ?
Da P∗H ein Hamilton-Kreis ist, ist P∗H ohne die schwerste Kante
e∗ ∈ P∗H ein spannender Baum. Es gilt also
w(P∗H ) − w(e∗ ) ≥ w(T∗ ). Da P∗H genau |V| Kanten enthält und e∗
die schwerste davon ist, folgt w(e∗ ) ≥ w(P∗H )/|V|. Damit
erhalten wir
w(P∗H )
1
∗
∗
∗
∗
∗
w(T ) ≤ w(PH ) − w(e ) ≤ w(PH ) −
≤ w(PH ) 1 −
.
|V|
|V|
Umgekehrt lässt sich in einem vollständigen Graphen aus
einem beliebigen spannenden Baum auch ein Hamilton-Kreis
erzeugen.
56/62
K ONSTRUKTION EINES H AMILTON -K REISES
57/62
E ULER -K REIS
Durch das Verdoppeln der Kanten in dem
zusammenhängenden Graph T∗ entsteht ein ebenfalls
zusammenhängender Graph, in dem jeder Knoten geraden
Grad hat. Folglich besitzt dieser Graph einen Euler-Kreis PE ,
den wir zum Beispiel mit dem Algorithmus von Hierholzer
bestimmen können. Der Euler-Kreis hat dann die Länge
2w(T∗ ), da er jede Kante genau einmal durchläuft.
58/62
V OM E ULER -K REIS ZUM H AMILTON -K REIS
Wähle einen beliebigen Startknoten auf dem Euler-Kreis und
folge diesem so lange, bis ein Knoten zum zweiten Mal besucht
würde. Da der Graph G vollständig ist, ist es möglich
stattdessen direkt zu dem nächsten unbesuchten Knoten auf
dem Euler-Kreis weiterzugehen. Man kürzt also im Vergleich
zu dem Euler-Kreis ab. Dadurch werden Teile des Euler-Kreises
durch eine einzelne neue Kante ersetzt, die auf Grund der
Dreiecksungleichung aber nicht länger als der ersetzte Teil des
Euler-Kreises ein kann. Schließlich erhält man so einen
Hamilton-Kreis PH mit w(PH ) ≤ w(PE ) = 2w(T∗ ).
59/62
L EMMA
Es sei G = (V, E) ein ungerichteter, vollständiger und
metrischer Graph, P∗H ein minimaler Hamilton-Kreis und T∗ ein
minimaler spannender Baum. Dann gilt
|V|
· w(T∗ ) ≤ w(P∗H ) ≤ 2 · w(T∗ ).
|V| − 1
60/62
M INIMALER SPANNENDER B AUM H EURISTIK
61/62
S ATZ
Es sei G = (V, E) ein ungerichteter, vollständiger und
metrischer Graph mit Kantengewichten w(e) > 0 für alle e ∈ E.
Dann bestimmt der Algorithmus einen Hamilton-Kreis,
1
welcher höchstens 2(1 − |V|
) mal so lang wie der kürzeste ist.
62/62
Herunterladen