Lernmodul 7 Algorithmus von Dijkstra

Ähnliche Dokumente
Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Routing Algorithmen. Begriffe, Definitionen

15. Elementare Graphalgorithmen

1 Kürzeste Pfade in Graphen

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

Algorithmen & Komplexität

9 Minimum Spanning Trees

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

durch Einfügen von Knoten konstruiert werden kann.

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

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

Kürzeste-Wege-Algorithmen und Datenstrukturen

Relationen und DAGs, starker Zusammenhang

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

Grundbegriffe der Informatik

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

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Wie wird ein Graph dargestellt?

Berechnung von Abständen

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

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen 2

Kürzeste und Schnellste Wege

Graphdurchmusterung, Breiten- und Tiefensuche

10. Übungsblatt zu Algorithmen I im SS 2010

Algorithmen und Datenstrukturen 2-1. Seminar -

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

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Algorithmen und Datenstrukturen Heapsort

Informatik II Prüfungsvorbereitungskurs

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Vorlesung Datenstrukturen

2. Repräsentationen von Graphen in Computern

Breitensuche BFS (Breadth First Search)

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Kürzeste Wege Algorithmen und Datenstrukturen

Das Heiratsproblem. Definition Matching

Kap. 6.6: Kürzeste Wege

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Übung Algorithmen und Datenstrukturen

Relationen und Graphentheorie

Geometrische Algorithmen Segmentschnitt

Geometrische Algorithmen Segmentschnitt

4. Kreis- und Wegeprobleme Abstände in Graphen

Teil 2: Graphenalgorithmen

Vorlesung Datenstrukturen

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

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

Programmierkurs Python II

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

Vorlesung 2 KÜRZESTE WEGE

Aufgaben zur Klausurvorbereitung

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

Algorithmen und Datenstrukturen

Datenstrukturen. einfach verkettete Liste

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

Graphen: Datenstrukturen und Algorithmen

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter

Fortgeschrittene Netzwerk- und Graph-Algorithmen

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

Algorithmen II Vorlesung am

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

Lösungsvorschlag Hausübung 8

Datenstrukturen & Algorithmen

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

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

Vorlesung 4 BETWEENNESS CENTRALITY

1.Aufgabe: Minimal aufspannender Baum

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

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.

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Graphenalgorithmen I

Lösungen zu Kapitel 5

NAME, VORNAME: Studiennummer: Matrikel:

Algorithmen und Datenstrukturen (für ET/IT)

Datenstrukturen und Algorithmen SS07

WS 2009/10. Diskrete Strukturen

Vorlesung 2 KÜRZESTE WEGE

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Algorithmen und Datenstrukturen

Algorithmische Graphentheorie

8 Diskrete Optimierung

Informatik II Vorlesung am D-BAUG der ETH Zürich

11.1 Grundlagen - Denitionen

Informatik II Prüfungsvorbereitungskurs

Transkript:

Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de

Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer Route von Ort A nach Ort B Formulierung des Problems / einer Lösung Animation eines Beispiels für den Algorithmus Formulierung des Algorithmus in Pseudocode Sätze zur Korrektheit des Algorithmus Erforderliche Datenstrukturen Adjazenzmatrix Adjazenzliste Heap

Folie 3 von 30 Algorithmus von Dijkstra Problemstellung

Folie 4 von 30 Algorithmus von Dijkstra Beispielgraph 5x

Folie 5 von 30 Dijkstra Formulierung / Lösung des Problems Gegeben: Gerichteter Graph G, dessen Kanten mit Zahlen (Kosten, z.b. km oder min.) beschriftet sind Aufgabe: Berechnung des kürzesten Weges s z von einem Startknoten s zu einem Zielknoten z Erste Idee: Berechne alle Wege und wähle den kürzesten Beobachtung: Wenn der kürzeste Weg von s nach z über y führt, sind die Teilwege s y und y z ebenfalls kürzeste Wege Effiziente Lösung: Berechne alle kürzesten Wege und wähle den von s nach z aus Algorithmus von Dijkstra: jeder Schritt sitzt ( Greedy -Algorithmus) Berechnung der kürzesten Wege von einem beliebigen Startknoten zu allen anderen Knoten des Graphen (1 : n) single source shortest path - Problem

Folie 6 von 30 Dijkstra Beispiel zum Ablauf 32x

Folie 7 von 30 Dijkstra Bezeichnungen im Algorithmus s v dist (v) BLAU GRÜN succ (v) dist (v,v ) Startknoten beliebiger Knoten im Graphen Abstand des Knotens v vom Startknoten s Menge der abgearbeiteten Knoten Menge der aktiven Knoten ("in Arbeit") Menge der Nachfolger(-Nachbarn) von v für alle Elemente Distanz (Zeit) der Kante (v,v )

Folie 8 von 30 Dijkstra Beschreibung des Algorithmus Idee: Bildung eines Teilgraphen TG in G, ausgehend vom Startknoten s TG beschreibt den erkundeten Teil von G, bestehend aus BLAUEN Knoten: Alle Nachfolger wurden betrachtet GRÜNEN Knoten: Rand von TG, abgehende Kanten wurden nicht betrachtet Zwei Arten von Kanten innerhalb von TG: rote Kanten: Baum der kürzesten Wege grüne Kanten: "längere Wege" In jedem Knoten von TG wird der Abstand zu s verwaltet (dist(k)) TG wächst, indem in jedem Schritt der Randknoten mit minimalem Abstand von s ins Innere von TG (BLAU) übernommen wird Nachfolgeknoten übernommener Knoten werden Randknoten (GRÜN) Kürzeste Pfade zu GRÜNEN Knoten, die erneut erreicht werden, sind ggf. zu korrigieren

Folie 9 von 30 Dijkstra Formulierung des Algorithmus algorithm Dijkstra (s) //berechne alle kürzesten Wege von s aus BLAU = ; GRÜN = {s}; dist(s) = 0; while( GRÜN!= ) { wähle v GRÜN, so dass v' GRÜN: dist(v) <= dist(v'); färbe v blau; for( v i succ(v) ) { if (v i (GRÜN BLAU) //noch nicht besuchter Knoten färbe die Kante (v,v i ) rot; färbe v i grün; dist(v i ) = dist(v) + dist(v,v i ); } else if (v i GRÜN) { // v i erneut erreicht if(dist(v i ) > dist(v) + dist(v,v i )) { färbe die Kante (v,v i ) rot; färbe die bisher rote Kante zu v i grün; dist(v i ) = dist(v) + dist(v,v i ); } else { färbe (v,v i ) grün; }} else { färbe (v,v i ) grün; }}} // v i BLAU

Folie 10 von 30 Dijkstra Offene Fragen Wie finden wir schnell alle Nachfolger eines Knoten: for ( v i succ(v) )...? aktive Knoten: v GRÜN, so dass v GRÜN: dist(v) <= dist (v );? Wir benötigen: Datenstruktur für den Graphen Datenstruktur für die grünen (aktiven) Knoten Der schrittweise Entwurf des Algorithmus lässt diese Fragen zunächst absichtlich offen......zugunsten der Konzentration auf die wesentliche Idee: Wir wollen zunächst die Korrektheit des Algorithmus beweisen.

Folie 11 von 30 Dijkstra Korrektheit des Algorithmus I Satz 1: Für jeden GRÜNEN Knoten v gilt: Unter den rotgrünen Wegen zu v ist der rote der kürzeste. >>Beweis: Induktion über die Folge der BLAU gefärbten Knoten

Folie 12 von 30 Dijkstra Beweis Satz 1 - Teil 1 Induktionsanfang: Die Behauptung gilt für s, da noch keine Kante gefärbt ist. Induktionsschluß: Annahme: Die Aussage gilt für BLAU und GRÜN. v GRÜN wird blau gefärbt. Seien v 1,..., v m die Nachfolger von v. Für die v i sind folgende Fälle zu unterscheiden: >>Fortsetzung

Folie 13 von 30 Dijkstra Beweis Satz 1 - Teil 2 1. v i wurde zum erstenmal erreicht, war also bisher ungefärbt und wird jetzt grün. Der einzige grünrote Weg zu v i hat die Form s v v i (" " bezeichne einen Weg, " " eine einzelne Kante). s v ist nach Induktionsannahme minimal. Also ist s v i minimal. 2. v i ist grün und wurde erneut erreicht. Der bislang rote Weg zu v i war s x v i, der neue rote Weg zu v i ist der kürzeste Weg unter den Wegen a. s x v i und b. s v v i Der Weg (1) ist minimal unter allen grünroten Wegen, die nicht über v führen, (2) ist minimal unter allen, die über v führen (wie in (a)), also ist der neue Weg minimal unter allen grünroten Wegen.

Folie 14 von 30 Dijkstra Korrektheit des Algorithmus II Satz 2: Für jeden BLAUEN Knoten v gilt: Unter allen Wegen zu v ist der rote der kürzeste. Beweis: Induktion über die Folge der BLAU gefärbten Knoten Satz 3 (Hauptsatz): Der Algorithmus von Dijkstra berechnet die kürzesten Wege zu allen von s erreichbaren Knoten. Beweis: Nach Ablauf des Algorithmus sind alle erreichbaren Knoten BLAU gefärbt. Die Behauptung folgt dann aus Satz 2. Übung: Vollziehen Sie den Gedankengang von Beweis 1 am Beispiel nach. Versuchen Sie einen Beweis für Satz 2 (Hinweis: Finden Sie einen Widerspruch zur Induktionsannahme)

Folie 15 von 30 Datenstrukturen Organisation der Knoten Quelle: nach http://www.hmi.de

Folie 16 von 30 Datenstrukturen Übersicht Datenstruktur für den Graphen (mit Kosten) Variante 1: Adjazenzmatrix Variante 2: Adjazenzliste Datenstruktur für die Menge der aktiven (GRÜNEN) Knoten: Heap

Folie 17 von 30 Datenstrukturen Adjazenzmatrix Definition: Knoten, die durch eine Kante verbunden sind, heißen benachbart oder adjazent. Definition: Die n n Matrix A = (a ij ) mit a ij = true false falls v i und v j adjazent sonst heißt Adjazenzmatrix des Graphen.

Folie 18 von 30 Datenstrukturen Adjazenzmatrix mit Kosten Bei bewerteten Graphen lassen sich direkt die Kosten in die Adjazenzmatrix eintragen: a ij = k falls k die Kosten der Kante von v i nach v j sonst Beachte: alle Diagonalelemente sind 0

Folie 19 von 30 Datenstrukturen Beispiel zur Adjazenzmatrix 6x

Folie 20 von 30 Datenstrukturen Adjazenzmatrix ja/nein? Vorteil: Möglichkeit, in einer Laufzeit von O(1) festzustellen, ob eine Kante von v i nach v j existiert. Nachteil: hoher Platzbedarf: O(n 2 )

Folie 21 von 30 Datenstrukturen Adjazenzliste Für jeden Knoten wird eine Liste seiner (Nachfolger-) Nachbarknoten abgespeichert. Der Zugriff auf die Listen erfolgt über ein Array der Länge n (n = Anzahl der Knoten).

Folie 22 von 30 Datenstrukturen Beispiel zur Adjazenzliste 3x

Folie 23 von 30 Datenstrukturen Adjazenzliste ja/nein? Vorteil: geringer Platzbedarf: O(n+e) (e = Anzahl der Kanten) alle m Nachfolger eines Knotens sind in der Zeit O(m) erreichbar Nachteil: Um zu prüfen, ob v i und v j benachbart sind, muß die Adjazenzliste von v i durchlaufen und nach v j durchsucht werden. Übung: Wie hoch ist der Aufwand zum Durchlaufen der Adjazenzliste von v i? aber: für Dijkstra ist eine Adjazenzliste ideal

Folie 24 von 30 Datenstr. Repräsentation der GRÜNEN Knoten Der Algorithmus benötigt folgende Operationen: Einfügen der Nachfolger des betrachteten Knoten Selektion und Entfernen des kleinsten Elements Ziel: Einfügen eines Knotens in O(log n) Finden und Entfernen des kleinsten Knotens in O(log n) Variante A: AVL-Baum Variante B (spezialisierter auf diese Anwendung): Heap

Folie 25 von 30 Datenstrukturen Definition des Heaps Ein zu jeder Zeit möglichst vollständiger binärer Baum T: Alle Ebenen bis auf die letzte sind voll besetzt. Der Baum besitzt eine partielle Ordnung: Für jeden Teilbaum T mit Wurzel w gilt info(v) >= info(w) für alle Knoten v von T. Dabei bezeichnet "info" den Eintrag des Knotens. In der Wurzel steht also das Minimum des Teilbaums. Darstellung (Einbettung) eines vollständigen Baums erfolgt in einem Array >>Beispiel: Eingabe der sortierten Folge von Zahlen {1.. 15}

Folie 26 von 30 Datenst. Einbettung des Heaps in ein Array Problem: Abbildung der Kanten auf Indizes Index des Vaters? Indizes der beiden Söhne? Vorgehen (i = Nummer des Knotens in der Abbildung): Jeder Knoten v mit Nummer i wird im Feld i des Arrays dargestellt. index(v) = i index (v.linkersohn) = 2 i index (v.rechtersohn) = 2 i + 1 index (v.vater) = [i/2] 10x

Folie 27 von 30 Datenstr. Entfernen des kleinsten Heap-Elements 22x

Folie 28 von 30 Datenstr. Einfügen eines neuen Heap-Elements 23x

Folie 29 von 30 Dijkstra Zwei Erweiterungen im Überblick Dijkstra: Finden kürzester Wege in Graphen Reale Netze stellen besondere Anforderungen Größe des Netzwerkes (Effizienz) Dijkstra-Erweiterung "Dijkstra mit Geometrie" Straßenverkehrsordnung (Abbiege- und Wendeverbote) Abbildung realer Straßennetze auf Graphen Ansätze: Modifikation des Graphen Modifikation von Dijkstra

Folie 30 von 30 Dijkstra Literatur Güting, Ralf, Stefan Dieker: Datenstrukturen und Algorithmen. 2. Auflage - B.G. Teubner, Stuttgart, Leipzig, Wiesbaden, 2003