Graphen Graphen werden häufig als Modell für das Lösen eines Problems aus der Praxis verwendet, wie wir im Kapitel 1 gesehen haben. Der Schweizer Mathematiker Euler hat als erster Graphen verwendet, um das Königsberger Brückenproblem zu lösen. Gesucht war ein geschlossener Weg (d.h. Startpunkt=Endpunkt), der genau einmal über jede Königsberger Brücke führt (vergl. Abb. 7.1 p. 138). Euler hat das Problem abstrahiert und dabei die Graphentheorie erfunden. Abbildung 7.2 p. 138 ist ein abstraktes Modell der Abbildung 7.1 Ein Graph G =(V,E) besteht aus einer Menge V von Knoten (englisch vertexes) und einer Menge E von Kanten (englisch edges), welche einige der Knoten verbinden. Bsp. Abbildung 7.3, p. 139 ist ein Graph mit 5 Knoten und 6 Kanten. Im Gegensatz zu einem Digraph sind die Kanten bei einem Graphen nicht gerichtet. Ein Graph, in dem es einen Weg gibt, der am selben Knoten beginnt und endet, und der jede Kante genau einmal durchläuft, heisst Eulerscher Graph. Knoten dürfen dabei mehrmals durchlaufen werden. Versuchen Sie im Graphen in Abb. 7.2 einen Eulerschen Weg zu finden. Da der Start- und Schlussknoten identisch sind, so müssen für einen Eulerschen Weg bei jedem Knoten eine gerade Anzahl Kanten zusammenlaufen. Bei nur einer Kante komme ich nicht mehr weg, bei 3 Kanten komme ich das zweite Mal nicht mehr weg. Euler konnte auch die Umkehrung beweisen. Und somit gilt: Ein Graph besitzt genau dann einen Eulerschen Weg, wenn der Grad jedes Knoten (d.h. die Anzahl der im Knoten zusammenlaufenden Kanten) gerade ist. Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -1- Definitionen Ein schlichter Graph ist ein Graph ohne Schlingen (kein Knoten ist durch eine Kante mit sich selber verbunden) und ohne Mehrfachkanten (kein Knotenpaar ist durch zwei Kanten verbunden) In einem schlichten Graphen heissen zwei Knoten benachbart (oder adjazent), wenn sie durch eine Kante verbunden sind Die Menge E der Kanten bestehend aus je 2 benachbarten Knoten bildet eine Relation auf der Menge der Knoten V. Zeigen Sie, dass diese Relation für einen schlichten Graphen symmetrisch aber nicht reflexiv ist. Die logische Matrix zur Kantenrelation heisst Adjazenzmatrix. Lesen Sie das Beispiel 7.1 p. 139 Ein Teilgraph eines Graphen G = (V, E) ist ein Graph, welcher aus einem Teil der Knoten von G und einem Teil der Kanten von G besteht. D.h. G‘ = (V‘,E‘) ist Teilgraph von G = (V,E) falls V‘⊆V und E‘⊆E Lesen Sie das Beispiel 7.2 p. 140 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -2- 1 Definitionen 2 Ein Weg der Länge k in einem Graphen ist eine Folge von k verschiedenen Knoten, zwei aufeinander folgende jeweils durch eine Kante verbunden. Ein Zyklus oder Kreis ist ein Weg mit Anfangsknoten gleich Endknoten, ohne dass ein anderer Knoten mehrmals durchlaufen wird. Lesen Sie das Beispiel 7.3 p. 141 Ein Graph, der keine Zyklen enthält, heisst azyklischer Graph. Ein Graph ist zusammenhängend, wenn jedes Paar von Knoten durch einen Weg verbunden ist. Jeder nicht-zusammenhängende Graph kann in zusammenhängende Teilgraphen zerlegt werden. Der Zusammenhangsalgorithmus p. 141 unten berechnet die Anzahl zusammenhängende Teilgraphen (die Konnektivitätszahl des Graphen) Lesen Sie den Algorithmus Lesen Sie das Beispiel 7.4 p. 142 Lösen Sie die Aufgaben 7.1-7.2 p. 153 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -3- 7.2 Hamiltonsche Graphen Ein Hamiltonscher Zyklus eines Graphen ist ein geschlossener Weg, welcher genau einmal durch jeden Knoten führt. Was ist der Unterschied zum Eulerschen Weg? Ein Graph der einen Hamiltonscher Zyklus besitzt heisst Hamiltonscher Graph. Hamiltonsche Zyklen spielen z.B. bei der Planung von Strassen- oder Telekommunikationsnetzen eine Rolle. Ein Graph heisst vollständig, wenn jeder Knoten mit jedem andern durch eine Kante direkt verbunden ist (benachbart ist). Vollständige Graphen sind immer hamiltonsch. Ich kann die Knoten in jeder beliebigen Reihenfolge durchlaufen, da jeder mit jedem verbunden ist. Finden Sie zum vollständigen Graphen in Abb. 7.8 p. 143 einen Hamiltonschen Zyklus Lesen Sie die Beispiele 7.5 p. 144 Lösen Sie die Aufgaben 7.3-7.7 p. 153-55 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -4- 2 Das Problem des Handlungsreisenden Viele praktische Anwendungen das Hamiltonschen Zyklus lassen sich auf das klassischen Problem des Handlungsreisenden zurückführen: Ein Handlungsreisender muss eine Anzahl Städte besuchen. Gesucht ist ein Weg der genau einmal durch jede Stadt führt und die kleinsten Reisekosten aufweist, wenn die Reisekosten zwischen je 2 Städten bekannt sind. Es ist kein effizienter Algorithmus bekannt. Ein ineffizienter Algorithmus mit Ordnung O(2n) bestünde im Ausprobieren aller möglichen Wege. Der Algorithmus des nächsten Nachbars liefert einen guten, wenn auch in der Regel nicht optimalen Weg. Lesen Sie den Algorithmus auf Seite 145 unten Lesen Sie das Beispiel 7.6 p. 146 Lösen Sie die Aufgaben 7.8 p. 155 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -5- 7.3 Bäume Eine wichtige Klasse von Graphen sind Bäume. Ein Baum ist ein zusammenhängender, nicht-zyklischer Graph. D.h. jeder Knoten ist mit jedem andern über einen Weg verbunden und der Graph enthält keine Zyklen. Es gibt verschiedene Möglichkeiten um zu beweisen, dass ein Graph G mit n Knoten und m Kanten ein Baum ist. Jede der folgenden Bedingungen genügt, dass ein Graph ein Baum ist: 1. zwischen zwei beliebigen Knoten gibt es genau einen Weg 2. G ist zusammenhängend und die Anzahl Kanten m ist gleich die Anzahl Knoten n minus 1: m = n-1 3. G ist zusammenhängend und das Entfernen einer einzigen beliebigen Kante macht ihn unzusammenhängend 4. G ist azyklisch und das Hinzufügen einer einzigen beliebigen Kante macht ihn zyklisch Lesen Sie das Beispiel 7.7 p. 147 wo die Methode 2 bewiesen ist Lösen Sie die Aufgaben 7.9-10 p. 156 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -6- 3 Spannbaum Jeder zusammenhängende Graph enthält Bäume als Teilgraphen Ein Teilgraph eines Graphen G, welcher ein Baum ist und alle Knoten von G enthält, heisst Spannbaum – d.h. er „spannt“ den Graphen auf. Lesen Sie im Abschnitt p. 148 oben, wie ein Spannbaum konstruiert wird Lesen Sie das Beispiel 7.8 p. 148 Die bekannteste Anwendungen der Konstruktion eines Spannbaumes ist das Problem der minimalen Verbindungen. Dabei soll ein Schienennetz gebaut werden, das eine vorgegebene Gruppe von Städten miteinander verbindet, so dass die Baukosten minimal sind. Ein Spannbaum dessen Summe der Kantengewichte minimal ist heisst minimaler Spannbaum (MST: minimal spanning tree). Beim Problem der minimalen Verbindungen ist also ein minimaler Spannbaum gesucht. Lesen Sie den Algorithmus zur Konstruktion eines minimalen Spannbaums p. 149 Lesen Sie das Beispiel 7.9 p. 149-50 Lösen Sie die Aufgaben 7.11-13 p. 156-57 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -7- Wurzelbaum, Teilbaum Bäume eigenen sich für die Darstellung hierarchischer Informationen wie ein Organigramm oder ein Stammbaum. Lesen Sie die Abbildung 7.15 p. 150 unten Solche Bäume bezeichnet man als Wurzelbäume, d.h. sie besitzen einen herausragenden Knoten, der als Wurzel des Baumes bezeichnet wird, z.B, der Chef oder der Stammvater. Die Wurzel wird normalerweise zuoberst gezeichnet und die Knoten je nach Hierarchie darunter. Knoten die unmittelbar unter einem Knoten liegen und mit diesem direkt verbunden sind heissen dessen Kinder. Die Kinder der Wurzel sind selber wieder Wurzeln von Teilbäumen (vergl. Abb. 7.17). Die untersten Knoten, welche keine Kinder besitzen, heissen Blätter. In der Informatik sind binäre Wurzelbäume besonders wichtig. Bei diesen hat jeder Knoten höchstens zwei Kinder. Lesen Sie das Beispiel 7.10 p. 152 Lösen Sie die Aufgaben 7.14 p. 157 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -8- 4 7.5 Anwendung: Binärer Suchbaum Binäre Wurzelbäume sind besonders gut geeignet für die geordnete Ablage von sortierbaren Daten, z.B. von alphabetisch geordneten Wörtern. Abbildung 7.26 p. 160 ist ein Beispiel für die Ablage der Wörter eines Satzes in einem binären Wurzelbaum. Dabei verlangen wir, dass jeder Dateneintrag im linken Teilbaum eines Knotens v in der alphabetischen Ordnung vor dem in v abgelegten Wort stehen soll. Beispiel: HEUTE und EINE steht in der alphabetischen Sortierung vor MEIN. Ein nach dieser Regel aufgebauter Baum heisst binärer Suchbaum. Das Anwendungsbeispiel besteht aus den nach Namen organisierten Datensätzen der Studenten einer Universität, für welche die folgenden Operationen untersucht werden: • Suche eines Namen im binären Suchbaum • Einfügen/Ablegen eines Namen im binären Suchbaum • Drucken der sortierte Liste der Namen eines binären Suchbaums Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -9- Suche im Binärbaum Der Algorithmus Suche bestimmt, ob ein eingegebener Begriff ein Knoten in einem gegebenen Binärbaum ist, indem er den Suchbegriff zuerst mit der Wurzel des Baums vergleicht und dann je nachdem, ob der Suchbegriff vor oder nach der Wurzel kommt im linken oder rechten Teilbaum weitersucht. Es ist ein rekursiver Algorithmus. D.h. die Suche in einem linken oder rechten Teilbaum ist identisch mit dem Suchalgorithmus im ganzen Baum. Lesen Sie den Suchalgorithmus auf Seite 161 Lesen Sie die Aufgabe 1 Seite 162 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -10- 5 Einfügen im Binärbaum Der Algorithmus Einfügen fügt einen eingegebener Begriff als neuen Knoten in einen Binärbaum ein, indem er den Binärbaum hinunter geht und den Begriff als Blatt am richtigen Ort gemäss den Regeln einfügt. Lesen Sie den Suchalgorithmus auf Seite 162 Lesen Sie die Aufgabe 2 Seite 163 Legen Sie den Satz aus Abbildung 7.26 in einen Binärbaum ab Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -11- Ordnen im Binärbaum Der Algorithmus Orden druckt alle Einträge in einem Binärbaum in der ihrer Ordnung entsprechenden Reihenfolge aus. Auch er ist rekursiv, indem er zuerst den linken Teilbaum ordnet, dann die Wurzel druckt und schliesslich den rechten Teilbaum ordnet. Lesen Sie den Ordungsalgorithmus auf Seite 164 Lesen Sie die Aufgabe 3 Seite 165 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -12- 6 Aufgaben bis zur Prüfung Lesen Sie das Skript nochmals durch. Lösen Sie die darin angegebenen Übungen aus dem Buch fertig. Lesen Sie Haggarty Kap. 7 Markieren Sie im Taschenbuch der Mathematik die behandelten Formeln mit Leuchtstift: p. 361-68 Lösen Sie die prüfungsähnlichen Aufgaben Bei Problemen Mail an [email protected] oder [email protected] Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -13- Ziele • • • • • • • • • • Die Studierenden kennen die Definition eines Graphen als Menge von Knoten und Kanten, eines Eulerschen Graphen, einen schlichten Graphen, einen Teilgraph und den Grad eines Knoten Sie können die Adjazenzmatrix einen Graphen aufstellen Sie kennen die Begriffe Weg, Zyklus, azyklischer, zusammenhängender Graph. Sie kennen die Definition eines Hamilton‘schen Graphen und eines vollständigen Graphen. Sie können den Algorithmus des nächsten Nachbars anwenden für die Bestimmung eines suboptimalen Hamilton‘schen Graphen mit minimalen Gesamtgewicht Sie kennen den Begriff des Baumes mit seinen verschiedenen hinreichenden Bedingungen, dass ein Baum ein Spannbaum ist Sie können den Algorithmus für die Bestimmung eines minimalen Spannbaums anwenden Sie kennen die Begriffe Wurzelbaum, Kinder, Blätter, binärer Wurzelbaum Sie kennen das Handschlaglemma Sie kennen die Anwendung der Graphentheorie bei binären Suchbäumen Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -14- 7 Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block 11 -15- 8