Kürzeste Wege in einem gewichteten Graphen. Anwendungen

Ähnliche Dokumente
Anmerkungen zur Übergangsprüfung

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Graphen: Datenstrukturen und Algorithmen

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

Algorithmen und Datenstrukturen 2

1 topologisches Sortieren

Maximizing the Spread of Influence through a Social Network

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

4 Greedy-Algorithmen (gierige Algorithmen)

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Breiten- und Tiefensuche in Graphen

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

Statistische Untersuchungen zu endlichen Funktionsgraphen

Fully dynamic algorithms for the single source shortest path problem.

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

Codierung, Codes (variabler Länge)

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Konzepte der Informatik

Algorithmen und Datenstrukturen 2

Verfahren zur Berechnung von Routen zur Gewährleistung von Ende-zu-Ende QoS

Algorithmen und Datenstrukturen

Das Briefträgerproblem

Vorlesung 3 MINIMALE SPANNBÄUME

16. All Pairs Shortest Path (ASPS)

Internet Routing. SS 2012 Grundlagen der Rechnernetze Internetworking

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

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Wissensbasierte Systeme

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Wasserfall-Ansätze zur Bildsegmentierung

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

8 Diskrete Optimierung

Projekthefter. Distanzprobleme in Graphen. Deutsche Telekom AG, Hochschule für Telekommunikation Leipzig. Steve Martin und Rico Gemeinhardt

Grundlagen der Programmierung 2. Bäume

Diskrete Modellierung

Die k kürzesten Wege in gerichteten Graphen

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

SS 2005 FAU Erlangen Eine Wegeplanungs-Strategie. Jeremy Constantin, Michael Horn, Björn Gmeiner

Guten Morgen und Willkommen zur Saalübung!

Algorithmen II Vorlesung am

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Seminar künstliche Intelligenz

Kapitel 4: Analyse von Petrinetzen

WS 2009/10. Diskrete Strukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

8. Uninformierte Suche

Lange Nacht der Wissenschaft. Ein Klassiker. Die Mathematik der Kürzesten Wege

Algorithmen für Peer-to-Peer-Netzwerke Sommersemester Vorlesung

Highway Hierarchies. Kristian Dannowski, Matthias Hoeschel

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen:

Datenstrukturen & Algorithmen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Grundwissen Informatik Q11/12 Fragenkatalog

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester

x 2 x 1 x Lernen mit Entscheidungsbäumen

3. Entscheidungsbäume. Verfahren zum Begriffslernen (Klassifikation) Beispiel: weiteres Beispiel: (aus Böhm 2003) (aus Morik 2002)

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Gyarmati Michael p1/15. Softwarepraktikum. Gyarmati Michael

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Matching Algorithmen.» Algorithmus mit Sexappeal - Machbarkeit und Vision in Produktion, Projektplanung und Personalwesen «

Alles zu seiner Zeit Projektplanung heute

Algorithmentheorie Maximale Flüsse

3 Quellencodierung. 3.1 Einleitung

Parallele und funktionale Programmierung Wintersemester 2013/ Übung Abgabe bis , 16:00 Uhr

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

Duplikatfilterung und Sampling von Webseiten

Diplomprüfung. Operations Research I WS 2007/2008 (4 Punkte)

Algorithmische Methoden der Netzwerkanalyse

Periodische Fahrpläne und Kreise in Graphen

Algorithmen und Datenstrukturen Suchbaum

10 Dynamische Programmierung

2.5. VERBINDUNGSNETZWERKE GESTALTUNGSKRITERIEN DER NETZWERKE TOPOLOGIE ALS GRAPH. Vorlesung 5 TOPOLOGIE: DEFINITIONEN : Sei G = (V, E) ein Graph mit:

Informatik I WS 07/08 Tutorium 24

Steinerbäume. Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering

Auftragsbearbeitung 3.1

Algorithmen und Datenstrukturen (WS 2007/08) 63

Algorithmen und Datenstrukturen Balancierte Suchbäume

Wie findet das Navi den Weg?

Künstliche Intelligenz Maschinelles Lernen

Software-Engineering SS03. Zustandsautomat

Datenstrukturen und Algorithmen SS07

Ein Algorithmus für die

AutoSPARQL. Let Users Query Your Knowledge Base

Computer Graphik II Tesselierung impliziter Kurven und Flächen

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

WORKFLOW DESIGNDOKUMENT

syntax.tex Eine Übersicht

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2

Bayeux. Dirk Ewerlin

Modul N5 - Routing. Informatik erleben. Anwendung: http, smtp. Transport: TCP, UDP. Segment. Vermittlung: IP. Datagramm. Sicherung: Ethernet, PPP

Ohne Mathematik undenkbar!

Das Collatz Problem. Dieter Wolke

Vortrag. Suchverfahren der Künstlichen Intelligenz. Sven Schmidt (Technische Informatik)

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Überblick. Einführung Graphentheorie

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Transkript:

Kürzeste Wege in einem gewichteten Graphen Dazu werden die Gewichte als Weglängen interpretiert. Der kürzeste Weg zwischen zwei Knoten in einem zusammenhängenden Graphen ist derjenige, bei dem die Summe der Gewichte über die durchlaufenen Kanten den kleinstmöglichen Wert annimmt. Anwendungen Routenplanung Routing im Internet dijkstra.pdf, Seite 1

Der Algorithmus von Dijkstra Gegeben: zusammenhängender gewichteter (gerichteter oder ungerichteter) Graph mit positiven Gewichten. Der Algorithmus liefert von einem fest gewählten Startknoten den kürzesten Weg zu allen anderen Knoten. (sofern diese vom Startknoten aus überhaupt durch einen Weg erreichbar sind) Funktionsweise Es gibt unmarkierte, temporär markierte und permanent markierte Knoten, jeder markierte Knoten bekommt eine Zahl (Label) L j sowie einen Vorgängerknoten zugeordnet, für die umarkierten Knoten setze L j =. Zu Beginn ist der Startknoten 1 permanent markiert mit Label P 1 = 0, alle anderen Knoten sind unmarkiert. dijkstra.pdf, Seite 2

Teilschritte des Algorithmus von Dijkstra in jedem Schritt wähle den aktuellen Knoten i unter den temporär markierten Knoten als denjenigen mit dem kleinsten Label und führe folgende Teilschritte durch: der aktuelle Knoten i wird permanent markiert, sein Label L i bleibt von nun an unverändert und gibt die kürzeste Entfernung zwischen den Knoten 1 und i an. Durchlaufe alle Kanten ij mit Gewicht g(i, j), die den aktuellen Knoten i mit einem noch nicht permanent markierten Knoten j verbinden. Dabei wird der Knoten j temporär markiert und ist Li + g(i, j) < L j, so setze L j = L i + g(i, j) und wähle i als Vorgängerknoten für j, ist Li + g(i, j) L j, so bleiben L j und der Vorgängerknoten von j unverändert. dijkstra.pdf, Seite 3

Ende des Algorithmus Der Algorithmus ist beendet, wenn es keine temporär markierten Knoten mehr gibt. Ist der Graph (stark) zusammenhängend, sind dann alle Knoten permanent markiert. Das Label L i gibt dann die Entfernung vom Startknoten 1 an, den kürzesten Weg zwischen den Knoten 1 und i bekommt man, indem man entlang der Vorgängerknoten zurück geht. Bemerkung Während der Zwischenschritte gilt: Das Label L j zusammen mit den jeweiligen Vorgängerknoten gibt den jeweils kürzesten schon gefundenen Weg zwischen 1 und j an. Ist die Markierung von j permanent, so steht fest, dass dies der kürzeste mögliche Weg ist, bei einer temporären Markierung ist es möglich, dass in einem späteren Schritt noch ein kürzerer Weg gefunden wird. dijkstra.pdf, Seite 4

dijkstra.pdf, Seite 5

dijkstra.pdf, Seite 6

dijkstra.pdf, Seite 7

dijkstra.pdf, Seite 8

dijkstra.pdf, Seite 9

dijkstra.pdf, Seite 10

dijkstra.pdf, Seite 11

dijkstra.pdf, Seite 12

dijkstra.pdf, Seite 13

dijkstra.pdf, Seite 14

dijkstra.pdf, Seite 15

dijkstra.pdf, Seite 16

dijkstra.pdf, Seite 17

dijkstra.pdf, Seite 18

Bemerkungen Die Kanten, die jeden Knoten mit seinem jeweiligen Vorgänger verbinden, bilden einen aufspannenden Baum, durch den alle kürzesten Wege vom Startknoten zu jedem anderen Knoten verlaufen. Dieser Baum ist im allgemeinen kein minimaler aufspannender Baum, wie er mit dem Algorithmus von Kruskal bestimmt werden kann. Der durch den Algorithmus von Dijkstra bestimmte Baum hängt im allgemeinen vom Startknoten ab. Der Algorithmus von Dijkstra funktioniert sowohl für gerichtete als auch für ungerichtete Graphen. Im Fall eines gerichteten Graphen werden nur Kanten betrachtet, die vom aktuellen Knoten ausgehen und zu einem noch nicht permanent markierten Knoten führen. dijkstra.pdf, Seite 19

Weitere Bemerkungen Bei geeigneter Implementierung hat der Algorithmus eine Komplexität von O(n log n + m), wobei n die Anzahl der Knoten und m die Anzahl der Kanten ist. Der Algorithmus von Dijkstra ist ein GreedyAlgorithmus. Soll nur der kürzeste Weg vom Startknoten A zu einem bestimmten Knoten B gefunden werden, so kann der Algorithmus abgebrochen werden, sobald B permanent markiert ist. dijkstra.pdf, Seite 20

Tabellarische Darstellung: Vorgehensweise Die Tabelle wird zeilenweise erstellt. Zunächst wählt man den Knoten i mit der kleinsten temporären Markierung L i aus der Vorgängerzeile als aktuellen Knoten. Dann betrachtet man alle noch nicht permanent markierten Nachbarknoten j des aktuellen Knotens i und prüft, ob L i + g(i, j) < L j. Wenn ja, trägt man diesen Wert sowie i als Vorgängerknoten von j in die Tabelle ein, ansonsten übernimmt man den Eintrag der letzten Zeile. Für die Knoten j, die keine Nachbarn des aktuellen Knotens sind, übernimmt man ebenfalls die Einträge aus der letzten Zeile. Tabellarische Darstellung am Beispiel aktuell KA OL ZH LU KS BZ MI KA/0 0/* 231/KA 265/KA OL/231 231/KA 265/KA 284/OL 348/OL ZH/265 265/KA 284/OL 348/OL 448/ZH LU/284 284/OL 348/OL 425/LU KS/348 348/OL 425/LU 538/KS BZ/425 425/LU 538/KS MI/538 538/KS dijkstra.pdf, Seite 21

Weiteres Beispiel (Startknoten A) akt. A B C D E F dijkstra.pdf, Seite 22

Weiteres Beispiel (Startknoten A) akt. A B C D E F A/0 0/* 3/A 6/A dijkstra.pdf, Seite 23

Weiteres Beispiel (Startknoten A) akt. A B C D E F A/0 0/* 3/A 6/A B/3 3/A 8/B 5/B 9/B dijkstra.pdf, Seite 24

Weiteres Beispiel (Startknoten A) akt. A B C D E F A/0 0/* 3/A 6/A B/3 3/A 8/B 5/B 9/B E/5 7/E 5/B 9/B dijkstra.pdf, Seite 25

Weiteres Beispiel (Startknoten A) akt. A B C D E F A/0 0/* 3/A 6/A B/3 3/A 8/B 5/B 9/B E/5 7/E 5/B 9/B C/7 7/E 11/C 8/C dijkstra.pdf, Seite 26

Weiteres Beispiel (Startknoten A) akt. A B C D E F A/0 0/* 3/A 6/A B/3 3/A 8/B 5/B 9/B E/5 7/E 5/B 9/B C/7 7/E 11/C 8/C F/8 10/F 8/C dijkstra.pdf, Seite 27

Weiteres Beispiel (Startknoten A) akt. A B C D E F A/0 0/* 3/A 6/A B/3 3/A 8/B 5/B 9/B E/5 7/E 5/B 9/B C/7 7/E 11/C 8/C F/8 10/F 8/C D/10 10/F dijkstra.pdf, Seite 28

Bemerkung Auf die explizite Notation der Vorgängerknoten kann verzichtet werden. Der Vorgänger einen Knotes j ist immer der aktuelle Knoten in derjenigen Zeile, in der die endgültige Markierung von j zum ersten Mal auftritt. akt. A B C D E F A/0 0 3 6 B/3 3 8 5 9 E/5 7 5 9 C/7 7 11 8 F/8 10 8 D/10 10 Z. B. ist C der Vorgänger von F, da die Markierung 8 erstmals in der Zeile mit C als aktuellem Knoten auftritt. dijkstra.pdf, Seite 29