52 6. Graphen und Algorithmen 6.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. 53 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. 54 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. 55 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. 56 6.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. 57 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 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. 58 6.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. 59 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: Der Graph habe n Ecken (n = |V|) ⇒ 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 Eckgrade 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. 60 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. Beschreiben Sie den Isomorphismus. 1 2 a 4 d b 3 zwei isomorphe Graphen UNIZH MA 440 Geom2 J.S.-D. c 61 2. Skizzieren Sie einen Graphen, dessen Ecken die Grade 1, 2, 3, 4 haben. Gibt es einen einfachen solchen Graph? 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. 62 6.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. 63 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. 64 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 65 6.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. a. 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. 66 b. 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 67 6.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. 68 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 69 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 70 6.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. 71 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. 72 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. 73 6.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 74 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. 75 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. 76 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. 77 UNIZH MA 440 Geom2 J.S.-D.