Graphen - fbi.h-da.de - Hochschule Darmstadt

Werbung
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
Herunterladen