7. Übung – Algorithmen II Dennis Luxen, Johannes Singler Institut für Theoretische Informatik, Prof. Sanders Luxen: 1 KITDennis – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik www.kit.edu Organisatorisches Übungsblätter Die Musterlösung des vierten Übungsblatts steht seit heute online. Das fünfte (große) Übungsblatt erscheint am/bis 23. Dezember Für Fragen bitte das Forum/Email benutzen ⇒ Links auf der Vorlesungswebsite 2 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Inhalt heute 1 2 Wiederholung Eulersche Graphen Definition, Eigenschaften, Algorithmus Gute Heuristiken TSP = gute Heuristiken für anderes Problem? Demo Applet 3 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Eulersche Grapnen 4 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Motivation des Problems von Leonhard Euler 1736 bewiesen Grundstein für Graphentheorie 5 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Motivation des Problems von Leonhard Euler 1736 bewiesen Grundstein für Graphentheorie Motivation: Ist es möglich alle Brücken in Königsberg genau einmal zu passieren um danach am Start zu stehen? 5 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Motivation des Problems von Leonhard Euler 1736 bewiesen Grundstein für Graphentheorie Motivation: Ist es möglich alle Brücken in Königsberg genau einmal zu passieren um danach am Start zu stehen? Alternative Motivation: Zeichnen Sie einen gegebenen Graphen G = (V , E ) in einem einzigen geschlossenen Zug, d.h. ohne den Stift abzusetzen und ohne eine Kante zwei mal zu malen. 5 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Definition und Beobachtungen Betrachte einen beliebigen, ungerichteten (Multi-)Graphen G = (V , E ) mit |E | = m. Eine allgemeine Tour T = (v0 , e1 , v1 , . . . , vm−1 , em , v0 )ist eine (geschlossene) Euler-Tour, falls {e1 , . . . , em } = E. 6 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Definition und Beobachtungen Betrachte einen beliebigen, ungerichteten (Multi-)Graphen G = (V , E ) mit |E | = m. Eine allgemeine Tour T = (v0 , e1 , v1 , . . . , vm−1 , em , v0 )ist eine (geschlossene) Euler-Tour, falls {e1 , . . . , em } = E. Beobachtungen: 1 Die Euler-Tour endet dort wo sie beginnt. Ist also ein Kreis. 6 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Definition und Beobachtungen Betrachte einen beliebigen, ungerichteten (Multi-)Graphen G = (V , E ) mit |E | = m. Eine allgemeine Tour T = (v0 , e1 , v1 , . . . , vm−1 , em , v0 )ist eine (geschlossene) Euler-Tour, falls {e1 , . . . , em } = E. Beobachtungen: 1 Die Euler-Tour endet dort wo sie beginnt. Ist also ein Kreis. 2 Jede Kante des Graphen ist genau einmal enthalten. 6 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Definition und Beobachtungen Betrachte einen beliebigen, ungerichteten (Multi-)Graphen G = (V , E ) mit |E | = m. Eine allgemeine Tour T = (v0 , e1 , v1 , . . . , vm−1 , em , v0 )ist eine (geschlossene) Euler-Tour, falls {e1 , . . . , em } = E. Beobachtungen: 1 Die Euler-Tour endet dort wo sie beginnt. Ist also ein Kreis. 2 Jede Kante des Graphen ist genau einmal enthalten. 3 Knoten des Graphen dürfen beliebig oft enthalten sein. 6 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Definition und Beobachtungen Betrachte einen beliebigen, ungerichteten (Multi-)Graphen G = (V , E ) mit |E | = m. Eine allgemeine Tour T = (v0 , e1 , v1 , . . . , vm−1 , em , v0 )ist eine (geschlossene) Euler-Tour, falls {e1 , . . . , em } = E. Beobachtungen: 1 Die Euler-Tour endet dort wo sie beginnt. Ist also ein Kreis. 2 Jede Kante des Graphen ist genau einmal enthalten. 3 Knoten des Graphen dürfen beliebig oft enthalten sein. Ein Graph mit den obigen Eigenschaften heißt Eulersch. 6 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Satz (Eulersche Graphen) Satz Ein Graph G = (V , E ) ist genau dann Eulersch, wenn er zusammenhängend ist und alle Knoten geraden Grad haben. 7 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Satz (Eulersche Graphen) Satz Ein Graph G = (V , E ) ist genau dann Eulersch, wenn er zusammenhängend ist und alle Knoten geraden Grad haben. Beweis erfolgt in zwei Richtungen. 7 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Satz (Eulersche Graphen) Satz Ein Graph G = (V , E ) ist genau dann Eulersch, wenn er zusammenhängend ist und alle Knoten geraden Grad haben. Beweis erfolgt in zwei Richtungen. Beweis - Teil 1 Erste Richtung offensichtlich. Graph muss zusammenhängend sein. Gerader Grad jedes Knotens muss auch sein: Tour, die an einem Knoten ankommt, muss diesen auch wieder verlassen können. 7 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Fortsetzung Beweis Beweis - Teil 2 Wir definieren allgemein eine Tour T = (v0 , e1 , v1 , . . . , em , vm ) größtmöglicher Länge als „Spaziergang“ in G bei dem keine Kante wiederholt wird. Wir zeigen: (i) v0 = vm Ist v0 6= vm , dann ist Knoten, v0 zu einer ungeraden Zahl von Kanten der Tour inzident. 8 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Fortsetzung Beweis Beweis - Teil 2 Wir definieren allgemein eine Tour T = (v0 , e1 , v1 , . . . , em , vm ) größtmöglicher Länge als „Spaziergang“ in G bei dem keine Kante wiederholt wird. Wir zeigen: (i) v0 = vm Ist v0 6= vm , dann ist Knoten, v0 zu einer ungeraden Zahl von Kanten der Tour inzident. Weil aber degg (v0 ) gerade ist, gibt es eine Kante e ∈ E, die zu v0 inzident ist und nicht in T enthalten. 8 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Fortsetzung Beweis Beweis - Teil 2 Wir definieren allgemein eine Tour T = (v0 , e1 , v1 , . . . , em , vm ) größtmöglicher Länge als „Spaziergang“ in G bei dem keine Kante wiederholt wird. Wir zeigen: (i) v0 = vm Ist v0 6= vm , dann ist Knoten, v0 zu einer ungeraden Zahl von Kanten der Tour inzident. Weil aber degg (v0 ) gerade ist, gibt es eine Kante e ∈ E, die zu v0 inzident ist und nicht in T enthalten. T kann also um diese Kante verlängert werden. 8 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Fortsetzung Beweis Beweis - Teil 2 Wir definieren allgemein eine Tour T = (v0 , e1 , v1 , . . . , em , vm ) größtmöglicher Länge als „Spaziergang“ in G bei dem keine Kante wiederholt wird. Wir zeigen: (i) v0 = vm Ist v0 6= vm , dann ist Knoten, v0 zu einer ungeraden Zahl von Kanten der Tour inzident. Weil aber degg (v0 ) gerade ist, gibt es eine Kante e ∈ E, die zu v0 inzident ist und nicht in T enthalten. T kann also um diese Kante verlängert werden.Widerspruch. 8 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Fortsetzung Beweis Beweis - Teil 2 Wir definieren allgemein eine Tour T = (v0 , e1 , v1 , . . . , em , vm ) größtmöglicher Länge als „Spaziergang“ in G bei dem keine Kante wiederholt wird. Wir zeigen: (i) v0 = vm Ist v0 6= vm , dann ist Knoten, v0 zu einer ungeraden Zahl von Kanten der Tour inzident. Weil aber degg (v0 ) gerade ist, gibt es eine Kante e ∈ E, die zu v0 inzident ist und nicht in T enthalten. T kann also um diese Kante verlängert werden.Widerspruch. (ii) {ei : i = 1, 2, . . . , m } = E 8 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Fortsetzung Beweis Beweis - Teil 2 (ii) {ei : i = 1, 2, . . . , m } = E Sei V (T ) Menge derjenigen Knoten aus der Tour. Angenommen V (T ) 6= V , dann gibt es (weil G zusammenhängend) die Kante e = (vk , v 0 ) ∈ E mit vk ∈ V (T ) und v 0 6∈ V (T ). Die Tour kann nun verlängert werden als: (v0 , e, vk , ek +1 , vk +1 , . . . , vm−1 , em , v0 , e1 , v1 , . . . , ek , vk ) Widerspruch, diese Tour hat Länge m + 1. ⇒ Jeder Knoten kommt mindestens ein Mal in Tour vor! Sei nun V (T ) = V und E (T ) 6= E und e ∈ E \E (T ), e = vk , vl . Analog zum vorherigen Fall führt folgende Tour zum Widerspruch: vk , ek +1 , vk +1 , . . . , vm−1 , em , v0 , e1 , v1 , . . . , ek , vk , e, vl ) Es folgt der Satz. 9 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Algorithmus Idee: Erweitere solange eine Tour, bis sie Eulersch wird. Überprüfe, ob jeder Knoten geraden Grad hat. Wähle v0 ∈ V beliebig, setze T0 = (v0 ). Wiederhole für i = 0, 1, 2, . . . , m, dann ist Tm die gesuchte Euler-Tour. Sei Ti (v0 , e1 , v1 , . . . , ei , vi ) die bisher konstruierte Tour. Wähle eine Kante ei +1 ∈ E \{e1 , ldots, ei }, die Knoten vi enthält so, dass die Graphen (V , E \{e1 , . . . , ei }) und (V , E \{e1 , . . . , ei , ei +1 }) gleich viele Komponenten haben. 10 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Beweis der Korrektheit Siehe nächstes Übungsblatt! 11 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Demo: Applet http://www.cut-the-knot.org/Curriculum/Combinatorics/ FleuryAlgorithm.shtml 12 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Grundlegende TSP Heuristiken 13 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik k-Optimalität Definition Eine Tour T heisst k -optimal (kurz: k -opt), falls es unmöglich ist, eine kürzere Tour T 0 durch Tauschen von k vielen Kanten in der Tour gegen k beliebige andere Kanten, die nicht zur Tour gehören, zu erhalten. 14 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik k-Optimalität Definition Eine Tour T heisst k -optimal (kurz: k -opt), falls es unmöglich ist, eine kürzere Tour T 0 durch Tauschen von k vielen Kanten in der Tour gegen k beliebige andere Kanten, die nicht zur Tour gehören, zu erhalten. Optimum offensichtlich n-optimal 14 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik k-Optimalität Definition Eine Tour T heisst k -optimal (kurz: k -opt), falls es unmöglich ist, eine kürzere Tour T 0 durch Tauschen von k vielen Kanten in der Tour gegen k beliebige andere Kanten, die nicht zur Tour gehören, zu erhalten. Optimum offensichtlich n-optimal Reines Verbesserungsverfahren, initiale Lösung notwendig Berechnung braucht für festes k Laufzeit O (nk ) 14 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik k-Optimalität Definition Eine Tour T heisst k -optimal (kurz: k -opt), falls es unmöglich ist, eine kürzere Tour T 0 durch Tauschen von k vielen Kanten in der Tour gegen k beliebige andere Kanten, die nicht zur Tour gehören, zu erhalten. Optimum offensichtlich n-optimal Reines Verbesserungsverfahren, initiale Lösung notwendig Berechnung braucht für festes k Laufzeit O (nk ) Für große k impraktikabel, meist ≤ 5 14 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Beispielskizze 15 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Beispielskizze 1 2-Opt Lösungen idR. ca. 15% schlechter als das Optimum 15 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Beispielskizze 1 2 2-Opt Lösungen idR. ca. 15% schlechter als das Optimum k -Optimalität ist Grundlage für viele erfolgreiche Heuristiken 15 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Demo: Applet http://www-e.uni-magdeburg.de/mertens/TSP/node3.html 16 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Fine. 17 Dennis Luxen: 7. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik