Der Dijkstra-Algorithmus

Slides:



Advertisements
Ähnliche Präsentationen
Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
Advertisements

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Algorithm Engineering
Routing – Routing Protokolle
Berechne den optimalen (kürzesten, schnellsten) Weg
Single-Source Shortest Paths: SSSP
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Zerlegung von Graphen.
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Graphalgorithmen ( elementare A. )
Pathfinding Universität zu Köln
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Approximationsalgorithmen …liefern in polynomieller.
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 -
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 - Graphen)
Diskrete Mathe II Übung
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik 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
Effiziente Algorithmen
Diskrete Mathematik II
Diskrete Mathematik II
Universität zu Köln Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung Wintersemester 2011/2012 Dozent: Prof. Dr. phil. Manfred Thaller.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
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,
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Datenstrukturen und Algorithmen in Open Street Map
Very Large-Scale Neighborhood Search
Methodische Grundlagen und Graphen
Minimal spannende Bäume
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd Foliendesign:
0: Initialisierung Startknoten als Arbeitsknoten und als definitiv markieren Restliche Knoten als unerreichbar markieren (d=∞) Aktuelle Reisezeit zum Startknoten.
Routenplanung querfeldein - Geometric Route Planning
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.
Seminarvortrag über LOG-SPACE von Rasmus Krause
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.
Graphen.
Addieren und Subtrahieren von rationalen Zahlen
ADDITION von natürlichen Zahlen
Referenten: Moritz S., Ina B. und Sebastian R.
Projekt Graphentheorie Eulerpfad
Der Algorithmus nach Dijkstra
Effiziente Algorithmen und Datenstrukturen I Kapitel 8: Kürzeste Wege
Graphen.
TexPoint fonts used in EMF.
Zusammenfassung Königsberger Brückenproblem Planare Graphen
Verhalten eines Graphen im Unendlichen: der limes
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Der Dijkstra-Algorithmus Von einem gegebenen Startknoten aus: die kürzesten Wege zu allen anderen Knoten

B A B C D E F 4 1 C D 2 3 A 4 5 2 1 F E

A B C D E F B C D A F E Vorarbeit 1: setze jeden Knoten als unbesucht 4 1 C D 2 3 A 4 5 2 1 F E Vorarbeit 1: setze jeden Knoten als unbesucht setze jede Distanz auf unendlich setze jeden Vorgänger auf null

∞ ∞ ∞ ∞ ∞ ∞ A ∞ B C D E F B C D A F E Vorarbeit 1: 4 1 C D ∞ 2 ∞ 3 ∞ A 4 5 2 ∞ 1 ∞ F E Vorarbeit 1: setze jeden Knoten als unbesucht setze jede Distanz auf unendlich setze jeden Vorgänger auf null

∞ ∞ ∞ ∞ ∞ ∞ A ∞ B C D E F B C D A F E Vorarbeit 2: 4 1 C D ∞ 2 ∞ 3 ∞ A 4 5 2 ∞ 1 ∞ F E Vorarbeit 2: setze die Distanz des Startknotens auf 0 setze seinen Vorgänger auf sich selber (hilfreich, aber nicht nötig)

∞ ∞ ∞ ∞ ∞ A B ∞ C D E F B C D A F E Vorarbeit 2: B ∞ C D E F ∞ 4 1 C D 2 ∞ 3 ∞ A 4 5 2 ∞ 1 ∞ F E Vorarbeit 2: setze die Distanz des Startknotens auf 0 setze seinen Vorgänger auf sich selber (hilfreich, aber nicht nötig)

B A B ∞ C D E F ∞ 4 1 C D 2 ∞ 3 ∞ A 4 5 2 ∞ 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B ∞ C D E F ∞ 4 1 C D 2 ∞ 3 ∞ A 4 5 2 ∞ 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B ∞ C D E F ∞ 4 1 C D 2 ∞ 3 ∞ A 4 5 2 ∞ 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B 4 A B ∞ C D E F ∞ 4 1 2 C D 2 ∞ 3 ∞ A 4 5 2 ∞ 1 ∞ 4 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 4 C 2 D ∞ E F 4 4 1 C D 2 2 3 ∞ A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 4 C 2 D ∞ E F 4 4 1 C D 2 2 3 ∞ A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 4 C 2 D ∞ E F 4 4 1 C D 2 2 3 ∞ A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B 3 A B 4 C 2 D ∞ E F 4 4 1 5 C D 2 2 3 ∞ A 4 5 2 7 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F ∞ 3 4 1 C D 2 2 3 5 A 4 5 2 7 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F ∞ 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F ∞ 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F ∞ 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F ∞ 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F ∞ 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 ∞ F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F ∞ 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 ∞ 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 bei Gleichstand: beliebig 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 7 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 7 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

B A B 3 C 2 D 5 E 4 F 3 4 1 C D 2 2 3 5 A 4 5 2 4 1 5 F E Wiederhole, bis alle Knoten besucht sind: setze den unbesuchten Knoten mit der geringsten Distanz als aktuell und besucht für alle unbesuchten Nachbarn: addiere eigene Distanz und das Kantengewicht wenn Summe geringer ist als deren aktuelle Distanz, dann setze sie und setze dich als seinen Vorgänger

Der Dijkstra-Algorithmus Von einem gegebenen Startknoten aus die kürzesten Wege zu allen anderen Knoten (Single Source Shortest Path SSSP) Angewendet auf alle Knoten im Graphen: liefert alle kürzesten Wege.