Graphentheorie - Werner Knoben

January 31, 2018 | Author: Anonymous | Category: Ingenieurwissenschaften, Informatik, Datenstruktur
Share Embed Donate


Short Description

Download Graphentheorie - Werner Knoben...

Description

Graphentheorie

1 Aus der Kursbeschreibung Vor nunmehr 270 Jahren stand das so genannte Königsberger Brückenproblem, das dem berühmten Mathematiker Leonhard Euler (1707–1783) von dem damaligen Bürgermeister der Stadt Danzig C.L.G. Ehler vorgelegt wurde, an der Wiege der Graphentheorie. Über den Fluss Pregel führten zu jener Zeit sieben Brücken und Ehler fragte, ob es einen Rundgang durch Königsberg geben könne, der jeweils genau einmal über jede der Brücken führt. Euler widmete dieser Frage eine dreizehnseitige Abhandlung und stellte dabei die Königsberger Brücken und Wege mithilfe eines geometrischen Gebildes dar, das aus »Ecken« und »Kanten« bestand (heute spricht man von einem Graphen) und untersuchte, ob es einen geschlossenen Weg durch diesen Graphen gibt, der jede Kante nur einmal enthält. Da es, wie Euler erkannte, nur dann einen solchen Rundweg in diesem Graphen geben kann, wenn der »Grad« der Ecken (also die Anzahl seiner unmittelbaren Nachbarn) eine gerade Zahl ist, war gezeigt, dass ein solcher Rundgang durch Königsberg mit den gewünschten Vorgaben nicht existieren konnte, da jede Ecke von ungeradem Grad war. Verwandt mit diesem Problem ist die Frage, warum zwar das »Haus des Nikolaus« ohne abzusetzen gezeichnet werden kann, jedoch nicht das »Doppelhaus des Nikolaus«. Ein weiteres Problem, das die Entwicklung der Graphentheorie wesentlich beeinflusst hat, ist das »Vierfarben-Problem«, bei dem die Frage untersucht werden soll, ob sich jede beliebige Landkarte so mit vier Farben einfärben lässt, dass keine zwei Länder, die eine Grenze gemeinsam haben, gleichfarbig sind. Diese Frage ist erst zum Ende des letzten Jahrhunderts geklärt worden. Dass die Graphentheorie aber nicht zum Bereich der reinen Unterhaltungsmathematik gerechnet werden kann, zeigt das große Interesse, das ihr in den Anwendungsbereichen der Mathematik zu Teil wird. Bereits 1847 nutzte G.R. Kirchhoff (1824–1887) grundlegende Resultate der Graphentheorie in seiner Arbeit über elektrische Netzwerke. A. Cayley (1821–1895) stellte mit ihrer Hilfe in der zweiten Hälfte des 19. Jahrhunderts Untersuchungen zu Anzahlen chemischer Verbindungen an. In der zweiten Hälfte des 20. Jahrhunderts nahm die Graphentheorie durch das Bestreben, Probleme in diskreter Weise zu modellieren, um sie einer Bearbeitung durch Computer zugänglich zu machen, einen rasanten Aufschwung. Die Informatik und die diskrete Optimierung gehören heute zu den wichtigsten Anwendungsbereichen der Graphentheorie. Aber auch die Technik und die Wirtschaftsund Sozialwissenschaften nutzen zur Problembeschreibung und -lösung graphentheoretische Methoden. Es verwundert daher nicht, dass die Graphentheorie zu jenen Gebieten der Mathematik zählt, die im Zentrum der aktuellen Forschung stehen und die sich heute am schnellsten weiterentwickeln.

7

Kurs 7.1 – Graphentheorie

Akademie Roßleben 2006-7

Im Kurs wurde aus der Stoffmenge, welche die Graphentheorie umfasst, natürlich ausgewählt. Ebenso konnten nicht alle Zweige dieser Theorie berücksichtigt werden. Es wurde versucht, aus der Angebotsfülle einige interessante Fragestellungen auszuwählen, um an ihnen exemplarisch die Arbeitsweise der Graphentheorie und der Mathematik überhaupt deutlich werden zu lassen. Begriffs- und Modellbildung, die aus Anwendungen geschöpft werden, wurden dabei besonders berücksichtigt. Der Kurs bestand aus drei Teilen, die zeitlich mitund ineinander verwoben waren. Im ersten Teil wurden einige nötige Grundlagen gelegt. Der zweite Teil untersuchte in Form kleiner Projekte Einzelfragen und Anwendungen der Graphentheorie in »theoretischer« und »praktischer« Form. Diese Projekte, die kleine Forschungsvorhaben darstellten, verlangten Kreativität, Spaß an theoretischen und praktischen »Knobelaufgaben«, die Fähigkeit sich selbstständig mit neuen und ungewohnten Fragestellungen auseinander zu setzen, Geduld und die Bereitschaft, in kleinen Teams zu arbeiten. Im dritten Teil wurden die Ergebnisse der Projektarbeit in Form von Vorträgen dem gesamten Kurs vorgestellt. Die Darstellung der bearbeiteten Projekte bildet den Inhalt der folgenden Dokumentation.

2 Einleitung (Carolin Sellmann, Charlotte Mielke) Definition 1 Ein (endlicher) Graph ist ein Tupel G = (V, E), wobei V eine endliche nicht leere Menge und E eine Teilmenge der zweielementigen Teilmengen von V ist. Die Elemente von V heißen Knoten (engl.: vertices), die Elemente von E Kanten (engl.: edges) von G. Beispiel: Ein Beispiel für einen Graphen ist das Haus des Nikolaus (Abbildung 1.1). Es besteht aus acht Kanten und fünf Knoten {A, B, C, D, E}. Der Schnittpunkt in der Mitte zählt nicht als Knoten. Definition 2 Ein Knoten v1 heißt Nachbar eines Knoten v2 genau dann, wenn v1 durch eine Kante mit v2 verbunden ist. Beispiel: Im Haus des Nikolaus sind beispielsweise die Knoten A und B oder die Knoten D und B Nachbarn. Definition 3 Der Grad d(v) eines Knoten v ∈ V ist die Anzahl seiner Nachbarn.

Abb. 1.1: Das ist das Haus des Nikolaus.

Beispiel: Der Knoten A im Haus des Nikolaus hat den Grad 3, also d(A) = 3. Definition 4 (1) Ein Weg W (engl.: walk) ist eine Folge von (nicht notwendig verschiedenen) Knoten, die jeweils durch Kanten verbunden sind. (2) Ein Weg, in dem jeder Knoten nur einmal vorkommt, heißt Pfad P (engl.: path). (3) Ein Weg heißt Zykel, falls der erste Knoten gleich dem letzten ist. Ein kreuzungsfreier Zykel (d.h.: die Knoten wiederholen sich nicht) heißt Kreis. Beispiele: (1) Die Knotenfolge (C, D, E, G, H, I, H, G, F ) ist ein Weg. (2) Die Knotenfolge (A, B, C, D, E, G, H, I) ist ein Weg und ein Pfad. (3) Die Knotenfolge (C, D, E, G, F, C) ist ein Weg, ein Pfad und ein Kreis.

8

Abb. 1.2: Wege, Pfade und Kreise

Akademie Roßleben 2006-7

Kurs 7.1 – Graphentheorie

Kurs 7.1: Graphentheorie

3 Eulersche Graphen (Carolin Sellmann, Charlotte Mielke) 3.1 Definitionen Definition 5 Ein Multigraph ist ein Graph, in dem mehrere Kanten zwischen zwei Knoten zugelassen sind. Definition 6 Ein Pseudograph ist ein Multigraph , wobei hier zusätzlich Schlingen zugelassen sind. Definition 7 Ein Graph G heißt zusammenhängend, wenn zwischen je zwei Knoten ein Weg existiert. 3.2 Königsberger Brückenproblem Das erste und bekannteste Problem der Graphentheorie ist das Königsberger Brückenproblem. Durch Königsberg fließt die Pregel, welche die Stadt in zwei Inseln und zwei Stadtgebiete teilt. Diese sind über sieben Brücken miteinander verbunden, wie man der Abbildung 1.3 entnehmen kann. Leonhard Euler (1707-1783) sollte einen Rundweg durch die Stadt Königsberg finden. Dieser Rundgang sollte an einem Punkt starten, über jede der sieben Brücken genau einmal führen und schließlich zum Startpunkt zurückführen. Im Jahre 1736 formulierte Leonard Euler den Beweis für die Unmöglichkeit eines solchen Rundganges. Das Königsberger Brückenproblem lässt sich wie folgt mathematisieren: Die vier Stadtteile werden auf die vier Knoten A, B, C und D zusammengezogen und sind jeweils paarweise über Kanten verbunden, welche sich nicht schneiden. Die Kanten repräsentieren die sieben Brücken in Königsberg. In der Graphentheorie bezeichnet man einen geschlossenen Kantenzug, der jede Kante von G genau einmal enthält, als Eulerschen Rundweg. Einen Graphen, der einen Eulerschen Rundweg enthält, Abb. 1.3: Das Königsberger nennt man auch Eulerschen Graphen. Das Königsberger Brücken- Brückenproblem problem zu lösen, bedeutet also, einen Eulerschen Rundweg zu finden. Dazu beweisen wir den folgenden Satz: 9

Kurs 7.1 – Graphentheorie

Akademie Roßleben 2006-7

Satz 1 Wenn ein Graph G = (V, E) einen Eulerschen Rundweg enthält, dann ist G zusammenhängend und jeder Knoten von G hat einen geraden Grad. Beweis: Gegeben sei ein Eulerscher Graph G, der einen Eulerschen Rundweg Z enthält. Da Eulersche Rundwege geschlossene Kantenzüge sind, also Start- und Endpunkt übereinstimmen, muss G zusammenhängend sein. Wir stellen uns vor, dass man nun diesem Kantenzug folgt, so dass jeder Knoten über eine Kante angelaufen und über eine andere Kante wieder verlassen wird. Jeder Knoten wird so h-mal während eines Rundgangs angelaufen und wieder verlassen. Daraus folgt, dass der Grad jedes Knoten gerade sein muss. q.e.d. Analog gilt dieser Beweis auch für Pseudographen. Denn bei einer Schlinge erhöht sich der Grad eines Knoten um zwei, weil die Schlinge am gleichen Knoten startet und endet. Zum Königsberger Brückenproblem: Wie man nun leicht der Abbildung 1.3 entnehmen kann, hat jeder Knoten des zum Königsberger Brückenproblems gehörenden Graphen einen ungeraden Grad. Zum Beispiel ist der Grad des Knoten A gleich drei. Ein Eulerscher Rundweg ist somit nicht möglich. 3.3 Satz von Hierholzer Lemma 1 Hat jeder Knoten eines Graphen G = (V, E) geraden Grad, so liegt jeder Knoten auf einem Rundweg in G. Beweis: Angenommen, a ist ein Knoten in G. Wir beginnen nun einen Rundgang. Jeder Knoten b, den wir erreichen, hat entweder noch eine Kante, die noch nicht durchlaufen wurde, denn der Eckengrad ist gerade, oder keine unbenutzte Kante. Im letzten Fall muss b die Ausgangsecke sein, da dort der Weg begonnen wurde. Damit ist der Rundweg gefunden. q.e.d. Satz 2 Ist ein Graph G = (V, E) zusammenhängend und der Grad jedes Knotens gerade, dann enthält G einen Eulerschen Rundweg. Beweis: Sei G ein zusammenhängender Graph, dessen Knoten alle von geradem Grad sind. C sei der längste Rundweg in G. Wenn C = G, ist C ein Eulerscher Rundweg, da C jeden Knoten von G enthält und der Satz ist bewiesen. Enthält C nicht jeden Knoten von G, entfernen wir die Kanten von C aus G und definieren: G − C =: H Der Grad aller Knoten von H ist gerade; denn der Grad aller Knoten in C (ohne H) ist gerade und wir haben eine gerade Anzahl von Kanten abgezogen. Da G zusammenhängend ist, gibt es mindestens einen Knoten a, der sowohl in C als auch in H liegt. Aus dem zuvor gezeigten Lemma folgt, dass a auf einem Rundweg D in H liegt. Nun erweitern wir C, indem wir den Rundweg D an C anhängen. Der so entstandene Rundweg ist offensichtlich länger als C. Das ist ein Widerspruch, da wir angenommen hatten, C sei der längste Rundweg. q.e.d. 3.4 Eulerscher Pfad Definition 8 Sei G = (V, E) ein Pseudograph. Ein Eulerscher Pfad in G ist ein Kantenzug, der jede Kante und jede Ecke enthält. Dabei darf jede Kante nur genau einmal vorkommen. Satz 3 Ein Pseudograph enthält genau dann einen Eulerschen Pfad, wenn G zusammenhängend ist und genau zwei Knoten ungeraden Grad haben. Beweis: ⇒: G enthalte einen Eulerschen Pfad T . Aus der Definition folgt, dass G zusammenhängend ist. Nun beginne man das Durchlaufen bei einer Ecke a und beende es bei einer Ecke b. Daraufhin füge man eine Kante e von a nach b hinzu. Dann ist T + e ein Eulerscher Rundweg in dem Pseudographen G + e, und nach dem Satz von Euler hat jede Ecke von G + e einen geraden Grad. Wenn man e nun wieder entfernt, sind die einzigen Knoten, die nun von ungeradem Grad sind, die Knoten a und b. ⇐: Nun nehme man an, dass G zusammenhängend ist und genau zwei Ecken a und b mit ungeradem Grad hat. Wie zuvor füge man eine Kante e von a nach b hinzu. Dann ist G + e zusammenhängend und jede Ecke hat einen geraden Grad. Nach dem Satz von Hierholzer enthält G + e einen Eulerschen Rundgang C. C − e ist ein Eulerscher Pfad in G. q.e.d. 10

Akademie Roßleben 2006-7

Kurs 7.1 – Graphentheorie

3.5 Aufteilen von Graphen Der Graph G in Abbildung 1.4 enthält einen Eulerschen Rundweg, da alle Knoten vom Grad vier, also von geradem Grad sind. Dass sich Graphen, deren Knoten alle vom Grad vier sind, in zwei Teilgraphen einteilen lassen, die ebenfalls einen Eulerschen Rundweg enthalten, ist der Inhalt des folgenden Satzes. Satz 4 Wenn alle Knoten eines Graphen G vom Grad vier sind, existiert eine Aufteilung in zwei Teilgraphen, deren Knoten alle vom Grad zwei sind. Beweis: G sei ein Graph, dessen Knoten vom Grad vier sind. Wir setzen voraus, dass G zusammenhängend ist; ist G nicht zusammenhängend, verläuft der Beweis für die zusammenhängenden Teilgraphen von G analog.

Abb. 1.4: Graph G

Da alle Knoten von G von geradem Grad sind, existiert ein Eulerscher Rundweg C in G. Die Länge, also die Anzahl der Kanten des Rundwegs, sei q. Die Anzahl der Ecken des Graphen sei p. Dann ist q=

4p = 2p, 2

denn wir zählen zuerst die Kanten, die von jedem Knoten ausgehen und teilen diese Anzahl anschließend durch zwei, weil wir schließlich jede Kante doppelt gezählt haben. Man sieht so, dass die Anzahl der Kanten in C gerade ist. Wir färben nun die Kanten abwechselnd rot und blau, so dass an jeden Knoten zwei rote und zwei blaue Kanten grenzen. Man überlegt sich, dass die roten Kanten ebenso wie die blauen einen Eulerschen Rundweg bilden. Jeder Knoten hat in Bezug auf die neuen Rundwege den Grad zwei. q.e.d.

4 Die platonischen Körper (Sophie Knell, Marie Livrozet) 4.1 Die Eulersche Polyederformel Die Eulersche Polyederformel besagt, dass die Anzahl der Ecken, |V |, abzüglich der Anzahl der Kanten, |E|, plus die Anzahl der Flächen, |F |, eines Körpers immer gleich 2 ist: |V | − |E| + |F | = 2. Sie gilt für alle Körper, die durch Polygone begrenzt werden. Für Polyeder, die als ebene Graphen dargestellt werden können, kann die Formel auf die zugehörigen planaren, zusammenhängenden Graphen G = (V, E) angewendet werden. Dabei ist die Menge der Flächen mit F bezeichnet, inklusive der Fläche um den Graphen herum. Es gibt mehrere Möglichkeiten, die Eulersche Polyederformel zu beweisen, eine davon benutzt die Methode der vollständigen Induktion. Induktionsgegenstand ist die Anzahl n der Ecken des Polyeders. Zunächst wird die Formel für einen Graphen bewiesen, der nur aus einem Punkt und beliebig vielen Kanten besteht, die zwangsläufig Schlaufen bilden. Dann wird bewiesen, dass die Formel weiterhin gilt, wenn man immer einen Punkt mehr hinzufügt. Induktionsanfang: Beweis für n = 1. Im Falle n = 1 sind alle vorhandenen Flächen, außer der umgebenden, durch Schlaufen begrenzt. |V | = 1 ⇒ |E| + 1 = |F | und |V | − |E| + |F | = 1 − |E| + (1 + |E|) = 2. Induktionsannahme: Die Eulersche Polyederformel gilt für die Anzahl der Ecken n. Induktionsschluss: Jede Ecke, die hinzukommt, muss durch eine Kante mit dem vorhandenen Graphen verbunden werden, die dem Graphen keine neue Fläche hinzufügt. Jede zusätzliche Kante begrenzt eine neue Fläche. Seien E ∗ , F ∗ die Menge der Kanten im Graphen bzw. der Flächen mit n + 1 Ecken. e sei die Anzahl der zusätzlichen Kanten und somit auch der Flächen, die hinzukommen. Also gilt für n + 1: n + 1 − |E ∗ | + |F ∗ | = n + 1 − (|E| + e) + (|F | + e − 1) = n − |E| + |F | = 2. q.e.d. 11

Kurs 7.1 – Graphentheorie

Akademie Roßleben 2006-7

4.2 Die fünf Platonischen Körper Es gibt genau fünf platonische Körper: das Tetraeder, den Würfel (Hexaeder), das Oktaeder, das Dodekaeder und das Ikosaeder. Diese sind durch folgende Eigenschaften bestimmt: Die Seitenflächen sind zueinander kongruent, an allen Ecken sind gleich viele Kanten und alle Kanten sind gleich lang. Alle Körper können als Graphen dargestellt werden, indem man eine Seitenfläche auseinanderzieht und den Körper so in die Ebene abbildet. Dazu nimmt man die Ecken der Körper als Ecken der Graphen. Da es bei Graphen unerheblich ist, welche Form die Kanten haben und nur wichtig ist, dass die Ecken verbunden sind, sind die Kanten der Darstellung nicht alle gleich lang, obwohl die Flächen des Körpers identisch sind. Wenn es nur Kanten auf der Oberfläche des Körpers gibt und keine Diagonalen innerhalb, überschneiden sich außerdem keine Kanten des Graphen.

Abb. 1.5: Die platonischen Körper und ihre Graphen

Somit sind die Graphen der platonischen Körper eben und alle Flächen werden von gleich vielen Kanten begrenzt. Zusätzlich haben alle Ecken den gleichen Grad ρ und da es sich um dreidimensionale Figuren handelt, muss dieser mindestens drei sein. Graphen G, die dies erfüllen, nennt man regulär. Ist auch der duale Graph G∗ regulär, also der Grad an jeder Ecke gleich, wird G als vollständig regulär bezeichnet. Im dualen Graphen wird jeder Fläche von G eine Ecke in G∗ zugeordnet. Wenn also der duale Graph G∗ regulär ist, wird jede Fläche in G von der gleichen Anzahl Kanten ρ∗ begrenzt. Es existieren nur fünf Graphen, die vollständig regulär sind. Jeder platonische Körper lässt sich genau einem dieser Graphen zuordnen. Also kann man über den Beweis, dass es nur fünf vollständig reguläre Graphen gibt, schließen, dass es nur fünf platonische Körper geben kann. Für den Beweis benötigt man die Eulersche Formel. Um die Anzahl der Kanten in einem Graphen zu ermitteln, wird der Grad aller Ecken aufsummiert. Man erhält so die doppelte Anzahl der Kanten, weil jede Kante durch zwei Ecken begrenzt wird. Da die Graphen der platonischen Körper regulär sind, gilt deshalb: |V | · ρ = 2|E|. Wenn man analog mit den Flächen verfährt, erhält man ρ∗ |F | = 2|E|. Zusammengefasst gilt also: 2|E| = ρ · |V | = ρ∗ · |F |. Um die Zusammenhänge in die Eulersche Formel |V | + |F | − |E| = 2 einsetzen zu können, lösen wir nach |E| und |F | auf. Somit erhalten wir:   ρ 1 ρ 1 |V | + ∗ |V | − ρ · |V | = |V | 1 + ∗ − ρ = 2. ρ 2 ρ 2 Durch eine leichte Umformung ergibt sich: |V |(2ρ∗ + 2ρ − ρρ∗ ) = 4ρ∗ , wobei: |V |, ρ∗ ∈ N. Somit muss auch gelten: (2ρ + 2ρ∗ − ρρ∗ ) ∈ N ⇒ (2ρ + 2ρ∗ − ρρ∗ ) > 0. Durch eine leichte Umformung und Ausklammern erhält man die Ungleichung: (2ρ + 2ρ∗ − ρρ∗ ) > 0 | · (−1) + 4 also: (ρ − 2) · (ρ∗ − 2) < 4. Selbige ist nur in zwei Fällen erfüllt: 1) ρ − 2 und ρ∗ − 2 sind positiv, also ρ, ρ∗ > 2. 2) 1 ≤ ρ ≤ 2 oder 1 ≤ ρ∗ ≤ 2. 12

Akademie Roßleben 2006-7

Kurs 7.1 – Graphentheorie

Der zweite Fall kann bei Körpern jedoch nicht eintreten, da Körper dreidimensional sind; für ρ, ρ∗ muss also gelten: ρ, ρ∗ ≥ 3. Führen wir den ersten Fall weiter aus. Es gilt ρ − 2 ≤ 3 ∧ ρ∗ − 2 ≤ 3 ⇒ ρ ≤ 5 ∧ ρ∗ ≤ 5, wobei ρ und ρ∗ nicht gleichzeitig 5 sein dürfen, und ρ ≥ 3 ∧ ρ∗ ≥ 3. Da weiterhin die Gleichung (ρ − 2) · (ρ∗ − 2) < 4 erfüllt sein muss, gibt es für ρ und ρ∗ nur die folgenden ungeordneten Produktpaare: (1; 1), (1; 2), (1; 3). Insgesamt zählt man also nur fünf verschiedene Kombinationsmöglichkeiten. Durch Einsetzen in die zu Beginn hergeleiteten Formeln |V |(1 + ρρ∗ − 12 ρ) = 2 und ρ · |V | = 2|E| = ρ∗ · |F | erhält man die Anzahl der Kanten |E|, die der Ecken |V | und die der Flächen |F | der Graphen. ρ 3 3 3 4 5

ρ∗ 3 4 5 3 3

|V | 4 8 20 6 12

|E| 6 12 30 12 30

|F | 4 6 12 8 20

Körper Tetraeder Würfel Dodekaeder Oktaeder Ikosaeder

Tab. 1.1: Übersicht über platonische Körper

Es gibt somit genau fünf vollständig reguläre Graphen. Da der zu einem platonischen Körper gehörige Graph vollständig regulär sein muss, kann es nicht mehr platonische Körper als vollständig reguläre Graphen geben. Es existieren nun genau fünf vollständig reguläre Graphen, weswegen es auch genau fünf platonische Körper gibt, die als vollständig reguläre und damit platonische Graphen dargestellt werden können. q.e.d.

5 Algorithmen zur Wegfindung (Clemens Wieck, Daniel Mescheder) 5.1 Was ist ein Algorithmus? Ein Algorithmus kann als eine genau definierte Handlungsvorschrift zur Lösung von Problemen aufgefasst werden. Algorithmen werden hauptsächlich in der Mathematik und in der Informatik verwendet, doch treten sie auch im Alltag auf. Die bekanntesten Beispiele sind Koch- oder Backrezepte: Alle Zutaten müssen in einer festgelegten Reihenfolge verarbeitet werden, damit ein klar festgelegter Endzustand erreicht wird. 5.2 Was ist ein Wegproblem? Es gibt eine Reihe von graphentheoretischen Anwendungsproblemen, die Algorithmen zu ihrer Lösung erfordern. Eines der bekanntesten Probleme ist das Finden von kürzesten Wegen innerhalb eines Graphen. Wir wollen ein Wegproblem P folgendermaßen definieren: P = (G, S, T, C, λ), wobei G = (V, E) ein beliebiger Graph, S ⊆ V sei die Menge aller Startpunkte, T ⊆ V die Menge aller Endpunkte des Wegproblems sei. Man spricht von einem Single-Source Wegproblem, wenn |S| = 1, von einem Single-Pair Wegproblem, wenn |S| = 1 und |T | = 1 und von einem All-Pairs Wegproblem, wenn S = V und T = V ist. Im Folgenden wollen wir uns auf das Lösen von Single-Source Wegproblemen beschränken. C = (R,

M

, , e0 , e1 )

L ist eine Bewertungsstruktur bestehend aus einer Bewertungsmenge R und zwei Operationen: : 2R → R (dient zur Bestimmung der optimalen Pfadlänge aus einer Menge von Pfadbewertungen), : R × R → R (verknüpft verschiedene Kantenbewertungen innerhalb eines Pfades). Ausserdem enthält C zwei ausgezeichnete Elemente e0 , e1 ∈ R. λ : E → R ist eine Kantenbewertungsfunktion, die jeder Kante genau eine Bewertung aus R zuordnet. Sei Pst die Menge aller Pfade zwischen einem Startknoten s ∈ S und einem Endknoten t ∈ T . Dann wird der kürzeste Pfad definiert als M {λ(p)|p ∈ Pst }. λ(Pst ) = 13

Kurs 7.1 – Graphentheorie

Akademie Roßleben 2006-7

Für jedes Problem P gilt für den leeren Pfad  (also ein Weg, der über keine Kante führt) λ() = e1 . Ein Beispiel für eine Bewertungsstruktur C ist die folgende: C = (R∞ , inf, +, ∞, 0). Hier wird jedem möglichen Pfad eine Bewertungsnummer aus der Menge der reellen Zahlen zugeordnet. Dabei wird aus einer Menge von Wegen der kürzeste über die Infimum-Operation ausgewählt. Einzelne Kantenbewertungen werden zur Gesamtpfadbewertung aufaddiert: λ(pij ) = λ((vi , vi+1 )) + ... + λ((vj−1 , vj )). 5.3 Wegexpansion Es soll nun ein Single-Source Wegproblem über Wegexpansion gelöst werden. Wegexpansion bedeutet, dass ein Graph ausgehend von einem Startpunkt Schritt für Schritt abgegangen wird. Wege, die noch nicht expandiert, also bearbeitet wurden, heißen »aktiv«, bereits expandierte Wege werden im Folgenden »permanent« genannt. Wir betrachten nun ein Wegproblem P = (G, S, T, C, λ), für das für jedes e ∈ E gilt λ(e) > 0. 5.4 Der Algorithmus von Dijkstra Der Algorithmus von Dijkstra ist einer der gebräuchlichsten zur Findung von kürzesten Wegen innerhalb eines Graphen. Im Folgenden findet man eine mögliche Darstellung in einem Pascal-ähnlichen Pseudocode. Hinter den »//« Zeichen findet sich ein Kommentar zur Funktion der jeweiligen Zeile. 1) d : array[V ] of R; //Array der besten bekannten Bewertungen für i ∈ V 2) p : array[V ] of set of (PG ∪ {undef }) × R × {aktiv, permanent}; 3) D : priority queue of V × R; //«Puffer« für die Ecken, die als nächstes bearbeitet werden sollen. 4) d[s] := e1 ; p[s] := {(, e1 , aktiv)}; //Initialisierung von s. 5) insert (s, e1 ) into D; //Einfügen von s in D. 6) f or all (i ∈ V \ {s}) do d[i] := e0 ; p[i] := {undef, e0 , aktiv)}; //Initialisierung aller Punkte außer s. 7) while (D 6= ∅) do 8)

(i, r) := min(D); //Kleinstes Element aus D wählen.

9)

p := p0 | (p0 , r, aktiv) ∈ p[i] //Das aktuelle Pfadelement wählen.

10)

p[i] := p[i] ∪ {(p, r, permanent)}{(p, r, aktiv)}; //Der betrachtete Pfad wird auf permanent gesetzt.

11)

f or all (e = (i, j) ∈ E) do //Alle Kanten zu benachbarten Punkten von i wählen.

12) 13) 14)

if (d[j] > (r λ(e), aktiv)) then //Wenn der neue Weg nicht größer ist als der schon bekannte. d[j] := (r λ(e)); //Der neu gefundene Weg ist nun der kürzeste. a := f alse; //a (eine temporäre Variable) wird initialisiert.

15)

p[j] := p[j] ∪ {(pe, r λ(e), aktiv)}; //Der Weg über i nach j wird dem Array p hinzugefügt.

16)

f or all (p0 , r0 , φ) ∈ p[j] do //Das Array p soll nun in eine minimale Menge umgeformt werden. L if (p
View more...

Comments

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF