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