Graphen 1 / 62 Graphen Bei Modellierungsaufgaben geht es oft darum, Objekte sowie Beziehungen zwischen je zwei Objekten zu beschreiben: Graphen sind dafür maßgeschneidert. Ein Graph besteht aus „Knoten“ (repräsentieren Objekte) und „Kanten“ (repräsentieren Beziehungen zwischen je zwei Objekten). Ein erstes Beispiel: Der Netzplan der Frankfurter S- und U-Bahnen zeigt U- und S-Bahn Stationen (als Knoten) und Direktverbindungen zwischen den Stationen (als Kanten). 2 / 62 - Gießen W Sö öl de fe l rsh ei m h Ro Ro sb dh rn pe Kö p r d pe ten eO W es n stä eld erd orf rfe Nie dte en n lde u na el Gro rdo de dV ilb Ba ian eim l be kö ch Bru er tz eu tpla m i ark de M rg rle lbe ise us Ka üh M rm S Pla chw tz eiz Le en ord uN a na Fu Mainhausen Zellhausen ch era Aschaffenburg Babenhausen Alt he im rge rsh au rg be eim inh He se ** n Babenhausen Langstadt feld rg t tad ms Ra Ob er- l lta üh M t Os dt sta rm Da D TU arm -Lic sta htw dt ies e nic bu ng Die M hs es se tein l Münster Groß-Umstadt Klein-Umstadt Le al Urb en Off Gö th ain nh tze ieic Dre Eppertshausen Re ng eld dli elf ren Rollwald ain he Sp nh W eib Seligenstadt Nieder-Roden RödermarkOber-Roden Kra rm s No tadt rd Da t tad ers Dudenhofen Groß-Umstadt Otz ran Pla dttz -B W illy u era W eit ß-G Gro an Wo nh rm ei s/ m M in-G era u eim uh Na Kle Re gio na Flug lba ha hn fen ho f h ac im he un terb Ra els ss Rü Ke ls im he erk Op im rg he Bis ch ofs elw r ate bu vs sta rg he bu d sT en Hainburg Hainstadt Jügesheim Dietzenbach Mitte Dietzenbach Bahnhof Offenbach Hbf Sü Gu ff rt he Ha ha Hainhausen kfu isc th sc an öm Os Be Ba rke dV ilb rsh el eim Sü d erg rB rte fu nk Fra eg ilw Ze Le ipz platz B ige W ock ar en r Str te he . im er ch Ob alb Sa Kir Kil A Hanau Klein-Auheim Weiskirchen Steinberg Fr zR eim Alt inh F M esth es all se e/ Ste Waldhof Obertshausen Heusenstamm f ain n rau ho M se de hn ** au n lba Darmstadt Hbf nh he ka Arheilgen Heidelberg/Mannheim el Eic Lo Gernsheim st of Änderungen vorbehalten. Gültig ab 15. Juni 2008 © Rhein-Main-Verkehrsverbund GmbH ld rgh Bu hle eim rh ch W eh urg /Lo N An eusp ac h Us us Ha W ilh mü ) en (Ts ing sd elm nd Hu en dt orf ch sta orn ba elb ies ss nw Ha ve Grä G ch t nh Worms ** Eröffnung im Laufe des Fahrplanjahres 2008 ** bis 13.12.2008: Linie 75 (Wiesbaden - Darmstadt); Linie 63 (Darmstadt - Aschaffenburg) ab 14.12.2008: Linie 75 (Wiesbaden - Darmstadt Aschaffenburg); Linie 63 entfällt dt Os ah n Wolfskehlen Louisa NeuIsenburg DreieichBuchschlag LangenFlugsicherung Langen Egelsbach Erzhausen Wixhausen erg Hö ch tb i Stadion Zeppelinheim Walldorf Mörfelden Riedstadt-Goddelau Stockstadt (Rhein) Biebesheim sta im ba up e Stresemannallee Niederrad Groß-GerauDornberg Dornheim Schöllkrippen im en Ha h Hochheim Abfahrt von den Fernbahnsteigen Frankfurt Hbf Hanau Hbf rt R Mainz Nord Mainz Hbf Koblenz/ Saarbrücken ey lz A ad lhe Off Ostendstraße Bieber Griesheim M a i n Flörsheim sb u na Ha est W üh ge kfu Eddersheim Kastel elm M an Hattersheim Wiesbaden Ost ub en he Mainkur Frankfurt Ost Dom/Römer nla Galluswarte Sindlingen Koblenz tes Messe Nied Fr Höchst sa Farbwerke Parlamentsplatz Habsburgerallee nu Zeilsheim Kriftel Erbenheim u Ta Wiesbaden Hbf Zoo ilh W Maintal West Die Frankfurt West Alt Rödelheim Hauptwache Unterliederbach Hofheim Konstablerwache Lorsbach Igstadt eim rg Sossenheim dh bu AuringenMedenbach n m Industriehof/ Neue Börse Liederbach Süd Eppstein Bornheim Enkheim Eckenheimer Landstraße/ Seckbacher Marbachweg Hessen-Center Landstraße Versorgungsamt Kruppstraße Hauptfriedhof Gwinnerstraße Bornheim Deutsche Riederwald Schäfflestraße Mitte Nationalbibliothek Johanna-TeschHöhenstraße Glauburgstr. Platz Maintal Ost MusterEissporthalle/ schule Merianplatz Festplatz Dornbusch Miquel-/ Adickesallee Holzhausenstr. Grüneburgweg Eschenheimer Tor Ginnheim Fischstein Liederbach Bremthal Marbachweg/Sozialzentrum Lindenbaum Hügelstraße Fritz-Tarnow-Str. Niedernhausen Niederjosbach ec Weißer Stein eim ord Li Hausener Weg sh hN Eschersheim de h ac ac Stephan-HeiseStraße Sulzbach Kelkheim-Münster Okarben Groß-Karben Dortelweil Bü * lzb alb Su hw ord Sc hN Kelkheim Preungesheim Sigmund-Freud-Straße Ronneburgstraße Theobald-Ziegler-Straße Gießener Straße Heddernheim Heddernheimer Landstraße Nordwestzentrum Römerstadt Niddapark Große Nelkenstraße Hausen Friedhof Westhausen Lin ac Eschborn Süd Gla Nieder-Eschbach Bonames Mitte Kalbach Riedwiese/ Mertonviertel Sandelmühle ind W alb Bad Soden Kelkheim-Hornau da hw Schneidhain Assenheim Nid Sc Königstein Glauburg-Stockheim Nidda Nieder-Wöllstadt Ober-Eschbach id Friedberg Bruchenbrücken Bad Homburg-Gonzenheim ke Oberursel-Hohemark Friedrichsdorf Waldlust Rosengärtchen Seulberg Kupferhammer Glöcknerwiese Bad Homburg Lahnstraße Kronberg Portstraße Oberursel Stadtmitte Kronberg Süd Oberursel Bommersheim Stierstadt Niederhöchstadt Weißkirchen Ost Niederursel Praunheim Weißkirchen/ Heerstraße Wiesenau Steinbach Eschborn N Brandoberndorf ac olz eim ha F Sü ried d berg us en Schnellbahnplan Groß-Umstadt Wiebelsbach Erbach/ Eberbach 3 / 62 Der Ablauf eines Telefongesprächs Ziffer wählen Hörer abheben auflegen Gespräch führen 4 / 62 Kaffeekochen Kaffeepulver in die Maschine einfüllen @ R @ Filter einsetzen Maschine starten Wasser einfüllen HH j Kaffeebohnen mahlen Durchlauf abwarten Kaffebohnen in die Mühle einfüllen Tassen bereitstellen ? Kaffeemaschine abschalten ? Filter entsorgen ? Kaffee einschenken Kaffee aus der Maschine nehmen 5 / 62 Ungerichtete Graphen Ungerichtete Graphen 6 / 62 Was ist ein ungerichteter Graph G = (V , E )? Ein ungerichteter Graph G = (V , E ) besteht aus der Knotenmenge V und der Kantenmenge E mit E ⊆ {i, j} : i ∈ V , j ∈ V , i 6= j . Die Elemente aus V heißen Knoten von G, die Elemente aus E heißen (ungerichtete) Kanten von G: Kanten sind also 2-elementige Teilmengen von V . Es gibt zwischen zwei Knoten i und j aus V höchstens eine Kante {i, j}, die grafisch dargestellt wird durch i j keine Kante, falls i = j ist. Nicht erlaubt sind somit „Schleifen“. i Ungerichtete Graphen 7 / 62 Autobahnverbindungen WI F MZ DA WÜ KL DA F KL MA MZ WI WÜ = b = b = b = b = b = b = b Darmstadt Frankfurt Kaiserslautern Mannheim Mainz Wiesbaden Würzburg MA G = (V , E ) ist ein ungerichteter Graph mit MZ, WI, MA, DA, KL, F, WÜ und V := E := {MZ, WI}, {WI, F}, {F, DA}, {F, WÜ}, {MZ, DA}, {MZ, KL}, {KL, MA}, {DA, MA} . Ungerichtete Graphen 8 / 62 Ungerichtete Graphen: Wichtige Begriffe Sei G = (V , E ) ein ungerichteter Graph. Ein Knoten v ∈ V heißt inzident mit einer Kante e ∈ E , falls v ∈ e. Die beiden mit einer Kante e ∈ E inzidenten Knoten nennen wir die Endknoten von e, und sagen, dass e diese beiden Knoten verbindet. I I Zwei Knoten v , v 0 ∈ V heißen benachbart (bzw. adjazent), falls es eine Kante e ∈ E mit Endknoten v und v 0 gibt (d.h. e = {v , v 0 }). Falls v und v 0 zwei benachbarte Knoten sind, so sagen wir auch, dass v 0 ein Nachbar von Knoten v ist. Der Grad von v in G (kurz: GradG (v )), ist die Anzahl der Kanten, die v als Endknoten haben, d.h. GradG (v ) = |{{e ∈ E : v ∈ e}|. Der Grad von G (kurz: Grad(G)) ist der maximale Grad eines Knotens von G. Ungerichtete Graphen 9 / 62 Der Knotengrad: Ein Beispiel Für den Graphen G = a b d c gilt: GradG (a) = 3 GradG (b) = 2 und GradG (c) = 3 GradG (d) = 2 Ungerichtete Graphen Grad(G) = 3. 10 / 62 Gerichtete Graphen Gerichtete Graphen 11 / 62 Was ist ein gerichteter Graph G = (V , E )? Ein gerichteter Graph G = (V , E ) besteht aus der Knotenmenge V und der Kantenmenge E mit E ⊆ (i, j) : i ∈ V , j ∈ V . Die Elemente aus V heißen Knoten, die Elemente aus E heißen (gerichtete) Kanten von G. Kanten sind also geordnete Paare von Knoten, d.h. Elemente von V × V . In der grafischen Darstellung eines Graphen stellen wir die Kante (i, j) als Pfeil von Knoten i nach Knoten j dar, also i j Beachte, dass wir „Schleifen“ (i, i) diesmal zulassen. Gerichtete Graphen 12 / 62 Gerichtete Graphen: ein erstes Beispiel Der gerichtete Graph G = (V , E ) mit a b c wird repräsentiert durch V E Gerichtete Graphen := {a, b, c} und (a, b), (b, b), (b, c), (c, a), (a, c) . := 13 / 62 Darstellungen von Graphen Abstrakt, durch Angabe der Knotenmenge V und der Kantenmenge E . Beispiel: G1 = (V1 , E1 ) mit V1 := {a, b, c, d} und E1 := {(a, b), (a, c), (a, d), (b, b), (b, c), (d, b), (d, c)}. Der obige Graph G1 kann grafisch dargestellt werden durch a b d c oder, äquivalent dazu, durch a d b c Durch Adjazenzlisten und Adjazenzmatrizen: Siehe die Vorlesung „Datenstrukturen“ im zweiten Semester. Gerichtete Graphen 14 / 62 Gerichtete Graphen: Wichtige Begriffe Sei G = (V , E ) ein gerichteter Graph. Ist e = (i, j) ∈ E , so ist i der Ausgangsknoten von e und j der Endknoten von e, und wir sagen, dass i und j benachbart sind. I I i heißt ein direkter Vorgänger von j und j ein direkter Nachfolger von i. Eine Kante der Form (i, i) wird Schleife genannt. D.h.: Eine Schleife ist eine Kante, deren Ausgangs- und Endknoten identisch ist. Ein Knoten v ∈ V heißt inzident mit einer Kante e ∈ E , falls v der Ausgangs- oder der Endknoten von e ist. Der Ausgangsgrad von v in G (kurz: Aus-GradG (v )) ist die Anzahl der Kanten mit v als Ausgangsknoten. D.h.: Aus-GradG (v ) = |{e ∈ E : es ex. v 0 ∈ V s.d. e = (v , v 0 )}|. Der Eingangsgrad von v in G (kurz Ein-GradG (v )) ist die Anzahl der Kanten mit v als Eingangsknoten. D.h.: Ein-GradG (v ) = |{e ∈ E : es ex. v 0 ∈ V s.d. e = (v 0 , v )}|. Gerichtete Graphen 15 / 62 Ein Beispiel Für den Graphen G = a b gilt: Gerichtete Graphen Ein-GradG (a) = 0 Ein-GradG (b) = 2 Aus-GradG (a) = 1 Aus-GradG (b) = 1. 16 / 62 Wege in Graphen Wege in Graphen 17 / 62 Wege Sei G = (V , E ) ein (gerichteter oder ungerichteter) Graph. Ein Weg in G der Länge ` ist ein Tupel (v0 , . . . , v` ) ∈ V `+1 , für ein ` ∈ N, so dass für alle i ∈ N mit 0 6 i < ` gilt: falls G ein gerichteter Graph ist, so ist (vi , vi+1 ) ∈ E , falls G ein ungerichteter Graph ist, so ist {vi , vi+1 } ∈ E . Das Tupel (v0 , . . . , v` ) wird dann ein Weg der Länge ` von v0 nach v` genannt. Die Länge des Weges gibt nicht an, wie viele Knoten, sondern wie viele Kanten auf dem Weg durchlaufen werden. Wege in Graphen 18 / 62 Kreise 1 Ein Weg (v0 , . . . , v` ) heißt einfacher Weg, wenn kein Knoten mehr als einmal in dem Weg vorkommt (d.h. die Knoten v0 , . . . , v` sind paarweise verschieden, bzw. |{v0 , . . . , v` }| = ` + 1 gilt). 2 Ein Weg (v0 , . . . , v` ) heißt Kreis, wenn ` > 1 und v` = v0 ist. 3 Ein Kreis (v0 , . . . , v` ) heißt einfacher Kreis, wenn (v0 , . . . , v`−1 ) ein einfacher Weg ist und keine Kante mehrfach durchlaufen wird. D.h.: I In einem gerichteten Graphen G sind einfache Kreise genau die Wege der Form (v0 , . . . , v` ), für die gilt: ` > 1 und v` = v0 und |{v0 , . . . , v`−1 }| = `. I In einem ungerichteten Graphen G sind einfache Kreise genau die Wege der Form (v0 , . . . , v` ), für die gilt: ` > 3 und v` = v0 und |{v0 , . . . , v`−1 }| = `. Wege in Graphen 19 / 62 Wege und Kreise: Beispiele (1/2) Für den Graphen a b d c e gilt: (e, d, b, c, d) ist ein Weg der Länge 4, aber kein einfacher Weg. (d, b, c, d) ist ein einfacher Kreis. (e, d, a, b) ist ein einfacher Weg der Länge 3. (b, d, a) ist kein Weg. (a, b, c, d, b, c, d, a) ist ein Kreis, aber kein einfacher Kreis. Wege in Graphen 20 / 62 Wege und Kreise: Beispiele Für den Graphen (2/2) c a d b gilt: (a, b, c, a) ist ein einfacher Kreis. (c, d, c) ist ein Kreis, aber kein einfacher Kreis. (a, c, d) ist ein einfacher Weg der Länge 2. (c, b, a, c, d) ist ein Weg, aber kein einfacher Weg. Wege in Graphen 21 / 62 Das Königsberger Brückenproblem (1/2) In der Stadt Königsberg gab es im 18. Jahrhundert sieben Brücken über den Fluss Pregel, die die Ufer und zwei Inseln miteinander verbanden. Gibt es einen Spaziergang, der jede der sieben Brücken genau einmal überquert und zum Ausgangspunkt zurückkehrt? Wege in Graphen 22 / 62 Das Königsberger Brückenproblem (2/2) Eine Graph-theoretische Modellierung: Erfinde für jedes Ufer, jede Insel und jede Brücke einen Knoten, Kanten zeigen direkte Verbindungen an. Die „Pregel-Skizze“ wird also durch folgenden Graphen repräsentiert: GKönigsberg := Die Frage nach dem “Spaziergang” entspricht dann der Frage: Gibt es in GKönigsberg einen „Euler-Kreis“, also einen Kreis der jede Kante genau einmal durchläuft? Warum ist die Antwort negativ? Wege in Graphen 23 / 62 Routenplaner: Die Länge „gewichteter“ Wege Wie gehen Routenplaner vor, um schnellste Verbindungen zwischen einem Start und einem Ziel zu berechnen? Die relevanten Informationen werden in einen gerichteten Graphen gepackt. (a) Der gerichtete Graph: I I Kreuzungen oder Abfahrten sind die Knoten, Straßenabschnitte, die Knoten direkt miteinander verbinden, sind die gerichteten Kanten. (b) Wir versehen jede Kante mit geographischer Information. I I Für die Navigation: In welchem Stadtteil, Stadt, Bundesland oder Staat liegt der entsprechende Straßenabschnitt, welche Hausnummern kommen vor? Um schnellste Verbindungen zu berechnen: Weise jeder Kante eine Dauer zu, wenn der entsprechende Straßenabschnitt in Regelgeschwindigkeit gemäß den Verkehrsregeln durchfahren wird. Wie berechnet man den Graphen aus der Karte und wie berechnet man schnellste Verbindungen? Wege in Graphen Routenplaner 24 / 62 Ein Ausschnitt der Strassenkarte mit Einbahnstraßen Wege in Graphen Routenplaner 25 / 62 Der gerichtete Graph „auf“ der Karte Wege in Graphen Routenplaner 26 / 62 Der gerichtete Graph Wege in Graphen Routenplaner 27 / 62 Und wie bestimmt man schnellste Verbindungen? Was genau ist das zugrunde liegende Problem? (a) Für den gerichteten Graphen G = (V , E ) weist eine Funktion länge : E → R>0 jeder Kante eine nicht-negative Länge zu. (b) Für einen „Start“-Knoten s ∈ V und einen „Ziel“-Knoten t ∈ V bestimme einen Weg W = s → v1 → · · · → vk → t von s nach t kürzester Länge, wobei Länge(W ) = länge(s, v1 ) + länge(v1 , v2 ) + · · · + länge(vk , t). In den Veranstaltungen „Datenstrukturen“ und „Theoretische Informatik 1“ wird eine schnelle Lösung dieses „Kürzesten-Wege-Problems“ mit dem Algorithmus von Dijkstra beschrieben. :-))) Wege in Graphen Routenplaner 28 / 62 Graphen: Wichtige Anwendungsbeispiele Wir haben gerade die in einer Straßenkarte relevante Information durch einen gerichteten Graphen (mit Zusatzinformation) repräsentiert. In ähnlicher Weise lassen sich I I das Schienennetz der deutschen Bahn oder städtische S- und U-Bahn Netze veranschaulichen. In einem Computer-Netzwerk werden Computer durch Knoten und Netzwerkverbindungen durch ungerichtete Kanten repräsentiert. Im „Webgraphen“ repräsentieren die Knoten Webseiten und die gerichteten Kanten Hyperlinks. Binäre Entscheidungsgraphen (BDD’s) werden in der technischen Informatik als Datenstruktur für die kompakte Darstellung und effiziente Handhabung boolescher Funktionen eingesetzt. (Siehe z.B. die Vorlesung Hardwarearchitekturen und Rechensysteme.) Wege in Graphen Routenplaner 29 / 62 Suche in Graphen, bzw. wie findet man den Ausgang in einem Labyrinth? Wege in Graphen Suche in Graphen 30 / 62 Wie findet man Wege aus einem Labyrinth? Ein Auszug aus Umbert Eco’s „Der Name der Rose“. William von Baskerville und sein Schüler Adson van Melk sind heimlich in die als Labyrinth gebaute Bibliothek eines hochmittelalterlichen Klosters irgendwo im heutigen Norditalien eingedrungen. Fasziniert von den geistigen Schätzen, die sie beherbergt, haben sie sich nicht die Mühe gemacht, sich ihren Weg zu merken. Erst zu spät erkennen sie, dass die Räume unregelmäßig und scheinbar wirr miteinander verbunden sind. Man sitzt fest. Wege in Graphen Suche in Graphen 31 / 62 William erinnert sich „Um den Ausgang aus einem Labyrinth zu finden,“, dozierte William, „gibt es nur ein Mittel. An jedem Kreuzungspunkt wird der Durchgang, durch den man gekommen ist, mit drei Zeichen markiert. Erkennt man an den bereits vorhandenen Zeichen auf einem der Durchgänge, dass man an der betreffenden Kreuzung schon einmal gewesen ist, bringt man an dem Durchgang, durch den man gekommen ist, nur ein Zeichen an. Sind alle Durchgänge schon mit Zeichen versehen, so muss man umkehren und zurückgehen. Sind aber einer oder zwei Durchgänge der Kreuzung noch nicht mit Zeichen versehen, so wählt man einen davon und bringt zwei Zeichen an. Durchschreitet man einen Durchgang, der nur ein Zeichen trägt, so markiert man ihn mit zwei weiteren, so dass er nun drei Zeichen trägt. Alle Teile des Labyrinthes müßten durchlaufen worden sein, wenn man, sobald man an eine Kreuzung gelangt, niemals den Durchgang mit drei Zeichen nimmt, sofern noch einer der anderen Durchgänge frei von Zeichen ist.“ „Woher wißt Ihr das? Seid Ihr ein Experte in Labyrinthen?“ „Nein, ich rezitiere nur einen alten Text, den ich einmal gelesen habe.“ „Und nach dieser Regel gelangt man hinaus?“ „Nicht dass ich wüßte. Aber wir probieren es trotzdem.[...]“ Wege in Graphen Suche in Graphen 32 / 62 „Der Name der Rose“: Das Labyrinth Kann man vom Treppenaufgang V0 aus alle Räume Vi besuchen? @ Nordturm @ A V55@ @ H H B B V52 V35 A V17 V32 B B H @ H H H @ B @ @ V51 @ V16 B V1 V @ @ B @P 31 PP V @ PP 15 @ P P V53 V A 54 V30 V14 V29 V13 @ @ A V38 @ @ V0 @ H @ @ H @ @ @ @ @ @ @ @ V V18 @ 39 @ @ @ @ @ @ @ @ @ V19 H H @ V40 V2 V3 A H H V20 @ @ @ A V4 @ @ V36 Innenhof @ @ @ A V12 @ H H V 11 V28 @ @ V50 @ V10 @ @ @ V27 V49 @ V34 @ V26 @ @ V46 @ V48 @ @ V 47 @ @ Westturm Wege in Graphen Ostturm V37 V5 V21 V6 V22 P P PP P @ @ V7 PP B @ @ V23 B V8 V41 @ P V9 B PP @ @ @ P @ BB V24 V 42 B V 33 V25 B H B H @ V45 BB V43 @ A V44 @ Südturm @ Suche in Graphen 33 / 62 Das Labyrinth als ungerichteter Graph n 52 @ @ n 53 n 51 n 54 @ @ n 35 55n n n 15 31 n 18 n 19 n 32n 17 16n 1n 2n 3n @ @ n n 14 30 n 49 @ @ n 50 @ @ n 48 @ @ Wege in Graphen 0n @ @ 4n 20n n 38 @ @ n 40 n 39 6n 22n n n 12 28 n 10 n 9n 8n @ 11 @ @ n 26 n 25 n 24 n 34n 27 n 47 @ @ 5n 21n n n 13 29 @ 36n 37n @ @ 46n @ @ 7n 23n 45n @ @ Suche in Graphen 33n 44n n 41 @ @ n 43 n 42 34 / 62 Der Ariadne-Faden Geht das denn nicht viel einfacher? 1. Prinzessin Ariadne, Tochter des Königs Minos, hat Theseus den „Ariadne-Faden“ geschenkt, um den Minotauros in einem Labyrinth aufzuspüren und danach wieder aus dem Labyrinth herauszufinden. 2. Theseus hat den Ariadne-Faden während der Suche im Labyrinth abgerollt. I Nachdem der Minotauros getötet war, braucht er nur den Faden zurückverfolgen, um das Labyrinth wieder verlassen zu können. Aber wie durchsucht man das Labyrinth systematisch mit Hilfe eines Fadens? Wege in Graphen Suche in Graphen 35 / 62 Suche in Graphen: Tiefensuche Der Algorithmus „Tiefensuche“ implementiert und erweitert die Methode des Ariadne-Fadens. 1. Ganz zu Anfang fasse alle Knoten als „unmarkiert“ auf. // Wir besuchen stets nur unmarkierte Knoten. 2. Sobald wir einen unmarkierten Knoten v von einem Knoten u aus besuchen (sprich: Zimmer v betreten), I I markieren wir v als besucht und wiederholen unser Vorgehen rekursiv für alle mit v benachbarten Knoten (sprich: Zimmer). Wenn schließlich alle Nachbarn von v markiert sind, dann kehren wir zu u zurück: Wir benutzen den Ariadne-Faden. In der Vorlesung „Datenstrukturen“: Tiefensuche funktioniert und ist schnell. Labyrinth-Probleme „gibt es einen Weg vom Knoten u zu einem Ausgang v ?“ lassen sich effizient lösen :-))). Wege in Graphen Suche in Graphen 36 / 62 Zusammenhang Sei G = (V , E ) ein Graph und v ∈ V ein Knoten. (a) Wenn G ungerichtet ist, dann besteht die Zusammenhangskomponente von v aus allen, von v aus durch Wege erreichbaren Knoten. Der Graph G heißt zusammenhängend, wenn die Zusammenhangskomponente irgendeines Knotens aus allen Knoten von G besteht. (b) Wenn G gerichtet ist, dann besteht die starke Zusammenhangskomponente von v aus allen Knoten w , I I die sowohl von v aus erreichbar sind, die aber auch v selbst durch einen in w beginnenden Weg erreichen. G heißt stark zusammenhängend, wenn die starke Zusammenhangskomponente irgendeines Knotens aus allen Knoten von G besteht. Wege in Graphen Suche in Graphen 37 / 62 Zusammenhang: Beispiele Der Graph ist zusammenhängend, ist nicht zusammenhängend und besteht aus zwei Zusammenhangskomponenten. Der Graph ist nicht stark zusammenhängend, da es z.B. keinen Weg vom Knoten links oben zum Knoten links unten gibt. ist stark zusammenhängend. Wege in Graphen Suche in Graphen 38 / 62 Hamilton-Kreise Kreise Hamiltonkreise 39 / 62 Hamilton-Kreise und Hamilton-Wege Sei G = (V , E ) ein (gerichteter oder ein ungerichteter) Graph. (a) Ein Weg W = (v0 , . . . , v` ) heißt Hamilton-Weg, wenn jeder Knoten aus V genau einmal in W vorkommt. (b) Ein Weg W = (v0 , . . . , v` ) heißt Hamilton-Kreis, wenn ` > 1 und v` = v0 und (v0 , . . . , v`−1 ) ein Hamilton-Weg ist. Der Graph G a d b c e hat einen Hamilton-Weg, nämlich (e, c, d, a, b), aber keinen Hamilton-Kreis, da Aus-GradG (b) = 0 ist. Kreise Hamiltonkreise 40 / 62 Wo ist der Hamilton-Kreis? Kreise Hamiltonkreise 41 / 62 Hamilton-Kreise: Wie schwierig? Wir erhalten einen gerichteten oder ungerichteten Graphen mit mehreren Tausenden von Knoten: Wir sollen noch nicht einmal einen Hamilton-Kreis bestimmen, sondern nur die Frage beantworten, ob es einen Hamilton-Kreis gibt. Trauen Sie sich zu ein Programm zu schreiben, dass diese Frage zu ihren Lebzeiten beantwortet? In der Veranstaltung „Theoretische Informatik 1“ wird gezeigt, dass auch diese Frage, wie schon das Erfüllbarkeitsproblem KNF-SAT, NP-vollständig ist. :-((( Euler-Kreise, falls vorhanden, lassen sich hingegen effizient bestimmen. (Ein Euler-Kreis durchläuft alle Kanten genau einmal.) :-))) Kreise Hamiltonkreise 42 / 62 Zuordnungsprobleme Zuordnungsprobleme 43 / 62 Wer mag wen? In einem Tennisverein sollen die Vereinsmitglieder für ein Turnier zu Doppelpaarungen zusammengestellt werden. Dabei möchte man jeweils nur befreundete Personen als „Doppel“ zusammen spielen lassen. Wir modellieren die Aufgabenstellung durch den ungerichteten Graphen GT := (VT , ET ) mit VT := {x : x ist ein Vereinsmitglied} ET := {{x , y } : x und y sind befreundete Vereinsmitglieder}. Das Ziel: Finde eine größtmögliche Anzahl von Doppelpaarungen. D.h., Finde eine möglichst große Menge E 0 ⊆ ET , so dass kein Vereinsmitglied Endpunkt von mehr als einer Kante aus E 0 ist. Zuordnungsprobleme 44 / 62 Wer kann was? Eine Gruppe unterschiedlich ausgebildeter Piloten soll so auf Flugzeuge verteilt werden, dass jeder das ihm zugeteilte Flugzeug fliegen kann. Auch hier modellieren wir die Fragestellung durch einen ungerichteten Graphen GF := (VF , EF ) mit VF := {x : x ist ein Pilot} ∪ {y : y ist ein Flugzeug}, EF := {{x , y } : Pilot x kann Flugzeug y fliegen }. Das Ziel: Stelle einen Flugplan auf, so dass jeder Pilot das ihm zugeteilte Flugzeug fliegen kann. D.h.: Finde eine möglichst große Menge E 0 ⊆ EF , so dass kein Element aus VF Endpunkt von mehr als einer Kante in E 0 ist. Zuordnungsprobleme 45 / 62 Zuordungsprobleme Sei G = (V , E ) ein ungerichteter Graph. Wir nennen eine Kantenmenge E 0 ⊆ E ein Matching (bzw. eine Menge unabhängiger Kanten), falls kein Knoten aus V Endpunkt von mehr als einer Kante aus E 0 ist. Typischerweise, wie auch in den beiden Beispielen, möchte man ein möglichst großes Matching bestimmen. Manchmal sind die Kanten auch mit Gewichten markiert, um auszudrücken wie befreundet zwei Mitglieder sind oder wie gut sich ein Pilot mit einem Flugzeug auskennt. In diesem Fall möchte man ein möglichst schweres Matching bestimmen. In der Wahlpflichtveranstaltung „Approximationsalgorithmen“ (ab dem 4. Semester) wird gezeigt, dass ein schwerstes Matching effizient bestimmt werden kann. :-))) Zuordnungsprobleme Matching 46 / 62 Matchings In einem Tennisverein mit 10 Mitgliedern und „Freundschaftsgraph“ 6 2 7 3 GT 1 = 8 4 5 9 10 sind z.B. die folgenden beiden Kantenmengen Matchings: 2 6 2 7 8 und 1 4 8 4 5 9 10 Zuordnungsprobleme 7 3 3 1 5 6 9 10 Matching 47 / 62 Sitzordnung: Wer neben wem? (1/2) Die Gäste einer Familienfeier sollen so an einer hufeisenförmigen Tafel platziert werden, dass niemand neben jemanden sitzt, den er nicht leiden kann. 1. Stelle den Konfliktgraphen G = (V , E ) auf, wobei V := {x : Person x soll zur Feier kommen} und Person x kann Person y nicht leiden oder E := {x , y } : Person y kann Person x nicht leiden d.h. Kanten im Konfliktgraphen zeigen auf, wer im Konflikt mit wem steht. Zuordnungsprobleme Wer neben wem? 48 / 62 Sitzordnung: Wer neben wem? (2/2) 2. Bilde das Komplement des Konfliktgraphen, d.h. betrachte den Graphen G̃ = (Ṽ , Ẽ ) mit Ṽ := V und Ẽ := {x , y } : x , y ∈ V , x 6= y , {x , y } ∈ /E . Kanten in G̃ zeigen an, wer prinzipiell neben wem platziert werden könnte. 3. Suche einen Hamilton-Weg in G̃. Wenn (v1 , . . . , vn ) (mit n = |Ṽ |) ein Hamilton-Weg in G̃ ist, dann kann man die Sitzordnung folgendermaßen festlegen: v4 v5 v3 v6 v7 v2 v1 Zuordnungsprobleme Wer neben wem? vn 49 / 62 Das Färbungsproblem Das Färbungsproblem 50 / 62 Färbung von Knoten Sei G = (V , E ) ein ungerichteter Graph. Eine Funktion m : V → N heißt eine (konfliktfreie) Färbung, wenn für jede Kante {x , y } ∈ E gilt: m(x ) 6= m(y ). Die Größe von Bild(m) ist die Anzahl der Farben. Die minimale Farbenzahl, die für eine konfliktfreie Färbung ausreichend ist, heißt die chromatische Zahl von G (kurz: χ(G)). Eine Familienfeier mit Gästen A, B, C, D, E, F, G, H, I und dem Konfliktgraphen: A B C D E F G H I Was ist die chromatische Zahl? Das Färbungsproblem 51 / 62 Wieviele Farben? Eine konfliktfreie Färbung mit drei Farben ist möglich: A 1 B 3 D C 3 E F 1 2 1 2 3 2 G H I Drei Farben sind auch notwendig, weil der Konfliktgraph ein Dreieck, z.B. E D H als Teilgraph enthält. Das Färbungsproblem 52 / 62 Das 4-Farben Problem Wie viele Farben sind nötig, um jede Landkarte so einzufärben, dass zwei Staaten mit gemeinsamer Grenze durch unterschiedliche Farben dargestellt werden. 1976 wurde bewiesen, dass vier Farben ausreichen. Der Beweis basiert auf einer Fallunterscheidung mit mehr als 1000 Fällen, die mit Hilfe eines Computerprogramms analysiert wurden. Wir modellieren eine Landkarte durch einen ungerichteten Graphen, dessen Knoten die Staaten repräsentieren, und bei dem zwei Staaten genau dann durch eine Kante miteinander verbunden sind, wenn sie eine gemeinsame Grenze besitzen. Finde eine konfliktfreie Färbung mit möglichst wenigen Farben. Das Färbungsproblem Das 4-Farben Problem 53 / 62 Färbung von Landkarten Wir betrachten eine kleine Landkarte und ihren Konfliktgraphen: c b c f b a a f d e e d Knoten = b Staaten Kanten = b Staaten mit gemeinsamer Grenze Jeder der vier Knoten a, b, c, d ist mit jedem anderen benachbart. ⇒ Eine konfliktfreie Färbung muss den vier Knoten vier verschiedene Farben zuordnen. — für a, b, c, d etwa rot, gelb, grün, blau. Da f außerdem mit b, c, d benachbart ist, muss f dann wieder rot gefärbt sein; e kann jede Farbe außer blau erhalten. Das Färbungsproblem Das 4-Farben Problem 54 / 62 Planare Graphen Die aus Landkarten entstehenden Konfliktgraphen sind planar. Ein Graph G heißt planar, wenn er so in die Ebene gezeichnet werden kann, dass seine Kanten sich nicht kreuzen. Beispiele für planare Graphen sind: Der dritte Graph ist planar, da er wie der erste Graph kreuzungsfrei in die Ebene gezeichnet werden kann. Beispiele für nicht-planare Graphen sind: Das Färbungsproblem Planare Graphen 55 / 62 Anwendungen des Färbungsproblems Knoten Staat auf Karte Gast auf Feier Vorlesung Prozess | | | | | | | | | Kanten gemeinsame Grenze können sich nicht leiden gemeinsame Hörer benötigen dieselbe Ressource | | | | | | | | | Farbe/Markierung Farbe Tischnummer Termin Ausführungstermin Aber leider ist schon die Frage, ob 3 Farben ausreichen, NP-vollständig. :-((( Das Färbungsproblem Anwendungen 56 / 62 Isomorphie von Graphen Isomorphie 57 / 62 Gleichheit und Isomorphie von Graphen (1/2) G = (V , E ) und G 0 = (V 0 , E 0 ) seien zwei (gerichtete oder ungerichtete) Graphen. (a) G heißen gleich (kurz: G = G 0 ), falls sie dieselbe Knotenmenge und dieselbe Kantenmenge besitzen. D.h.: G = G 0 :⇐⇒ V = V 0 und E = E 0 . (b) G und G 0 heißen isomorph (kurz: G ∼ = G 0 , in Worten: G ist isomorph zu G 0 ), falls es eine bijektive Abbildung f : V → V 0 gibt, so dass für alle Knoten i ∈ V und j ∈ V gilt: I Falls G und G 0 gerichtet sind: (i, j) ∈ E ⇐⇒ I f (i), f (j) ∈ E 0 . Falls G und G 0 ungerichtet sind: {i, j} ∈ E ⇐⇒ {f (i), f (j)} ∈ E 0 . Eine solche Abbildung f wird Isomorphismus von G nach G 0 genannt. Isomorphie 58 / 62 Gleichheit und Isomorphie von Graphen (2/2) Zwei (gerichtete oder ungerichtete) Graphen G1 und G2 sind genau dann isomorph, wenn G1 und G2 gleich sind, nachdem die Knoten von G2 umbenannt werden. Die beiden Graphen 2 b 1 3 4 und a d c sind nicht gleich, da sie unterschiedliche Knotenmengen besitzen, wohl aber isomorph. Isomorphie 59 / 62 Gleichheit und Isomorphie: Weitere Beispiele G0 G G 00 2 1 3 4 a b c d a b c d Dann gilt: G∼ = G 0 via f : {1, 2, 3, 4} → {a, b, c, d} mit f (1) = c, f (2) = d, f (3) = a, f (4) = b. G 0 ist nicht isomorph zu G 00 (kurz: G 0 G 00 ), denn G 00 hat mehr Kanten als G 0 . Isomorphie 60 / 62 Wichtige Graphklassen Isomorphie 61 / 62 Planare, vollständige, bipartite und kreisfreie Graphen (a) Planare Graphen haben wir schon in der Diskussion des Färbungsproblems kennengelernt. (b) Der vollständige Graph Kn = ({1, . . . , n}, En ) mit n Knoten ist ein ungerichteter Graph: Kn besitzt für je zwei verschiedene Knoten eine Kante, es ist En = { {i, j} : 1 6 i 6= j 6 n }. (c) Ein ungerichteter Graph G = (V , E ) heißt bipartit, wenn die Knotenmenge V = V1 ∪ V2 so in zwei disjunkte Teilmengen V1 , V2 zerlegt werden kann, dass alle Kanten genau einen Endpunkt in V1 und einen Endpunkt in V2 besitzen. I Bipartite Graphen tauchen häufig in Zuordnungsproblemen auf. (d) Ein gerichteter Graph ohne Kreise heißt azyklisch. I Eine Menge V von Aufgaben mit Präzedenzen E ⊆ V × V definiert einen azyklischen Graph, wenn die Aufgaben ohne Deadlock ausführbar sind. Und wenn ein ungerichteter Graph keine Kreise besitzt? Isomorphie 62 / 62