12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Agenda • Graphen • Übung • Graphenalgorithmen • Übung 2 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Beispiele für Graphen aus dem Alltag U-Bahn Plan: „Wie komme ich von A nach B?“ (Quelle: RMV) Stammbaum: „Wer ist mit wem verwandt?“ (Quelle: Wikimedia) 3 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Graphen Knoten ungerichtete Kante • Graph besteht aus Knoten und Kanten • Ungerichteter Graph: Kanten haben keine Pfeilrichtung • Gerichteter Graph: Kanten mit Pfeilreichtung • Gewichteter Graph: Kanten haben einen numerischen Wert (Gewicht) • Ungewichteter Graph: Kanten haben keinen Wert (bzw. 1 als Standardwert) Siehe http://de.wikipedia.org/wiki/Graph_(Graphentheorie) 4 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Gewicht Frankfurt Mannheim Würzburg Stuttgart Kassel Karlsruhe Erfurt Nürnberg Augsburg München 5 85 217 Kantengewichte 173 85 217 München Augsburg Nürnberg Erfurt Karlsruhe Kassel Stuttgart Würzburg Knoten Mannheim Frankfurt Repräsentation von Graphen: Adjazenzmatrix 80 186 103 183 173 502 80 250 186 103 183 167 84 250 502 167 84 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Agenda • Graphen • Übung • Graphenalgorithmen • Übung 6 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Übung: Adjazenzmatrix 7 1. Entwickeln Sie eine Klasse Graph 2. Dargestellt werden sollen ungerichtete, gewichtete Graphen 3. Repräsentieren Sie den Graphen intern als Adjazenzmatrix Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Agenda • Graphen • Übung • Graphenalgorithmen • Übung 8 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Durchsuchen von Graphen: Breitensuche • Durchsuchen in konzentrischen Kreisen ausgehend von einem Knoten • z.B. Wegsuche von Frankfurt nach Stuttgart 0. 1a 3b 1b 1c 2a 2b 2c 3a 2d Siehe http://de.wikipedia.org/wiki/Breitensuche 9 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Durchsuchen von Graphen: Tiefensuche 0. • Durchsuchen mit Backtracking • Z.B. Weg von Frankfurt nach Stuttgart 3c 1a 4a 3b 1b 2a 3a 2b Siehe http://de.wikipedia.org/wiki/Tiefensuche 10 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 2c Kürzeste Wegsuche nach Dijkstra 1. Weise allen Knoten die beiden Eigenschaften "Distanz" und "Vorgänger" zu. Initialisiere die Distanz im Startknoten mit 0 und in allen anderen Knoten mit unendlich. 2. Solange es noch unbesuchte Knoten gibt, wähle darunter denjenigen mit minimaler Distanz aus und 1. Speichere, dass dieser Knoten schon besucht wurde 2. Berechne für alle noch unbesuchten Nachbarknoten die Summe des jeweiligen Kantengewichtes und der Distanz im aktuellen Knoten 3. Ist dieser Wert für einen Knoten kleiner als die dort gespeicherte Distanz, aktualisiere sie und setze den aktuellen Knoten als Vorgänger • Siehe http://de.wikipedia.org/wiki/Dijkstra-Algorithmus 11 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Agenda • Graphen • Übung • Graphenalgorithmen • Übung 12 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013 Übung • Erweitern Sie die Graph-Implementierung aus der ersten Übung • Entwickeln Sie Methoden zum Anlegen eines ungerichteten, gewichteten Graphen • Entwickeln Sie eine Methode zum Finden eines Wegs von Knoten A zu Knoten B auf Basis der Breitensuche 13 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt. www.fbi.h-da.de/~b.humm. Wintersemester 2012 / 2013