Grundlagen: Algorithmen und Datenstrukturen

Ähnliche Dokumente
Fortgeschrittene Netzwerk- und Graph-Algorithmen

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

Grundlagen der Algorithmen und Datenstrukturen Kapitel 10

Grundlagen: Algorithmen und Datenstrukturen

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

1 Kürzeste Pfade in Graphen

Effiziente Algorithmen und Datenstrukturen I Kapitel 8: Kürzeste Wege

Vorlesung Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

Grundlegende Algorithmen Kapitel 4: Kürzeste Wege

Algorithmen & Komplexität

Übersicht. Netzwerke und Graphen Graphrepräsentation Graphtraversierung Kürzeste Wege Minimale Spannbäume. 9 Graphen. Graphen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege

Vorlesung 2 KÜRZESTE WEGE

2. Das single-source-shortest-path-problem

Grundlagen: Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

10. Übung Algorithmen I

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Informatik II, SS 2014

Kürzeste-Wege-Algorithmen und Datenstrukturen

Vorlesung 2 KÜRZESTE WEGE

Programmierkurs Python II

Erinnerung VL

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Abgabe: (vor der Vorlesung)

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 13, Donnerstag, 30.

Teil 2: Graphenalgorithmen

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Maximale s t-flüsse in Planaren Graphen

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

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Von Aachen nach Halle...

p = (v 0, v 1,..., v k )

Teil 2: Graphenalgorithmen

Algorithmen II Vorlesung am

Wintersemester 2004/ Februar 2005

Algorithmen und Datenstrukturen

10 Kürzeste Pfade SSSP-Problem

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2012 Thomas Pajor 23. April 2012

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Kürzeste (billigste) Wege

Datenstrukturen und Algorithmen (SS 2013)

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

9. Übungsblatt zu Algorithmen I im SoSe 2016

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. C5.1 Einführung. C5.2 Grundlagen

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

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

Algorithmen II Vorlesung am

void bellford ( List adjlst [n], int n, int i, int j){ int d[n] = + inf ; d[i] = 0;

Wie wird ein Graph dargestellt?

9. Übung Algorithmen I

Fortgeschrittene Netzwerk- und Graph-Algorithmen

10. Übungsblatt zu Algorithmen I im SS 2010

Fortgeschrittene Netzwerk- und Graph-Algorithmen

8. Kürzeste Wege in Graphen

Algorithmische Bioinformatik 1

Grundlagen: Algorithmen und Datenstrukturen

Strukturelle Modelle in der Bildverarbeitung Binäre MinSum Probleme

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

Übungsblatt 7 - Voronoi Diagramme

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Effizienter Planaritätstest Vorlesung am

Algorithmen I - Tutorium 28 Nr. 11

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Maximale s t-flüsse in Planaren Graphen

WS 2009/10. Diskrete Strukturen

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

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.

Dijkstra: Laufzeit. Insgesamt: T Dijkstra = O m T decreasekey (n)+n (T deletemin (n)+t insert (n))

Lernmodul 7 Algorithmus von Dijkstra

Bemerkung: Es gibt Algorithmen für minimale Spannbäume der Komplexität O(m + n log n) und, für dünnbesetzte Graphen, der Komplexität O(m log n), wobei

Grundlagen: Algorithmen und Datenstrukturen

Bipartites Matching. Gegeben: Ein bipartiter, ungerichteter Graph (V 1, V 2, E). Gesucht: Ein Matching (Paarung) maximaler Kardinalität.

3.2 Generischer minimaler Spannbaum-Algorithmus

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen und Datenstrukturen (Informatik II) SS Klausur

Effiziente Algorithmen 2

16. November 2011 Zentralitätsmaße. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 87

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Algorithmische Bioinformatik 1

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

Kap. 6.5: Minimale Spannbäume ff

16. All Pairs Shortest Path (ASPS)

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Datenstrukturen und Algorithmen

Transkript:

Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester H. Täubig (TUM) GAD SS / 56

Übersicht H. Täubig (TUM) GAD SS 493 / 56

Bellman-Ford-Algorithmus void BellmanFord(Node s) { d[s] = ; parent[s] = s; for (int i = ; i < n ; i++) { // n Runden foreach (e = (v, w) E) if (d[v] + c(e) < d[w]) { // kürzerer Weg? d[w] = d[v] + c(e); parent[w] = v; } } foreach (e = (v, w) E) if (d[v] + c(e) < d[w]) { // kürzerer Weg in n-ter Runde? infect(w); } H. Täubig (TUM) GAD SS 494 / 56

Bellman-Ford-Algorithmus void infect(node v) { // -Knoten if (d[v] > ) { d[v] = ; foreach (e = (v, w) E) infect(w); } } Gesamtlaufzeit: O(m n) H. Täubig (TUM) GAD SS 495 / 56

Bellman-Ford-Algorithmus Bestimmung der Knoten mit Distanz : betrachte alle Knoten, die in der n-ten Phase noch Distanzverbesserung erfahren aus jedem Kreis mit negativem Gesamtgewicht muss mindestens ein Knoten dabei sein jeder von diesen Knoten aus erreichbare Knoten muss Distanz bekommen das erledigt hier die infect-funktion wenn ein Knoten zweimal auftritt (d.h. der Wert ist schon ), wird die Rekursion abgebrochen H. Täubig (TUM) GAD SS 496 / 56

Bellman-Ford-Algorithmus Bestimmung eines negativen Zyklus: bei den oben genannten Knoten sind vielleicht auch Knoten, die nur an negativen Kreisen über ausgehende Kanten angeschlossen sind, die selbst aber nicht Teil eines negativen Kreises sind Rückwärtsverfolgung der parent-werte, bis sich ein Knoten wiederholt Kanten vom ersten bis zum zweiten Auftreten bilden einen negativen Zyklus H. Täubig (TUM) GAD SS 497 / 56

Bellman-Ford-Algorithmus Ursprüngliche Idee der Updates vorläufiger Distanzwerte stammt von Lester R. Ford Jr. Verbesserung (Richard E. Bellman / Edward F. Moore): verwalte eine FIFO-Queue von Knoten, zu denen ein kürzerer Pfad gefunden wurde und deren Nachbarn am anderen Ende ausgehender Kanten noch auf kürzere Wege geprüft werden müssen wiederhole: nimm ersten Knoten aus der Queue und prüfe für jede ausgehende Kante die Distanz des Nachbarn falls kürzerer Weg gefunden, aktualisiere Distanzwert des Nachbarn und hänge ihn an Queue an (falls nicht schon enthalten) Phase besteht immer aus Bearbeitung der Knoten, die am Anfang des Algorithmus (bzw. der Phase) in der Queue sind (dabei kommen während der Phase schon neue Knoten ans Ende der Queue) H. Täubig (TUM) GAD SS 498 / 56

Kürzeste einfache Pfade bei beliebigen Kantengewichten Achtung! Fakt Die Suche nach kürzesten einfachen Pfaden (also ohne Knotenwiederholungen / Kreise) in mit beliebigen Kantengewichten (also möglichen negativen Kreisen) ist ein NP-vollständiges Problem. (Man könnte Hamilton-Pfad-Suche damit lösen.) H. Täubig (TUM) GAD SS 499 / 56

All Pairs Shortest Paths gegeben: Graph mit beliebigen Kantengewichten, der aber keine negativen Kreise enthält gesucht: Distanzen / kürzeste Pfade zwischen allen Knotenpaaren Naive Strategie: n-mal Bellman-Ford-Algorithmus (jeder Knoten einmal als Startknoten) O(n m) H. Täubig (TUM) GAD SS 5 / 56

All Pairs Shortest Paths Bessere Strategie: reduziere n Aufrufe des Bellman-Ford-Algorithmus auf n Aufrufe des Dijkstra-Algorithmus Problem: Lösung: Dijkstra-Algorithmus funktioniert nur für nichtnegative Kantengewichte Umwandlung in nichtnegative Kantenkosten ohne Verfälschung der kürzesten Wege H. Täubig (TUM) GAD SS 5 / 56

All Pairs Shortest Paths Naive Idee: negative Kantengewichte eliminieren, indem auf jedes Kantengewicht der gleiche Wert c addiert wird verfälscht kürzeste Pfade Original Kantenkosten + s v s 3 3 v H. Täubig (TUM) GAD SS 5 / 56

All Pairs Shortest Paths Sei Φ : V R eine Funktion, die jedem Knoten ein Potential zuordnet. Modifizierte Kantenkosten von e = (v, w): c(e) = Φ(v) + c(e) Φ(w) Lemma Seien p und q Wege von v nach w in G. c(p) und c(q) bzw. c(p) und c(q) seien die aufsummierten Kosten bzw. modifizierten Kosten der Kanten des jeweiligen Pfads. Dann gilt für jedes Potential Φ: c(p) < c(q) c(p) < c(q) H. Täubig (TUM) GAD SS 53 / 56

All Pairs Shortest Paths Beweis. Sei p = (v,..., v k ) beliebiger Weg und i : e i = (v i, v i+ ) E Es gilt: c(p) = = k c(e i ) i= k (Φ(v i ) + c(e i ) Φ(v i+ )) i= = Φ(v ) + c(p) Φ(v k ) d.h. modifizierte Kosten eines Pfads hängen nur von ursprünglichen Pfadkosten und vom Potential des Anfangs- und Endknotens ab. (Im Lemma ist v = v und v k = w) H. Täubig (TUM) GAD SS 54 / 56

All Pairs Shortest Paths Lemma Annahme: Graph hat keine negativen Kreise alle Knoten von s aus erreichbar Sei für alle Knoten v das Potential Φ(v) = d(s, v). Dann gilt für alle Kanten e: c(e) Beweis. für alle Knoten v gilt nach Annahme: d(s, v) R (also ± ) für jede Kante e = (v, w) ist d(s, v) + c(e) d(s, w) d(s, v) + c(e) d(s, w) H. Täubig (TUM) GAD SS 55 / 56

All Pairs Shortest Paths / Johnson-Algorithmus füge neuen Knoten s und Kanten (s, v) für alle v hinzu mit c(s, v) = alle Knoten erreichbar berechne d(s, v) mit Bellman-Ford-Algorithmus setze Φ(v) = d(s, v) für alle v berechne modifizierte Kosten c(e) berechne für alle Knoten v die Distanzen d(v, w) mittels Dijkstra-Algorithmus mit modifizierten Kantenkosten auf dem Graph ohne Knoten s berechne korrekte Distanzen d(v, w) = d(v, w) + Φ(w) Φ(v) H. Täubig (TUM) GAD SS 56 / 56

All Pairs Shortest Paths / Johnson-Algorithmus Beispiel: a b d c H. Täubig (TUM) GAD SS 57 / 56

All Pairs Shortest Paths / Johnson-Algorithmus. künstliche Quelle s: a b d s c H. Täubig (TUM) GAD SS 58 / 56

All Pairs Shortest Paths / Johnson-Algorithmus. Bellman-Ford-Algorithmus auf s: Φ(b)= Φ(a)= a s b Φ(c)= c Φ(d)= d H. Täubig (TUM) GAD SS 59 / 56

All Pairs Shortest Paths / Johnson-Algorithmus 3. c(e)-werte für alle e = (v, w) berechnen: c(e) = Φ(v) + c(e) Φ(w) Φ(b)= Φ(a)= a b Φ(c)= c Φ(d)= d H. Täubig (TUM) GAD SS 5 / 56

All Pairs Shortest Paths / Johnson-Algorithmus 4. Distanzen d mit modifizierten Kantengewichten via Dijkstra: Φ(b)= d a b c d a 3 3 b c 3 d Φ(a)= a b Φ(c)= c Φ(d)= d H. Täubig (TUM) GAD SS 5 / 56

All Pairs Shortest Paths / Johnson-Algorithmus 5. korrekte Distanzen berechnen mit Formel d(v, w) = d(v, w) + Φ(w) Φ(v) Φ(b)= d a b c d a 3 b c 3 4 d Φ(a)= a b Φ(c)= c Φ(d)= d H. Täubig (TUM) GAD SS 5 / 56

All Pairs Shortest Paths / Johnson-Algorithmus Laufzeit: T(APSP) = O(T Bellman-Ford (n +, m + n) + n T Dijkstra (n, m)) = O((m + n) (n + ) + n(n log n + m)) = O(m n + n log n) (bei Verwendung von Fibonacci Heaps) H. Täubig (TUM) GAD SS 53 / 56