Euler und Hamiltonkreise 1. 2. Königsberger Brücken Eulerwege und Kreise Definition, Algorithmus mit Tiefensuche 3. Hamiltonwege und Kreise Definition 4. Problem des Handlungsreisenden Enumeration und Heuristiken 2. Eulerwege und Kreise Definition: Sei G = (V,E) ein Graph. Ein Weg heißt Eulerweg, wenn jede Kante aus E genau einmal vorkommt. Falls Anfangsknoten=Endknote ist so handelt es sich um einen Eulerkreis. Satz: Ein (ungerichteter zusammenhängender) Graph enthält genau dann einen Eulerweg, wenn zwei oder keiner seiner Knoten von ungeradem Grad ist; hat kein Knoten ungeraden Grad, handelt es sich bei dem Eulerweg um einen Eulerkreis. Eulerkreis durch Tiefensuche Strategie: • Beginne mit beliebigem Knoten K. • Suche Pfad durch G von K nach K und entferne begangene Kanten, bis K wieder erreicht ist. • Falls entlang des Pfads Knoten mit Grad>0 existieren, rekursiver Aufruf. Algorithmus GetEulerCircle(G,v) Eingabe: Graph G und Startknoten v Rückgabe: Eine Liste K mit Referenzen auf die Knotenfolge des Eulerkreises Erzeuge leere Liste K K.insertLast(position(v)) // position() zeigt auf den Knoten im Graphen startVertex ← v do edges ← incidentEdges(v) // Iterator mit inzidenten Kanten currentEdge ← edges.nextObject() v ← G.opposite(v, currentEdge) // nächsten Knoten suchen G.removeEdge(currentEdge) K.insertLast(ref(v)) while v≠startVertex pos ← K.first() while pos ≠ K.last() do v ← K.node(pos.element()) // node() sei eine Methode, die // den Knoten in G zurückliefert if degree(v) > 0 then K.insertListAfter(pos,GetEulerCircle(G,v)) // Methode zum Einfügen // einer kompletten Liste pos ← K.after(pos) return K 3. Hamiltonwege und Kreise Namensgeber des Problems ist der irische Astronom und Mathematiker Sir William Rowan Hamilton, der 1857 das Spiel "The Icosian Game" erfand (und später verbesserte zum "Traveller's Dodecahedron or A Voyage Round The World"). Ziel ist es, eine Reiseroute entlang der Kanten des Dodekaeders zu finden, die jede Stadt genau einmal besucht und dort aufhört, wo sie beginnt. Hamiltonwege und Kreise Definition: Sei G = (V,E) ein schlichter ungerichteter Graph. Ein Weg heißt Hamiltonweg wenn jeder Knoten genau einmal vorkommt. Ein Kreis heißt Hamiltonkreis wenn jeder Knoten genau einmal vorkommt und der letzte Knoten gleich der erste ist. Hinreichende Kriterien: jeder vollständige Graph mit n>2 ist hamiltonisch jeder Knoten besitzt mindestens Minimalgrad n/2 die Summe des Grades (oder Valenz) zweier nicht-adjazenter Knoten mindestens n 4. Problem des Handlungsreisenden (Traveling Salesman Problem TSP) TSP ist ein Anwendungsbeispiel für Hamiltonkreise. Es geht darum in einem gewichteten Graphen den Hamiltonkreis mit dem geringsten Gewicht (Kosten) zu finden. Zum Beispiel die kürzeste Reiseroute eines Handlungsreisenden durch eine bestimmte Anzahl von Städten (Knoten). Deshalb werden beim TSP normalerweise vollständige Graphen behandelt. Soll trotzdem einmal eine Kante nicht „befahrbar“ sein, so wird ihr Gewicht auf „unendlich“ gesetzt. Lösung durch Enumeration Alle Möglichen Permutationen ausrechnen und die günstigste nehmen. Berechnungsaufwand (n-1)!, also in Zeit O(2^n). Schon für Graphen mit 15 oder mehr Knoten nicht mehr durchführbar. ABCDA 13+27+15+ 9 = 64 ABDCA 13+11+15+ 5 = 44 ACBDA 5+27+11+ 9 = 52 ACDBA ADBCA ADCBA 5+15+11+13 = 44 9+11+27+ 5 = 52 9+15+27+13 = 64 Dieses Verfahren wird auch „erschöpfendes Suchen“ genannt. Heuristiken Nearest-Neighbor-Heuristik (nächster Nachbar) - entspricht intuitivem Vorgehen Von einer Stadt ausgehend wählt man jeweils die nächstgelegene als folgenden Ort aus (mit minimalen Kosten). Dieses wird sukzessive fortgesetzt, bis alle Städte bereist wurden und der Handlungsreisende zum Ausgangsort zurückgekehrt ist. Dies ist im allgemeinen jedoch nicht die beste Lösung, da die Distanz zwischen der Ausgangsstadt und der letzten besuchten Stadt bis zum Schluss nicht berücksichtigt wird. Heuristiken Einfüge-Heuristiken: Die einfachsten Varianten davon sind die Nearest-InsertionHeuristik (nächste Einfügung) und die Farthest-InsertionHeuristik (entfernteste). Gegeben seien (wenige) einander benachbarte Städte des TSP, für die sich schnell eine optimale Rundreise ermitteln lässt. Es wird schrittweise überprüft, welche noch nicht besuchte Stadt am nächsten (oder am entferntesten) zu einer der Verbindungslinien der bisherigen Rundreise liegt. Ist diese Stadt gefunden, so wird sie zwischen den ihr am nächsten liegenden Städten in die Tour eingebaut. Das Verfahren wird solange fortgesetzt, bis die Rundreise alle Städte umfasst. Heuristiken Minimum-Spanning-Tree-Heuristik (MST): 1. berechnen eines minimal aufspannenden Baumes 2. Verdopplung der Baumkanten 3. Finden einer Eulertour in dem entstandenen eulerschen Graphen und Abkürzen durch direkte Kanten, falls sonst ein Knoten doppelt besucht würde Quellenangabe EAD Folien von Prof. Dr. Thomas Strothotte, Vorlesung Nr. 42, 17. Juni 2004 Wikipedia.de (Eulerkreis, Hamiltonkreis, Problem_des_Handlungsreisenden) www.zum.de/Faecher/Inf/Saar/material/grenzen/grenzen2.htm http://my.2000i.de/documents/proseminar-folien.pdf www.infosun.fmi.uni-passau.de/br/lehrstuhl/Kurse/Proseminar_ss01/Krompass.pdf