Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Minimum Spanning Tree: MST
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Programmieren 2 Future Car Projekt Praktikum 6 - Graphen
Programmieren 2 Future Car Projekt Praktikum 6
Programmieren 2 Future Car Projekt Praktikum 6
FB Informatik Prof. Dr. R.Nitsch Programmieren 2 Future Car Projekt Praktikum 6 - Graphen Reiner Nitsch - Speichern von Graphen -
Informierte Suche.
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 – Graphen)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26 - Graphen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 - Graphen)
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Katja Losemann Chris Schwiegelshohn
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Vortrag über Graphen Von Jörg Hendricks.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Effiziente Algorithmen
Effiziente Algorithmen
Diskrete Mathematik II
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Animation von Dijkstra
Algorithmus von Dijkstra. 0 Algorithmus von Dijkstra s Priority Queue PQ: Knoten, Priorität Weglänge Kandidatenmenge.
Animation von Dijkstra
Jan Hinzmann – – GIS Praxis II – Slide 1/10 Der Algorithmus von Dijkstra (Berechnung kürzester Wege in bewerteten Graphen) GIS Praxis II, Jan Hinzmann,
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Diskrete Mathematik II
Analyse der Laufzeit von Algorithmen
Die Tiefensuche Vorgedanke: Die Sage von Theseus und dem Minotaurus
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd Foliendesign:
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Diskrete Mathe II Übung IKG - Übung Diskrete Mathe II – Jörg Schmittwilken 2 Gruppeneinteilung Gruppe A: Mo 12:00 – 12:45 Uhr –bis einschließlich.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Programmiersprachen II Graph_Algorithmen Gewichtete Graphen - Minimum Spanning Tree und shortest path aus Implementierungssicht Prof. Dr. Reiner Güttler.
Programmiersprachen II Graph_Algorithmen Einführung Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Adiazenzmatrix des Graphen
Der Dijkstra-Algorithmus
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
 Präsentation transkript:

Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann

Kurze Wiederholung (Gerichtete) Graphen, Knoten, Kanten, Gewichte Adjazenzmatrix, Adjazenzlisten, doppelt verkettete Kantenlisten Durchlaufordnungen: Besuchen aller Knoten eines Graphen in bestimmter Reihenfolge: Breitensuche: Brüder eines Knotens vor den Söhne Tiefensuche: Söhne eines Knotens vor den Brüder Allgemeiner Besuchsalgorithmus Verwendung eines Stapels: Tiefensuche Verwendung einer Schlange: Breitensuche

Expansion eines Graphen in einen Baum Sei G = (V, E) ein gerichteter Graph und v ein Knoten aus V. Dann ist die Expansion X(v) von G in v wie folgt definiert: Falls v keine Nachfolger hat, so ist X(v) der Baum, der nur aus dem Knoten v besteht. Falls v1, …, vk die Nachfolger von v sind, so ist X(v) der Baum <v, X(v1), …, X(vk)>. v X(v1) X(v1) X(v1)

Beispiel: Baumexpansion eines Graphen 1 2 4 3 5

Tiefendurchlauf: DFS rekursiv Rekursive Formulierung des Tiefendurchlaufs: DFS(v): Markiere v als „besucht“ und füge v zu R hinzu; for each jede von v ausgehende Kante (v, v‘) do: if v‘ ist nicht „besucht“ then DFS(v‘)

Tiefendurchlauf: DFS mit Stapel Formulierung des Tiefendurchlaufs mit Hilfe eines Stapels S: DFS(s): Initialisiere S als Stapel mit einzigem Element s; while S ≠  do {Nehme oberstes Element u von S herunter; if besucht(u) = false then { setze besucht(u) = true; for each Kante (u, v), die von u ausgeht do stapele v auf S } } /* end while

Beispiel 1 2 3 4 6 8 5 7

Breitendurchlauf: BFS mit Schlange Q BFS(s): Setze besucht(s) = true und für alle anderen Knoten v setze besucht(v) = false; Setze Q = {s}; Initialisiere aktuellen BFS-Baum T =  ; while Q ≠  do {entferne erstes Element u von Q; betrachte jede von u ausgehende Kante (u, v): if besucht(v) = false then {setze besucht(v) = true; füge Kante (u, v) zum BFS-Baum T hinzu; füge v am Ende von Q ein} } */ end while

Beispiel 1 2 3 4 6 8 5 7

Dijstra‘s 1-to-all Shortest-Path-Algorithmus Idee: Lasse ausgehend von einem Startknoten s einen Teilgraphen von Knoten mit bereits bekannter minimaler Distanz zu s wachsen. Grüne Knoten: Alle Kanten zu Nachfolgerknoten wurden bereits betrachtet; diese liegen daher im bereits erkundeten Teilgraphen und können grün oder gelb sein. Gelbe Knoten: Bilden den Rand des bereits erkundeten Teilgraphen; für sie sind die ausgehenden Kanten noch nicht betrachtet worden. In jedem Schritt wird der gelbe Knoten mit minimalem Abstand von s ins Innere des Teilgraphen übernommen, also grün gefärbt; seine Nachfolgerknoten werden, soweit sie noch nicht im Teilgraphen liegen, zu neuen gelben Knoten. Für gelbe Knoten, die so erneut erreicht wurden, sind die für sie bisher bekannten kürzesten Pfade ggfs. zu korrigieren.

Algorithmus Dijkstra(v) (Formulierung nach Güting/Dieker 2003) GRÜN = ; GELB = {v}; dist (v) = 0; while GELB ≠  do {wähle w  GELB so, dass für alle w‘ GELB: dist (w) ≤ dist (w‘); färbe w grün; for each wi  succ (w) do if wi  (GELB  GRÜN) /* noch nicht besuchter Knoten*/ then färbe die Kante (w, wi) rot; färbe wi gelb; dist (wi) = dist (w) + cost (w, wi) elseif wi  GELB /*wi erneut erreicht*/ then if dist (wi) > dist (w) + cost (w, wi) then färbe die Kante (w, wi) gelb; färbe die bisher rote Kante zu wi gelb; dist (wi) = dist (w) + cost (w, wi) else färbe (w, wi) gelb end if /* wi  GRÜN*/ end if end for }end while

Idee des Verfahrens von Dijkstra Anfangs ist die Entfernung d(v) aller von s verschiedener Knoten . Die Entfernung von s von sich selbst ist natürlich 0. Wir betrachten eine Menge PQ von Knoten-Entfernungs-Paaren (v, d(v)), die wir mit {(s; 0)} initialisieren. Dann wird PQ nach dem Prinzip ”Knoten mit kürzester Distanz von s zuerst“ schrittweise bearbeitet, bis PQ leer ist: 1. Entferne Knoten v aus PQ mit minimaler Distanz d(v) von s, d(v) ist der kürzeste Distanz von s nach v. 2. Für jeden Knoten w V mit (v,w) E verfahre wie folgt: (a) Falls (w, d(w)) PQ, ersetze (w, d(w)) durch (w, min{d(w); d(v) + c(v,w)}). (b) Falls w nicht in PQ enthalten ist, füge (w, (d(v) + c(v,w)) in PQ ein.

Beispiel A 9 3 F B 5 2 2 1 10 C 4 E 6 D