5. Graphen und Algorithmen

Werbung
36
5.
Graphen und Algorithmen
5.1
Einführung
Das klassische Problem der Graphentheorie ist
Das Königsberger Brücken Problem
Die Abbildung zeigt die Stadt Königsberg im 18. Jahrhundert. Die beiden Arme des Flusses
Pregel umfliessen die Insel, den Kneiphof. Es gibt insgesamt 7 Brücken über den Fluss.
Ist es möglich, von der Insel A aus einen Rundgang durch die Stadt zu unternehmen,
währenddessen man jede Brücke genau einmal überquert und am Schluss zum
Ausgangspunkt zurückkehrt?
Leonhard Euler (1707 Basel – 1783 St.Petersburg) beantwortete 1736 diese Frage mit einer
Methode, welche die moderne Graphentheorie begründete.
UNIZH MA 440 Geom2 J.S.-D.
37
Optimierungsprobleme auf Graphen
•
Gütertransport von Produzenten zu Verbrauchern soll kostenminimal werden
•
Kostengünstiges Netz von Versorgungsleitungen und kostenminimaler oder grösster
Durchfluss durch das Netz
•
Kürzeste Wege in Verkehrsnetzen
•
Tourenplanung: schnellst mögliche Belieferung von Kunden
•
Terminplanung von Projekten
Oft lassen sich sehr grosse Probleme (z.B. Verkehrsnetze mit Hunderten von Strassen) mit
graphentheoretischen Methoden mit relativ geringem, d.h. polynomialem Rechenaufwand
lösen.
Aber: "schwere" Probleme, "exponentieller Rechenaufwand"
Viele Probleme sind in populärer Form sehr bekannt und wirken eher wie eine
Knobelaufgabe. Ihre Anwendungsmöglichkeiten sind heute mit den schnellen Computern
aber enorm.
Beispiel:
Brunnenproblem
Vor langer Zeit in einem fernen Königreich standen drei Häuser in einem Tal und es gab in
der Nähe drei Brunnen und das Wasser war rein und klar. Es war ein friedliches Tal, solange
bis Zwietracht dort einkehrte. Die drei Höfe fielen in Feindschaft und der Streit wollte kein
Ende nehmen. An Versöhnung war nicht zu denken. Die Menschen in den drei Höfen
bestanden darauf, drei direkte Pfade zu den drei Brunnen zu haben. Die Pfade sollten aber
die der Nachbarn nicht kreuzen. Wenn es von jedem Hof aus diese Wege gäbe, wären alle
zufrieden und im Tal könnte Frieden einkehren. Doch bis heute herrscht dort Streit.
Kann es jemals Frieden geben?
Mit zwei Brunnen ist das Problem einfach! Aber mit drei Brunnen ist es hoffnungslos!
Skizzieren Sie das Problem mit 2 und 3 Brunnen.
UNIZH MA 440 Geom2 J.S.-D.
38
Im Kern handelt dieses Problem vom Zeichnen von Figuren in der Ebene ohne mit dem Stift
abzusetzen. Sie kennen wohl aus ihrer Kindheit das Zeichnen der Laterne (auch Haus des
Nikolaus genannt)
Ein praktisches Beispiel dazu ist das Postbotenproblem.: Ein Briefträger muss in seinem
Dorf allen Leuten die Post verteilen. Dazu muss er alle Strassen mindestens einmal
durchlaufen. Welcher Weg ist der kürzeste? Kann man diesen Weg in vertretbarer zeit
berechnen?
Ein weiteres Problem ist die Routenplanung., zum Beispiel im GPS.
UNIZH MA 440 Geom2 J.S.-D.
39
Ein anderes Beispiel handelt vom Design von Computerchips: Stehen in einem Schaltkreis
die Positionen der einzelnen Komponenten auf der Platine schon fest, können dann die
Verbindungen auf der Oberfläche ohne Kreuzungen verlaufen? Oder eine andere Frage:
Welche Position der Komponenten und der Verdrahtung auf der Platine beansprucht den
geringsten Platz?
Solche angewandten Probleme gehören zusammen mit dem Design effizienter Algorithmen
allesamt zur Graphentheorie.
UNIZH MA 440 Geom2 J.S.-D.
40
5.2
Grundbegriffe
Einfachste Struktur auf einer Menge wird erzeugt durch eine binäre Relation.
Zwei Elemente stehen in einer vorgegebenen Beziehung oder eben nicht.
Das sind genau die Graphen. Sie sind die fundamentale Datenstruktur der diskreten
Mathematik.
Definition
Ein Graph G(V, E) besteht aus einer endlichen Menge V und einer Menge E ! V " V ,
Die Elemente von V heissen Ecken (Knoten, vertices) und die Elemente von E heissen
Kanten (edges).
Beispiele
1.
V = {1,2,3,4,5}, E = {{1,2},{1,4},{1,5},{2,3},{2,4},{4,5}}
1
2
3
4
2.
5
Graph zum Königsberger Brückenproblem
Definitionen
Ein Graph kann parallele Kanten (Mehrfachkanten) haben.
Eine Ecke kann mit sich selbst verbunden sein, eine solche Kante heisst Schlinge.
Eine Ecke, von der aus keine Kanten gehen, heisst isolierte Ecke.
Isolierte Ecke
Parallele Kanten
Schlinge
Ein Graph ohne Mehrfachkanten und ohne Schlingen heisst einfach.
UNIZH MA 440 Geom2 J.S.-D.
41
Ein Graph kann zusammenhängend oder nicht zusammenhängend sein (dann besteht
er aus mehreren Teilen.
nicht zusammenhängender Graph
zusammenhängender Graph
Zwei Ecken heissen benachbart (adjazent), wenn sie durch eine Kante miteinander
verbunden sind.
Zwei Kanten heissen inzident, wenn sie eine Ecke gemeinsam haben.
Der Grad einer Ecke A ist die Anzahl Kanten, die von dieser Ecke ausgehen; er wird
mit d(A) (degree) bezeichnet. Ist d(A)=0, so ist A eine isolierte Ecke.
Die Ordnung n eines Graphen ist |V| = Anzahl Ecken.
Die Grösse des Graphen ist |E| = Anzahl Kanten.
Unter einem vollständigen Graphen Kn mit n Ecken versteht man einen Graphen, bei
dem jede Ecke mit jeder durch eine Kante verbunden ist.
Vollständige Graphen
Wie viele Kanten hat ein vollständiger Graph mit n Ecken?
UNIZH MA 440 Geom2 J.S.-D.
42
5.3
Über Grade von Ecken
Beispiel: Tennisturniere
Bei einem Tennisturnier spielt jeder gegen jeden einmal.
Nach einer gewissen Zeit sind folgenden Spiele gespielt:
Anna
Clemens
Barbara
Dana
Emil
Der Graph ist einfach, denn jeder spielt gegen jeden genau einmal und keiner spielt gegen
sich selbst.
Beim jetzigen Spielstand zählen wir nur die gespielten Spiele und nicht die Ergebnisse.
Anna
Barbara
Clemens
Dana
Emil
3
2
1
2
2
Es gibt Leute, welche die gleiche Anzahl Spiele gespielt haben. Ist das bei jedem Turnier so?
Welches sind die möglichen Spielstände bei n Personen?
n=2
0
0
1
1
0
0
1
1
n=3
0
0
2
1
1
2
2
2
Für n = 2, 3 gibt es jedes Mal mindestens 2 Personen mit der gleichen Anzahl Spiele; also
mindestens 2 Ecken mit demselben Grad.
UNIZH MA 440 Geom2 J.S.-D.
43
Das gilt sicher nicht, wenn der Graph nicht einfach ist, wie das folgende Beispiel zeigt.
1
2
2
3
3
Satz 1:
1
In jedem einfachen Graph gibt es mindestens 2 Ecken mit demselben Grad.
Begründung:
n = E ! 0 " Eckgrad " n # 1
i) Eine Ecke a1 habe den Grad n – 1
!
Dann ist a1 mit allen anderen Ecken verbunden
! Keine Ecke hat den Grad 0.
Auf die n – 1 verbleibenden Ecken müssen die Eckgrade 1, 2, ..., n – 1 verteilt werden.
Also muss eine Zahl zweimal vorkommen.
ii) Keine Ecke hat den Grad n – 1 ! 0 ! d(ai ) ! n " 2, i = 1, 2,…, n
Also müssen die Zahlen 0, 1, 2, ..., n – 2 auf n Ecken verteilt werden.
Damit muss eine Zahl zweimal vorkommen.
Satz 2:
In jedem Graph ist die Summe der Grade der Ecken gleich der doppelten Anzahl
Kanten.
" d(ai ) = 2 E
ai !V
Begründung:
Jede Kante verbindet 2 Ecken.
Gibt es q Kanten, so hat es 2q „Enden“. Also ist die Summe der Ekckgrade gleich 2q.
Bemerkungen
1. Dieser Satz gilt auch für nicht einfache Graphen, also Graphen mit Schlingen und
Mehrfachkanten.
2.
Satz 2 ist auch als "handshaking lemma" bekannt: In einer Gruppe von Menschen
begrüssen sich einige per Handschlag andere nicht. Notiert man bei jedem , wie viele
Hände er geschüttelt hat und addiert die Zahlen, so erhält man stets eine gerade Zahl.
Aus dem Satz 2 folgt sofort der nächste Satz.
Satz 3:
In jedem Graph ist die Anzahl der Ecken mit ungeradem Grad gerade.
UNIZH MA 440 Geom2 J.S.-D.
44
Begründung:
" d(ai ) =!
ai !V
n
" d(a ) = "
n Ecken i =1
i
"
d(ai ) +
Ecken mit
ungeradem
Grad
"$#$%
ungerade
d(a i ) = 2n (also gerade)
Ecken mit
geradem
Grad
"$#$%
#
gerade
Ist die Summe von ungeraden Zahlen gerade, so ist die Anzahl Summanden gerade.
Beispiele
1. Sind die beiden Graphen isomorph?
Definition: Zwei Graphen heissen isomorph, wenn der eine durch kontinuierliche
Verformung aus dem anderen hervorgeht. Mathematisch heisst dies:
Zwei Graphen G(V, E) und G '(V ', E ') heissen isomorph, wenn es eine bijektive
Abbildung f :V ! V ' gibt, so dass gilt
{x, y} !E " { f (x), f (y)} !E '
1
2
a
4
d
b
3
zwei isomorphe Graphen
Beschreiben Sie den Isomorphismus.
2. Skizzieren Sie einen Graphen, dessen Ecken die Grade 1, 2, 3, 4 haben.
Gibt es einen einfachen solchen Graph?
UNIZH MA 440 Geom2 J.S.-D.
c
45
3. Wie viele Kanten besitzt ein Graph mit n Ecken, wenn alle Ecken denselben Grad g haben?
Weitere Definitionen
Eine Folge aufeinander folgender Kanten (e1 , e2 ,…, en ) mit ei = (vi !1 , vi ) ist ein Kantenzug.
Die Ecken vi (i = 0, ..., n) müssen nicht notwendiger weise verschieden sein.
Ein Kantenzug heisst geschlossen, wenn v0 = vn.
Ein Weg oder eine Kette ist ein Kantenzug, der jede Ecke höchstens einmal enthält.
Ein Kreis ist ein geschlossener Weg v0 = vn.
UNIZH MA 440 Geom2 J.S.-D.
46
5.4
Bäume
Die Theorie der Bäume stammt ursprünglich aus der Chemie, entwickelt aus dem Studium
der Kohlenwasserstoffverbindungen und anderer Isomere.
Bäume sind die fundamentalen Bausteine der Graphen. Sie ergeben auch die geeignete
Datenstruktur für viele diskrete Probleme, vor allem für Such- und Sortierprobleme.
Definition:
Ein Graph heisst ein Baum, wenn er zusammenhängend ist und keine Kreise enthält. Ein
Graph, dessen Komponenten Bäume sind, heisst ein Wald.
Kein Baum
Baum
Baum
Wald
Bäume mit höchstens 5 Ecken:
Definition:
G(V, E) sei ein zusammenhängender Graph. Ein Untergraph T von G heisst ein
aufspannender Baum (spanning tree), wenn T ein Baum der Ordnung n = |V| ist.
UNIZH MA 440 Geom2 J.S.-D.
47
Jeder zusammenhängende Graph besitzt aufspannende Bäume: Entweder ist G schon ein
Baum oder G besitzt einen Kreis. Entfernt man von diesem Kreis eine Kante, so ist G immer
noch zusammenhängend. Entweder haben wir jetzt schon einen aufspannenden Baum oder
wir müssen noch eine Kante eines Kreises entfernen. Auf alle Fälle sind wir in endlich
vielen Schritten fertig.
Satz:
Folgende Aussagen sind äquivalent:
(1)
G(V, E) ein Baum.
(2)
Je zwei Ecken in G sind durch genau einen Weg verbunden.
(3)
G ist zusammenhängend und es gilt: |E| = |V| - 1.
in Worten: Ein Baum hat eine Ecke mehr als Kanten.
Weiter gilt für einen Baum T der Ordnung n ≥ 2 und der Gradfolge der Ecken (d1, d2, ..., dn):
Satz:
In einem Baum ist die Summe der Grade der Ecken gleich der doppelten
Kantenzahl.
n
!d
k =1
k
= 2(n " 1) .
Frage: Wie viele aufspannende Bäume besitzt ein Graph? – Schwierigeres Problem
Satz von Cayley:
Der vollständige Graph Kn auf {1, 2, ..., n} mit n ≥ 2 besitzt
n n! 2 aufspannende Bäume.
Frage: Wie findet man in einem Graphen einen aufspannenden Baum oder einen
aufspannenden Wald?
Wie erkennt man, ob ein Graph zusammenhängend ist?
UNIZH MA 440 Geom2 J.S.-D.
48
BREADTH-FIRST-SEARCH (Breitensuche)
1.
Wähle beliebige Ecke und gib ihr die Nummer 1, aktuelle Ecke
2.
Aktuelle Ecke habe Nummer i und die Nummern 1, ..., r seien vergeben;
Falls r = n: STOP
Sonst: Gib den nicht nummerierten Nachbarn von i die Nummern r+1, r+2, ..;.
und füge Kanten ein: i(r + 1), i(r + 2),...
Falls i+1 nicht existiert: STOP
Sonst: Gehe zur Ecke i+1, das ist die neue aktuelle Ecke, und iteriere 2.
1. Beispiel
Suchen Sie einen aufspannenden Baum mit dem Breath-First-Search-Algorithmus
2. Beispiel
G ist durch folgende Nachbarschaftslisten gegeben. Wenden Sie den BREADTH-FIRSTSEARCH Algorithmus an und beantworten Sie damit die Frage, ob G zusammenhängend
ist.
a
b
d
h
b
a
c
d
e
c
b
d
g
UNIZH MA 440 Geom2 J.S.-D.
d
a
b
c
e
b
f
g
g
c
f
h
h
a
g
49
5.5
Minimal aufspannende Bäume (Minimal Spanning Tree)
Gegeben sei der Plan eines Kommunikationsnetzes mit Kosten für den Leitungsbau.
Die Schaltelemente sind die Ecken, die Verbindungen zwischen den Schaltelementen die
Kanten. Die Zahlen über den Kanten sind die Kosten. Gesucht ist ein Schaltplan, sodass
jedes Element mit jedem kommunizieren kann und die Kosten für den Leitungsbau minimal
werden.
Modellierung durch einen gewichteten Graphen. Gegeben ist ein zusammenhängender
Graph G(V, E) und eine Gewichtfunktion w : E ! IR .
Gesucht ist ein aufspannender Baum T mit minimalem Gewicht
w(T ) =
"
w(e) .
e!E (T )
1. Mit Breath-First-Search einen aufspannenden Baum konstruieren. Dieser muss noch nicht
optimal sein.
Beispiel:
2. Mit der Greedy Strategy einen minimal aufspannenden Baum konstruieren.
Greedy-Strategy (gierige Strategie)
Arbeite nach folgender Maxime:
Erledige immer als nächstes den noch nicht bearbeiteten fettesten (optimalen)
Teilbrocken.
Hier betrachten wir 2 Algorithmen, die minimal aufspannende Bäume mit einer GreedyStrategy konstruieren.
1. Kruskal-Algorithmus
Beim Kruskal-Algorithmus wird immer die Kante mit minimalem Gewicht gewählt, aber so,
dass keine Kreise entstehen.
Beispiel:
UNIZH MA 440 Geom2 J.S.-D.
50
2. PRIM-Algorithmus
Sei G(V, E) ein gewichteter zusammenhängender Graph mit n Ecken. (Jeder minimal
aufspannende Baum hat also n-1 Kanten.)
(1) Wähle eine Kante minimalen Gewichts aus (samt den dadurch gegebenen Ecken).
Diese Kanten stellen samt ihren Ecken den Anfangsbaum T dar, der im folgenden
systematisch zu einem minimal aufspannenden Baum ausgebaut wird.
(2) Solange der aufzubauende Baum T weniger als n-1 Kanten hat, führe folgendes aus:
Suche unter denjenigen Kanten mit einer Ecke in T und einer Ecke ausserhalb T eine
Kante mit minimalem Gewicht aus, sodass kein Kreis entsteht und füge sie zu T dazu
(samt des dadurch bestimmten Knotens).
Der mit Hilfe von Prims Algorithmus konstruierte Teilgraph T ist ein minimal
aufspannender Baum des ursprünglichen Graphen G.
Bemerkungen zum Beweis: Da der Graph endlich ist und bei jedem Teilschritt eine neue
Kante dazu kommt, bricht der Algorithmus nach endlich vielen Schritten ab.
Nach Abbruch des Algorithmus sind n-1 Kanten konstruiert, also alle n Ecken benützt.
Mit Induktion könnte man jetzt zeigen, dass der konstruierte aufspannende Baum T minimal
ist. Die Konstruktion ist nicht eindeutig.
Beispiel:
2. Beispiel: Suchen Sie mit beiden Algorithmen minimal aufspannende Bäume.
Kruskal-Algorithmus
UNIZH MA 440 Geom2 J.S.-D.
Prim-Algorithmus
51
5.6
Kürzeste Wege in Graphen
Optimierungsprobleme auf gewichteten Graphen:
•
Strassenplan: in möglichst kurzer Zeit oder mit möglichst wenig Kilometern von A
nach B gelangen
•
Verkehrsnetz: Schienennetz, Gewichtung der Kanten können die Fahrkosten, die
Reisezeit, die Entfernung sein. Die Bahnverbindung von A nach B soll möglichst
billig, möglichst kurz sein.
•
Kommunikationsnetz: Übertragungskosten oder Übertragungszeit als Gewicht der
Kanten. Gesucht ist der kostengünstigste Weg eines Datenpakets von einem Knoten
zu einem anderen.
Meistens wird vorausgesetzt, dass der Ausgangsknoten den Graphen vollständig kennt. Im
Schienenverkehr oder im Strassenverkehr kennt man gewöhnlich den ganzen Graphen. Im
Internet ist das nicht immer der Fall: Knotenausfall Überlastung von Kanten.
Kürzeste Wege Problem:
•
Der kürzeste Weg zwischen zwei Knoten.
•
Die kürzesten Wege zwischen einem Knoten und zu allen anderen Knoten.
•
Der kürzeste Weg in einem Graphen, bei dem alle Knoten (ev. genau einmal) besucht
werden.
1
A
2
1
1
B
2
3
2
4
1
Gegeben ist ein zusammenhängender Graph G und eine Gewichtsfunktion
w : E ! IR + = {x " 0} .
Sei u !V gegeben. Für einen Weg P = P(u,v) von u nach v ist die gewichtete Länge von P:
l (P) = " w (e) .
e!E (P )
Gesucht ist ein kürzester Weg von u nach v, d.h. l(P) soll minimal werden.
Die Länge eines kürzesten Weges bezeichnet man als den Abstand d(u,v).
UNIZH MA 440 Geom2 J.S.-D.
52
Edsger Wybe Dijkstra, 1930 - 2002,
holländischer Mathematiker,
Algorithmus 1959
Der berühmte Algorithmus von Dijkstra konstruiert, ausgehend von einer fest gewählten
Ecke u, einen aufspannenden Baum, dessen Weg von u nach v stets ein kürzester ist für alle
Ecken v des Graphen.
Wir erläutern den Algorithmus hier an einem Beispiel.
Beispiel zum Dijkstra Algorithmus
Start a
3
1
g
1
3
b
1
h
2
2
f
2
4
c
e
3
2
d
1. Startknoten grün
2. alle Nachbarknoten blau, Abstand vom Startknoten anschreiben
3. Wähle als neuen Startknoten denjenigen mir kürzestem Abstand zum Start: grün
(samt Kante zum vorherigen Startknoten)
4. zurück zu 1. (verbotene Kanten: rot)
Knoten i
Distanz d(a,i)
a
0
UNIZH MA 440 Geom2 J.S.-D.
b
c
d
e
f
g
h
53
Bemerkungen
•
Der Dijkstra Algorithmus konstruiert stets eine kürzeste Verlängerung des
Teilbaums; er ist also ein Greedy Algorithmus.
•
Es ist kein Algorithmus bekannt, der asymptotisch schneller ist als der Dijkstra
Algorithmus.
•
Sollen die kürzesten Wege für alle Eckenpaare uv bestimmt werden, so kann man
den Dijkstra Algorithmus für jede Ecke u als Quelle anwenden.
•
Analog für gerichtete Graphen.
•
Die Gewichtung der Knoten darf nicht negativ sein. Sonst kann man den BellmannFord Algorithmus anwenden.
Noch ein Beispiel: Vom Knoten a aus alle kürzesten Wege berechnen.
w
3
a
9
8
5
x
2
6
4
1
y
7
b
5
z
Knoten i
Abstand
d(a,i)
a
x
UNIZH MA 440 Geom2 J.S.-D.
y
z
w
b
54
5.7
Eulersche Graphen
Beim Königsberger Brückenproblem sucht man einen speziellen Kantenzug.
Dieser sollte die folgenden Eigenschaften besitzen.
1. Der Kantenzug enthält keine Kante doppelt.
2. Der Kantenzug enthält alle Kanten des Graphen.
3. Anfang und Ende des Kantenzugs stimmen überein.
Definitionen
Eine Tour ist ein Kantenzug nur mit der 1. Eigenschaft; er enthält also keine Kante doppelt.
Eine Eulertour ist ein Kantenzug mit allen 3 obigen Eigenschaften. Jede Kante des Graphen
wird also genau einmal durchlaufen und der Kantenzug ist geschlossen.
Ein Graph mit einer Eulertour heisst Eulerscher Graph.
Gibt es beim Königsberger Brückenproblem eine Eulertour?
Beispiel: Suchen sie in den untenstehenden Graphen geschlossenen Touren und Eulertouren.
Welche Grade der Ecken kommen in den Graphen vor?
Gibt es Touren mit der Eigenschaft 2, also Kantenzüge, die jede Kante genau einmal
enthalten?
Ergänzen Sie den letzten Graph, so dass eine Eulertour möglich ist.
UNIZH MA 440 Geom2 J.S.-D.
55
Satz
Es sei G(V, E) ein zusammenhängender Graph mit k Knoten ungeraden Grades.
Dann gilt folgendes.
(1) Ist k = 0, so gibt es auf G eine Eulertour.
(2) Ist k = 2, so gibt es auf G eine Tour, die alle Kanten des Graphen enthält.
Man kann den Graph in einem Zug zeichnen, ohne eine Kante doppelt
zu zeichnen.
(3) Ist k > 2, so gibt es auf G keine Tour, die alle Kanten enthält.
zum Beweis:
(1) Wähle eine Ecke A, beginne einen Pfad und markiere jede durchlaufene Kante.
Jede so erreichte Ecke kann wieder verlassen werden bis sich der Kantenzug schliesst,
da die Gradzahl jeder Ecke gerade ist.
Hat es noch unmarkierte Kanten, so beginnt eine in einer bereits traversierten Ecke B.
Von B aus kann wieder ein geschlossener Kantenzug konstruiert werden, der dann in
den zuerst konstruierten eingebaut werden kann.
Konstruiere nun so weiter, bis alle Kanten aufgebraucht sind.
(2) Verbinde die beiden Ecken ungeraden Grades
durch eine zusätzliche Kante.
Konstruiere jetzt mit (1) eine Eulertour.
Lösche nun die eingefügte Kante.
(3) klar wegen (1) und (2).
Was passiert, wenn man jede Kante zweimal durchläuft?.
UNIZH MA 440 Geom2 J.S.-D.
56
Satz: In jedem zusammenhängenden Graph gibt es einen Kantenzug, der jede Kante genau
zweimal durchläuft.
Beweis:
Man zeichnet einfach zu jeder Kante eine zweite parallele Kante. So erhält jede Ecke einen
geraden Grad. Wegen des vorherigen Satzes gibt es eine Eulertour. Nun verschmelzt man die
neuen Kanten wieder mit den ursprünglichen und erhält so einen Kantenzug, der jede Kante
genau zweimal durchläuft.
Beispiel: Bildergalerie
Meistens sind die Bilder längs Gängen aufgehängt Auf einem Rundgang durch die
Ausstellung möchte man alle Bilder sehen, ohne aber zweimal an denselben Bildern
vorbeizukommen. Am Ende möchte man wieder beim Eingang ankommen, der zugleich
Ausgang ist. Ist ein solcher Rundgang überhaupt möglich?
Ausstellungsraum
UNIZH MA 440 Geom2 J.S.-D.
57
5.8
Hamiltonsche Graphen
Europareise
Eine Gruppe Jugendlicher möchte von Berlin aus mit einem Eurailticket alle eingezeichneten
Städte genau einmal besuchen und am Schluss wieder nach Berlin zurückkehren. Ist das
möglich?
Eisenbahn-Netzplan
Bei dieser Reise soll jede Stadt genau einmal besucht werde. Es ist aber egal, ob jede
Eisenbahnstrecke benützt wird oder nicht. Es ist also keine Eulersche Tour gesucht.
Definition
Ein Hamiltonscher Kreis ist ein geschlossener Kantenzug, der jede Ecke des Graphen genau
einmal enthält. Ein Graph, der einen Hamiltonschen Kreis enthält, heisst ein Hamiltonscher
Graph.
Hamiltonscher Graph
UNIZH MA 440 Geom2 J.S.-D.
kein Hamiltonscher Graph
58
1805 – 1865
Begründer der Quaternionen, die heute in der Computergraphik von Bedeutung sind.
Beispiel
Der Netzplan des Dodekaeders besitzt einen
Hamiltonzyklus.
UNIZH MA 440 Geom2 J.S.-D.
59
Billige Reise
Jetzt soll die Reise eine Rundfahrt durch die 4 Städte St. Gallen, Zürich, Basel und Bern
sein. Die Kosten sollen minimal werden.
Basel
24
22
31
Zürich
Bern
21
19
34
St. Gallen
Wie viele Hamiltonsche Kreise gibt es? Welche Reise ist die billigste?
Der obige Graph ist vollständig, d.h. von jeder Ecke gibt es zu jeder Ecke eine Kante.
Hat ein vollständiger Graph n Ecken, so kann man von einer beliebigen Ecke aus die
Hamiltonsche Reise beginnen, man hat noch (n - 1) Ecken zur Auswahl. Bei der nächsten
Ecke sind es noch (n - 2) usw. Im Ganzen hat man also (n - 1) (n -2).....2.1 = (n - 1)!
Möglichkeiten. Ist uns die Richtung, wie der Hamiltonsche Kreis durchlaufen wird egal, so
erhält man nur die Hälfte der Möglichkeiten. Also gilt
Satz: In einem vollständigen Graph mit n Ecken gibt es
(n ! 1)!
Hamiltonsche Kreise.
2
In der obigen Reise mit 4 Städten gibt es nur 3 Hamiltonsche Kreise. Unter diesen möchte
man den billigsten finden.
Zahlenbeispiel
5!
= 60 Hamiltonsche Kreise.
2
Aber bei 20 Städte sind es etwa 60 Billiarden Hamiltonsche Kreise. Mit 1 Million
Rechenoperationen pro Minute braucht man etwa 2 !10 6 Jahre: Wer interessiert sich dann
noch für dieses Problem!
Bei 6 Städten gibt es schon
UNIZH MA 440 Geom2 J.S.-D.
60
Das ist das berühmte Traveling Salesman Problem.
Ein Handelsreisender hat Kunden in n Städten {S1, S 2, ..., Sn}. Es gebe Strassen von jeder
Stadt zu jeder anderen mit vorgegebenen Längen d(Si, Sj), der Distanz längs der Kante SiSj.
Welche Route soll er wählen, wenn er jede Stadt genau einmal besuchen will, der Weg
möglichst kurz sein soll und unser Reisender am Schluss zum Anfangspunkt zurückkehren
soll?
Gesucht ist also ein Hamiltonscher Kreis minimaler Länge.
Bemerkungen
Im Allgemeinen ist es schwierig zu entscheiden, ob ein Graph einen Hamiltonschen Kreis
enthält.
Bis heute ist kein Algorithmus bekannt, der in polynomialer Zeit einen Hamiltonschen Kreis
findet oder ausschliesst.
In polynomialer Zeit bedeutet, dass die Anzahl erforderlicher Rechenschritte höchstens mit
einer festen Potenz der Anzahl Knoten und Kanten wächst.
Ebenso ist nicht bekannt, ob ein Algorithmus existiert, der in polynomialer Zeit den
kürzesten Weg findet. Man hält es auch für unwahrscheinlich, dass überhaupt ein solcher
Algorithmus existiert.
Das Travelling-Salesman-Problem (TSP), bei dem man durch jeden Knoten genau einmal
geht, ist nicht zu verwechseln mit dem Chinesischen Postbotenproblem, bei dem jede Kante
mindestens einmal benützt wird und der Weg minimale Länge haben soll.
Zu diesen beiden Standardproblemen gibt es tausende von Anwendungen, die alle unter dem
Titel Routenplanung bezeichnet werden können:
Das TSP tritt auf in der Routenplanung von Speditionen, der Müllabfuhr, von Lieferungen,
Car-Pooling, beim automatischen Bohren, Löten, Schweissen von Leiterplatten, usw.
Interessante Informationen zum TSP finden Sie im Internet, z.B. unter:
http://www.math.Princeton,edu/tsp/
In May 2004, the traveling salesman problem of visiting all 24,978 cities in Sweden was
solved: a tour of length 855,597 TSPLIB units (approximately 72,500 kilometers) was found
and it was proven that no shorter tour exists. This is currently the largest solved TSP
instance, surpassing the previous record of 15,112 cities through Germany set in April 2001.
UNIZH MA 440 Geom2 J.S.-D.
61
UNIZH MA 440 Geom2 J.S.-D.
Herunterladen