Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?

Ähnliche Dokumente
Vorlesung Datenstrukturen

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

10. Übung Algorithmen I

Algorithmen I - Tutorium 28 Nr. 11

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

Exkurs: Graphtraversierung

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

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

10. Übungsblatt zu Algorithmen I im SS 2010

9. Übung Algorithmen I

Erinnerung VL

ADS: Algorithmen und Datenstrukturen 2

3. Übungsblatt zu Algorithmen II im WS 2011/2012

Lösungsvorschlag Hausübung 8

Erinnerung VL

Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen

Breitensuche BFS (Breadth First Search)

Customization (Zuschneiden)

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

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

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

WS 2009/10. Diskrete Strukturen

9. Übung Algorithmen I

Traversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16

Wie wird ein Graph dargestellt?

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

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

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

Erinnerung VL

Algorithmen und Datenstrukturen

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

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

Grundlagen: Algorithmen und Datenstrukturen

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Zweizusammenhang und starker Zusammenhang

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

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

Das Heiratsproblem. Definition Matching

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Effiziente Algorithmen

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

15. Elementare Graphalgorithmen

Tutoraufgabe 1 (Suchen in Graphen):

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

8. Übung zu Algorithmen I 15. Juni 2016

11. Übungsblatt zu Algorithmen I im SS 2010

1. Übung Algorithmen I

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.

Graphdurchmusterung, Breiten- und Tiefensuche

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Algorithmen & Komplexität

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Berechnung minimaler Spannbäume. Beispiel

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

Minimal spannende Bäume

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

Quicksort ist ein Divide-and-Conquer-Verfahren.

Kap. 6.6: Kürzeste Wege

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

9 Minimum Spanning Trees

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 12, Donnerstag, 22.

Algorithmen und Datenstrukturen 2

Maximale s t-flüsse in Planaren Graphen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich. Graphen (2)

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.

Berechnung von Abständen

Algorithmen und Datenstrukturen (WS 2007/08) 63

Algorithmen II Vorlesung am

Polygontriangulierung

Lösungen zu Kapitel 5

4. Kreis- und Wegeprobleme Abstände in Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

WS 2013/14. Diskrete Strukturen

9. Übungsblatt zu Algorithmen I im SoSe 2016

Einführung in die Informatik 2

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Klausur Theoretische Informatik I WS 2004/2005

Algorithmen und Datenstrukturen 2-1. Seminar -

1 Exploration geordneter Wurzelbäume

Kapitel 1. Einführung

7. Graphenalgorithmen

Grundlagen der Algorithmen und Datenstrukturen Kapitel 10

ADS: Algorithmen und Datenstrukturen 2

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2010 Thomas Pajor 26. April 2010

Teil 2: Graphenalgorithmen

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS

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

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

Freie Bäume und Wälder

Informatik II, SS 2016

SS10 Effiziente Algorithmen 2. Kapitel: Graphdurchläufe

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

Graphen: Datenstrukturen und Algorithmen

1.Aufgabe: Minimal aufspannender Baum

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

Algorithmen und Datenstrukturen (WS 2008/09) 79

Transkript:

Algorithmen I Prof. Jörn Müller-Quade 19.06.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik 1

Tiefensuche cross backward tree forward s b e g f d c KIT Institut für Theoretische Informatik 2

Tiefensuchschema für G = (V,E) unmark all nodes; init foreach s V do if s is not marked then mark s root(s) DFS(s, s) // make s a root and grow // a new DFS tree rooted at s Procedure DFS(u,v : NodeId) // Explore v coming from u foreach (v,w) E do if w is marked then traversenontreeedge(v, w) else traversetreeedge(v, w) mark w DFS(v,w) backtrack(u,v) // return from v along the incoming edge KIT Institut für Theoretische Informatik 3

DFS-Baum init: root(s): traversetreeedge(v, w): parent=,..., : NodeArray of NodeId parent[s]:= s parent[w]:= v tree parent mark s d root(s) dfs(s,s) traversetreeedge(s,b) mark b dfs(s,b) s b s b e g f d c e g f c KIT Institut für Theoretische Informatik 4

dfs(s,b) traversetreeedge(b,e) mark(e) dfs(b,e) traversetreeedge(e,g) mark(g) dfs(e,g) traversenontreeedge(g,b) traversetreeedge(g,f) mark(f) dfs(g,f) backtrack(g,f) backtrack(e,g) traversenontreeedge(e,f) traversetreeedge(e,c) mark(c) dfs(e,c) backtrack(e,c) backtrack(b,e) backtrack(s,b) s b e g f d c s b e g f d c s b e g f d c s b e g f d c KIT Institut für Theoretische Informatik 5

traversetreeedge(s,d) mark(d) dfs(s,d) traversenontreeedge(d,e) traversenontreeedge(d,f) backtrack(s,d) backtrack(s,s) s b e g f d c s b e g f d c KIT Institut für Theoretische Informatik 6

DFS-Nummerierung init: root(s): traversetreeedge(v, w): dfspos=1 : 1..n dfsnum[s]:= dfspos++ dfsnum[w]:= dfspos++ u v : dfsnum[u] < dfsnum[v]. Beobachtung: Knoten auf dem Rekursionsstapel sind bzgl. sortiert tree 1 2 3 4 5 backward s b e g f cross forward d c 7 6 KIT Institut für Theoretische Informatik 7

Fertigstellungszeit init: backtrack(u, v): nishingtime=1 : 1..n nishtime[v]:= nishingtime++ tree 7 5 4 2 1 backward s b e g f cross forward d c 6 3 KIT Institut für Theoretische Informatik 8

Kantenklassizierung bei DFS type dfsnum[v] < nishtime[w] < w is (v, w) dfsnum[w] nishtime[v] marked tree yes yes no forward yes yes yes backward no no yes cross no yes yes forward s tree backward cross KIT Institut für Theoretische Informatik 9

Topologische Sortierung Denition 1 Eine lineare Anordnung t der Knoten eines DAGs G = (V,E), in der alle Kanten von kleineren zu gröÿeren Knoten verlaufen, heiÿt topologische Sortierung, d. h. (u,v) E : t(u) < t(v). Beispiel: topologisch sortierter Kleidergraph, Quelle: Wikipedia Kleidergraph, Quelle: Wikipedia KIT Institut für Theoretische Informatik 10

Topologisches Sortieren mittels DFS Theorem 2 G ist kreisfrei (DAG) DFS ndet keine Rückwärtskante. In diesem Fall liefert t(v):= n nishtime[v] eine topologische Sortierung. KIT Institut für Theoretische Informatik 11

Topologisches Sortieren mittels DFS Theorem 2 G ist kreisfrei (DAG) DFS ndet keine Rückwärtskante. In diesem Fall liefert t(v):= n nishtime[v] eine topologische Sortierung. Beweis : Annahme: Rückwärtskante. Zusammen mit Baumkanten ergibt sich ein Kreis. Widerspruch. forward s tree backward cross KIT Institut für Theoretische Informatik 11

Topologisches Sortieren mittels DFS Satz: G kreisfrei (DAG) DFS ndet keine Rückwärtskante. In diesem Fall liefert t(v):= n nishtime[v] eine topologische Sortierung, d. h. (u,v) E : t(u) < t(v). Beweis : Keine Rückwärtskante Kantenklassizierung {}}{ (v,w) E : nishtime[v] > nishtime[w] G ist kreisfrei und nishtime deniert umgekehrte topologische Sortierung. KIT Institut für Theoretische Informatik 12

Starke Zusammenhangskomponenten Betrachte die Relation mit u v falls Pfad u,...,v und Pfad v,...,u. Beobachtung: ist Äquivalenzrelation Die Äquivalenzklassen von bezeichnet man als starke Zusammenhangskomponenten. Übung DFS-basierter Linearzeitalgorithmus Algorithmen II KIT Institut für Theoretische Informatik 13

Mehr DFS-basierte Linearzeitalgorithmen 2-zusammenhängende Komponenten: bei Entfernen eines Knotens aus einer Komponente bleibt diese zusammenhängend (ungerichtet) 3-zusammenhängende Komponenten Planaritätstest (lässt sich der Graph kreuzungsfrei zeichnen?) Einbettung planarer Graphen KIT Institut für Theoretische Informatik 14

BFS DFS pro BFS: nichtrekursiv keine Vorwärtskanten kürzeste Wege, Umgebung pro DFS: keine explizite Datenstruktur (Rekursionsstapel) für ToDos, daher mglw. einfacher Grundlage vieler Algorithmen s tree forward backward cross KIT Institut für Theoretische Informatik 15

Kap. 10: Kürzeste Wege Eingabe: Graph G = (V,E) mit Kostenfunktion/Kantengewicht c : E R sowie Startknoten s. 3.0 km Ausgabe: für alle v V : Länge µ(v) des kürzesten Pfades von s nach v, µ(v) := min{c(p) : p ist Pfad von s nach v} mit c( e 1,...,e k ) := k i=1 c(e i). KIT Institut für Theoretische Informatik 16

Kap. 10: Kürzeste Wege Eingabe: Graph G = (V,E) mit Kostenfunktion/Kantengewicht c : E R sowie Startknoten s. 3.0 km Ausgabe: für alle v V : Länge µ(v) des kürzesten Pfades von s nach v, µ(v) := min{c(p) : p ist Pfad von s nach v} mit c( e 1,...,e k ) := k i=1 c(e i). Oft wollen wir auch geeignete Repräsentation der kürzesten Pfade. KIT Institut für Theoretische Informatik 16

Anwendungen Routenplanung Straÿennetze Spiele Kommunikationsnetze Unterprogramm Flüsse in Netzwerken... Tippfehlerkorrektur Disk Scheduling 3.0 km... KIT Institut für Theoretische Informatik 17

Grundlagen Gibt es immer einen kürzesten Pfad? Es kann negative Kreise geben! s p u C q v s p u C (2) q v... weitere Grundlagen just in time KIT Institut für Theoretische Informatik 18

Azyklische Graphen später KIT Institut für Theoretische Informatik 19

Kantengewichte 0 Alle Gewichte gleich: Breitensuche (BFS)! s b c d e f g tree backward cross forward 0 1 2 3 KIT Institut für Theoretische Informatik 20

Dijkstras Algorithmus Nun: Beliebige nichtnegative Kantengewichte Lösung ohne Rechner: M R 0 Distance to M 5 Kanten Fäden Kantengewicht Fadenlänge Knoten Knoten Dann: Am Startknoten anheben. H G F E C N K L P V Q S O J W 11 13 15 17 17 18 19 20 KIT Institut für Theoretische Informatik 21

Korrektheit der Bindfäden Betrachte beliebigen Knoten v mit Hängetiefe d[v]. Pfad mit Hängetiefe: verfolge strae Fäden kürzerer Pfad: falls es einen solchen Pfad gäbe, wäre einer seiner Fäden zerrissen! H G F E C M N K L P V R Q S O J W 0 Distance to M 5 11 13 15 17 17 18 19 20 KIT Institut für Theoretische Informatik 22

Edsger Wybe Dijkstra 19302002 1972 ACM Turing Award THE: das erste Mulitasking-OS Semaphor Selbst-stabilisierende Systeme GOTO Statement Considered Harmful Bildquelle: Wikipedia KIT Institut für Theoretische Informatik 23

Allgemeine Denitionen Wie bei BFS benutzen wir zwei Knotenarrays: d[v] = aktuelle (vorläuge) Distanz von s nach v Invariante: d[v] µ(v) parent[v] = Vorgänger von v auf dem (vorläugen) kürzesten Pfad von s nach v Invariante: dieser Pfad bezeugt d[v] Initialisierung: d[s] = 0, parent[s] = s d[v] =, parent[v] = s Kante Kante Kante v parent parent parent d[v] KIT Institut für Theoretische Informatik 24

Kante (u,v) relaxieren Falls d[u] + c(u,v) < d[v] (vielleicht d[v] = ), setze d[v] := d[u] + c(u,v) und parent[v] := u Invarianten bleiben erhalten! Beobachtung: d[v] kann sich mehrmals ändern! KIT Institut für Theoretische Informatik 25

Dijkstras Algorithmus: Pseudocode initialize d, parent all nodes are non-scanned while non-scanned node u with d[u] < u := non-scanned node v with minimal d[v] relax all edges (u,v) out of u u is scanned now Behauptung: Am Ende deniert d die optimalen Entfernungen und parent die zugehörigen Wege KIT Institut für Theoretische Informatik 26