Animation von Dijkstra

Slides:



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

Algorithm Engineering
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Minimum Spanning Tree: MST
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Christian Schindelhauer
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
B-Bäume.
Graphalgorithmen ( elementare A. )
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
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 -
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26 - Graphen) Prof. 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)
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Katja Losemann Chris Schwiegelshohn
Minimum Spanning Tree: MST
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Vortrag über Graphen Von Jörg Hendricks.
Diskrete Mathe 9 Vorlesung 9 SS 2001
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Animationen zu Kap. 4.3: AVL-Bäume
Petra Mutzel: DAP2, Universität Dortmund SS Rotationen (1) b(5)=2 b(7)=0 b(7)=1 5 ist unbalanciert5, 7, 8 sind balanciert b(5)=0 Rotation nach.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
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
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Animation von Dijkstra
Algorithmus von Dijkstra. 0 Algorithmus von Dijkstra s Priority Queue PQ: Knoten, Priorität Weglänge Kandidatenmenge.
Prof. Dr. Petra Mutzel Animation Planarisierungsverfahren Lehrstuhl für Algorithm Engineering LS11 Universität Dortmund Automatisches Zeichnen von Graphen.
Beispielanimation Heap-Sort
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung
Jan Hinzmann – – GIS Praxis II – Slide 1/10 Der Algorithmus von Dijkstra (Berechnung kürzester Wege in bewerteten Graphen) GIS Praxis II, Jan Hinzmann,
Vorlesung Binärer Suchbaum II-
Externspeicher- Algorithmen Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen 2.
Analyse der Laufzeit von Algorithmen
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.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
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
Informatik für Nichtinformatiker (7)
 Präsentation transkript:

Animation von Dijkstra Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 23. VO DAP2 SS 2008 3. Juli 2008 Petra Mutzel DAP2 SS08 1

Algorithmus von Dijkstra Analogien mit BFS und Prim: BFS/Prim läßt einzelnen Baum wachsen: Neue Kante verbindet Baum mit Rest Dijkstra bildet Kürzeste-Wege Baum (SPT) ausgehend von Wurzel s, aber andere Auswahl Greedy, Priority Queue Bezeichnungen Vorgänger von Knoten v im SPT: π[v] Kanten, die Knotenmenge S verlassen: A(S) Min. Abstand vom Startknoten zu Knoten v: d[v] BClinear,erwartet nlogn, partitionierung kleine instanzen ,fast vorsortiert

Algorithmus von Dijkstra S := {s} // S Knoten im SPT d[s] := 0; π[s] := nil // s Wurzel while A(S) ≠ ø do // erreichbare Knoten // Optimale Substruktur Sei e = (u, v)  A(S) mit d[u] + w(e) minimal S := S ⋃ {v} d[v] := d[u] + w(e) π[v] := u end while kw ist kw plus kante die kante die fuer endknoten den kleinsten wert ergibt

Realisierung von Dijkstra Knotenmenge S: Kürzester Weg mit Länge d[v] bereits ermittelt Knotenmenge V \ S: Speichere vorläufige Werte für den Abstand zu s (obere Schranke (v)  d[v]) in Priority Queue, und aktualisiere Priorität, falls günstigerer Weg gefunden wird, (s) = 0 Wähle mit EXTRACTMIN Knoten u mit minimalem Abstandswert. Start: (s) = d[s] = 0 Aktualisiere für ausgehende Kanten (u, v) Abstandswerte der Endknoten („Relaxieren“) mit DECREASEPRIORITY und Vorgänger π[v] BClinear,erwartet nlogn, partitionierung kleine instanzen ,fast vorsortiert

Algorithmus von Dijkstra 22 2    10 4 7 4 11 9 s   7 8  2 4 12 5    5 1 Obere Schranke Priority Queue PQ: Knoten, Priorität Weglänge Kandidatenmenge K in PQ: Weg von s gefunden Abgeschlossene Knoten: Minimum aus PQ

Algorithmus von Dijkstra 22 2  4   10 4 7 4 11 9 s  7 8  2 4 12 5 12    5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 26   10 4 7 4 11 9 s  7 8  2 4 12 5 12    5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2 4  26  10 4 7 4 11 9 s  7 8  2 4 12 5 12   5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2 4  26  10 4 7 4 11 9 s 14 7 8  2 4 12 5 12 17  5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 26  10 4 7 4 11 9 s 14 7 8  2 4 12 5 12 17  5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 25  10 4 7 4 11 9 s 14 7 8  2 4 12 5 12 17  5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 25  10 4 7 4 11 9 s 14 7 8  2 4 12 5 12 17  5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 25  10 4 7 4 11 9 s 14 7 8  2 4 12 5 12 17 18 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 22 26 10 4 7 4 11 9 s 14 7 8 23 2 4 12 5 12 17 18 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 22 26 10 4 7 4 11 9 s 14 7 8 23 2 4 12 5 12 17 18 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Algorithmus von Dijkstra 22 2  4 22 26 10 4 7 4 11 9 s 14 7 8 23 2 4 12 5 12 17 18 5 1 Zwei Mengen Front Schnitt Ausgehende Kanten des gewählten Knoten Erreichte Kandidaten Vorgänger-Kanten: π

Pseudo-Code: Initialisierung G=(V, A), w: A→R0+ (1) var π[V], PriorityQueue Q, pos[V] (2) for each u  V \ {s} do { pos[u] := Q.INSERT(, u) π[u] := nil (5) } (6) pos[s] := Q.INSERT(0, s) (7) π[s] := nil Durchlauf mit Nutzung des Schlüssels als Index und Hochzählen, hoechster fuer gleich stabil rueckwaerts c[l] Anzahl der l mit a[l] <= Variante: Man braucht kein B schlage index nach Warum rueckwaerts? hintere werte grosser index stabil

Pseudo-Code (8) while not Q.ISEMPTY() do { (9) (du, u ) := Q.EXTRACTMIN(); // du Abstand s zu u (10) pos[u] := nil // Minimum entfernt (11) for all e = (u,v)  A-(u) do { // Erreichbare Knoten (12) if du+w(e) < Q.PRIORITY(pos[v]) then { (13) Q.DECREASEPRIORITY(pos[v], du + w(e)) (14) π[v] := u (15) } (16) } (17) } Durchlauf mit Nutzung des Schlüssels als Index und Hochzählen, hoechster fuer gleich stabil rueckwaerts c[l] Anzahl der l mit a[l] <= Variante: Man braucht kein B schlage index nach Warum rueckwaerts? hintere werte grosser index stabil