Folien

Werbung
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
Herunterladen