Algorithmen und Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Graphen: Datenstrukturen und Algorithmen

4. Kreis- und Wegeprobleme Abstände in Graphen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen Graphen - Einführung

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

9. Übung Algorithmen I

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Algorithmen und Datenstrukturen

2. Übungsblatt zu Algorithmen II im WS 2016/2017

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Kapitel 10

Algorithmen II Vorlesung am

Algorithmen zum Lösen von Vertex und Set Cover Instanzen zur Planung von Angriffen auf Netzwerke

Routing Algorithmen. Begriffe, Definitionen

Algorithmen und Datenstrukturen

Effiziente Algorithmen I

11.1 Grundlagen - Denitionen

Vorlesung 4 BETWEENNESS CENTRALITY

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Graphalgorithmen 2. Oleksiy Rybakov. 3. Juni Betreuer: Tobias Werth, Daniel Brinkers

Erinnerung VL

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Fully dynamic algorithms for the single source shortest path problem.

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung

23. November Betweenness Centrality Closeness Centrality. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108

Graphalgorithmen Knotentraversierung Breitensuche, (Breadth first search) Erst alle Knoten im Abstand i von s, dann i+1,...

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Suchen und Sortieren Sortieren. Heaps

3. Musterlösung. Problem 1: Boruvka MST

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 3: Minimal aufspannende Bäume und Matroide

16. All Pairs Shortest Path (ASPS)

DATENSTRUKTUREN UND ALGORITHMEN

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen 2

11. Übungsblatt zu Algorithmen I im SS 2010

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Vorlesung Datenstrukturen

Schnelle und genaue Routenplanung

Informatik II, SS 2014

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Algorithmen und Datenstrukturen

4 Greedy-Algorithmen (gierige Algorithmen)

Algorithmen und Datenstrukturen

Single Source Sortest Path Negative Kreise All-Pair Shortest Path Problem Minimum Mean Cycle Zusammenfassung. Shortest Paths

Minimal spannende Bäume

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Kombinatorische Optimierung

Grundbegriffe der Informatik

14. Rot-Schwarz-Bäume

Algorithmische Graphentheorie

Das Briefträgerproblem

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Die k kürzesten Wege in gerichteten Graphen

Grundlagen: Algorithmen und Datenstrukturen

8 Diskrete Optimierung

Flüsse, Schnitte, bipartite Graphen

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Diskrete Strukturen Kapitel 1: Einleitung

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Maximale s t-flüsse in Planaren Graphen

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Algorithmen II Vorlesung am

Grundlagen der Informatik

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).

5.4 Das Rucksackproblem

Datenstrukturen & Algorithmen

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Lernmodul 2 Graphen. Lernmodul 2: Geoobjekte und ihre Modellierung - Graphen

Sortierte Folgen 250

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

WS 2009/10. Diskrete Strukturen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum:

Referat zum Thema Huffman-Codes

WS 2009/10. Diskrete Strukturen

13. Binäre Suchbäume

Algorithmen und Datenstrukturen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Kapitel 9 Suchalgorithmen

Transkript:

1 Algorithmen und Datenstrukturen Wintersemester 2016/17 19. Vorlesung Kürzeste Wege & Dijkstras Algorithmus Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I

Wozu kürzeste Wege? 2

3-8 Modellierung des Problems Routenplanung Straßenkreuzung Knoten Straßenabschnitt zwei entgegengerichtete Kanten Einbahnstraßenabschnitt in Fahrtrichtung gerichtete Kante Fahrtzeit für Abschnitt e Kantengewicht w(e) 0 Straßennetz gerichteter, gewichteter und zusammenhängender Graph G(V, E) Start Knoten s V Ziel Knoten t V Start-Ziel-Route s-t-weg, d.h. Folge von Kanten (s, v 1 ), (v 1, v 2 ),..., (v k, t) in G

Wozu kürzeste Wege? 4-3

Wozu kürzeste Wege? (II) 5

6-4 Was ist das Problem? Eingabe: gerichteter, zusammenhängender Graph G = (V, E) mit nicht-negativen Kantengewichten w : E Q + 0, a 6 b Knoten s und t 3 s 4 2 1 2 7 5 3 Ausgabe: c 7 t kürzester s-t-weg W in G, d.h. e W w(e) minimal. Darstellung durch Vorgänger-Zeiger π: für jeden Knoten v sei π(v) V {nil} Vorgänger von v auf kürzestem s-v-weg.

6-6 Was ist das Problem? Eingabe: gerichteter, zusammenhängender Graph G = (V, E) mit nicht-negativen Kantengewichten w : E Q + 0, a 6 b Knoten s und t 3 s 4 2 1 2 7 5 3 Ausgabe: } für alle {{ t V} c 7 t kürzester s-t-wege W in G, d.h. t e W w(e) minimal. Darstellung durch Vorgänger-Zeiger π: für jeden Knoten v sei π(v) V {nil} Vorgänger von v auf kürzestem s-v-weg. Nebenbemerkung: Analoge Berechnungsverfahren?

7-6 Dijkstra BFS mit Gewichten Dijkstra(WeightedGraph G = (V, E; w), Vertex s) // Gewichtung Initialize(G, s) Q = new PriorityQueue(V, d) while not Q.Empty() do u = Q.ExtractMin() foreach v Adj[u] do u.color = black if v.d > u.d + w(u, v) then v.color = gray v.d = u.d + w(u, v) v.π = u Q.DecreaseKey(v, v.d) BFS(Graph G, Vertex s) Initialize(G, s) Q = new Queue() Q.Enqueue(s) while not Q.Empty() do u = Q.Dequeue() foreach v Adj[u] do if v.color == white then v.color = gray v.d = u.d + 1 v.π = u Q.Enqueue(v) u.color = black

8-1 Dijkstra ein Beispiel Dijkstra(WeightedGraph G, Vertex s) Initialize(G, s) Q = new PriorityQueue(V, d) while not Q.Empty() do u = Q.ExtractMin() foreach v Adj[u] do u.color = black if v.d > u.d + w(u, v) then v.color = gray v.d = u.d + w(u, v) v.π = u Q.DecreaseKey(v, v.d) s 0 8 a 5 c 8 2 3 1 9 2 13 4 5 7 Initialize(Graph G, Vertex s) foreach u V do u.color = white u.d = u.π = nil s.color = gray s.d = 0 t 6 b

8-2 Dijkstra ein Beispiel Dijkstra(WeightedGraph G, Vertex s) Initialize(G, s) Q = new PriorityQueue(V, d) while not Q.Empty() do u = Q.ExtractMin() foreach v Adj[u] do u.color = black if v.d > u.d + w(u, v) then v.color = gray v.d = u.d + w(u, v) v.π = u Q.DecreaseKey(v, v.d) s 0 8 a 5 c 8 2 3 1 9 2 4 5 7 Initialize(Graph G, Vertex s) foreach u V do u.color = white u.d = u.π = nil s.color = gray s.d = 0 9 t 6 b

Dijkstra ein Beispiel Dijkstra(WeightedGraph G, Vertex s) Initialize(G, s) Q = new PriorityQueue(V, d) while not Q.Empty() do u = Q.ExtractMin() foreach v Adj[u] do u.color = black if v.d > u.d + w(u, v) then v.color = gray v.d = u.d + w(u, v) v.π = u Q.DecreaseKey(v, v.d) Kürzester-Wege-Baum mit Wurzel s s 0 8 a 5 c 1 8 9 2 3 9 2 4 5 7 Initialize(Graph G, Vertex s) foreach u V do u.color = white u.d = u.π = nil s.color = gray s.d = 0 t 6 b 8-2

9-1 Dijkstra die Laufzeit Dijkstra(WeightedGraph G, Vertex s) Initialize(G, s) Q = new PriorityQueue(V, d) while not Q.Empty() do u = Q.ExtractMin() foreach v Adj[u] do u.color = black if v.d > u.d + w(u, v) then v.color = gray v.d = u.d + w(u, v) v.π = u Q.DecreaseKey(v, v.d) Abk. für O(V ) O( ) Zeit V genau V mal Wie oft wird Relax aufgerufen? Für jeden Knoten u V (out-) genau Adj[u] = deg u mal, also insg. Θ(E) mal. Also wird DecreaseKey O(E) mal aufgerufen.

10 - Dijkstra die Laufzeit Satz. Gegeben ein Graph G = (V, E), läuft Dijstras Alg. in O(V T ExtractMin (V ) + E T DecreaseKey (V )) Zeit. Implementierung einer PriorityQueue T ExtractMin (n) T DecreaseKey (n) T Dijkstra (V, E) als unsortiertes Feld O(n) O(1) O(V 2 +E) als Heap O(log n) O(log n) O((E+V ) log V ) als Fibonacci-Heap ) Das geht, weil O(log n) amortisiert O(1) amortisiert O(E +V logv ) im Worst-Case! wir bei ExtractMin Lücken im Feld lassen; daher bleiben die Schlüssel an ihrem Platz ( Direktzugriff) Korollar. In einem Graphen G = (V, E; w) mit w : E Q 0 kann man in O(E + V log V ) Zeit die kürzesten Wege von einem zu allen Knoten berechnen (SSSP-Problem).

11 - Dijkstra die Korrektheit siehe [CLRS], Kapitel 24.3., Satz 24.6: Korrektheisbeweis mittels Schleifeninvariante. oder MIT-Vorlesungsmitschnitt von Erik Demaine: http://videolectures.net/mit6046jf05_demaine_lec17

12 - Wozu kürzeste Wege? (III) SMSen GHI MNO DEF MNO PQRS 10:21 für T9 MNO ABC TUV GHI JKL

13 - Modellierung SMSen J 0,00001 T P W 0,001 0,03 0,02 K 0,03 0,15 L 0,00001 U V 0,00001 0,02 Q R S 0,00001 0,00005 0,03 X Y Z 0,001 0,010 0,020 Graph: Knoten ˆ= Buchstaben Kanten ˆ= aufeinanderfolgende Buchst. Gewichte ˆ= Wahrscheinlichkeiten w / Häufigkeiten Gesucht: Weg P von nach mit größter WK (= e P w(e)) Lösung: dynamisches Programmieren... [kommt noch!]

14 - Literatur A note on two problems in connexion with graphs. Edsger Wybe Dijkstra: Numerische Mathematik (1) 1959, S. 269 271. Lesen Sie mal rein! Das Geheimnis des kürzesten Weges. Ein mathematisches Abenteuer. Peter Gritzmann und René Brandenberg: Springer-Verlag, 3. Aufl., 2005. Beide Werke sind über die UB frei zugänglich und über unsere WueCampus-Seite verlinkt! Edsger Wybe Dijkstra 1930 in Rotterdam 2002 in Nuenen, Niederlande

15 - Kürzeste Wege nach Dijkstra nicht-neg. Kantengew. Dijkstra O(E + V log V ) ungewichteter Graph Breitensuche O(E + V ) azyklischer Graph topol. Sortieren O(E + V ) negative Kantengew. Bellman-Ford O(E V ) für alle Knotenpaare V Dijkstra O(V (E + V log V )) + negative Kantengew. Floyd-Warshall O(V 3 ) Johnson O(V (E + V log V )) k kürzeste s-t-wege Eppstein O(k + E + V log V ) Nächstes Mal! Vorlesung Alg. Graphentheorie (?)