Vorlesung Datenstrukturen

Ähnliche Dokumente
Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen 2-1. Seminar -

Datenstrukturen und Algorithmen (SS 2013)

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

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

12. AuD Tafelübung T-C3

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

Einführung in die Informatik 2

Vorlesung Datenstrukturen

Wie wird ein Graph dargestellt?

Programmierkurs Python II

15. Elementare Graphalgorithmen

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

Vorlesung Datenstrukturen

Informatik II, SS 2014

Algorithmen & Komplexität

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.

10. Übungsblatt zu Algorithmen I im SS 2010

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Informatik II, SS 2016

Algorithmen und Datenstrukturen 1 VL Übungstest SS Juni 2009

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen und Datenstrukturen

Informatik II, SS 2018

3.2 Generischer minimaler Spannbaum-Algorithmus

Algorithmen und Datenstrukturen

Graphdurchmusterung, Breiten- und Tiefensuche

Graphalgorithmen. 9. November / 54

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

Kap. 6.5: Minimale Spannbäume ff

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Informatik II, SS 2016

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

Lernmodul 7 Algorithmus von Dijkstra

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

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

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

Vorlesung Datenstrukturen

Wir nennen einen Pfad in einem gerichteten Graphen Zyklus, wenn der Pfad im gleichen Knoten beginnt und endet, d. h.

Algorithmen und Datenstrukturen

Software Entwicklung 1

Graphentheorie. Yichuan Shen. 10. Oktober 2013

\ 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.

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

ADS: Algorithmen und Datenstrukturen 2

Programmierung 2 Studiengang MI / WI

Datenstrukturen. einfach verkettete Liste

Algorithmen und Datenstrukturen 13

Klausurvorbereitung. 1 Zentrale Begriffe. 2 Bipartite Graphen. 2.1 Begriffe. Vorlesung Graphen und Optimierung Sommersemester 2011 Prof. S.

Algorithmen und Datenstrukturen

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

Kap. 6.6: Kürzeste Wege

Graphen: Datenstrukturen und Algorithmen

Graphenalgorithmen I

ADS: Algorithmen und Datenstrukturen 2

Kürzeste Wege in einem gewichteten Graphen. Anwendungen

Algorithmische Graphentheorie

Grundlagen: Algorithmen und Datenstrukturen

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger

Vorlesung Datenstrukturen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Programmiertechnik II

1 Kürzeste Pfade in Graphen

Programmiertechnik II

Algorithmen und Datenstrukturen 1 VL Übungstest WS Jänner 2009

Abgabe: (vor der Vorlesung)

Teil 2: Graphenalgorithmen

Aufgaben zur Klausurvorbereitung

Kap. 6.6: Kürzeste Wege

Algorithmen II Vorlesung am

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle

3. Musterlösung. Problem 1: Boruvka MST

Algorithmen und Datenstrukturen Kapitel 9. und

Fortgeschrittene Netzwerk- und Graph-Algorithmen

2.4 Starke Zusammenhangskomponenten in Digraphen

Betriebswirtschaftliche Optimierung

9 Minimum Spanning Trees

Breitensuche BFS (Breadth First Search)

Algorithmen und Datenstrukturen Kapitel 9. und

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

Betriebliche Optimierung

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Datenstrukturen. Mariano Zelke. Sommersemester 2012

WS 2009/10. Diskrete Strukturen

Folien aus der Vorlesung Optimierung I SS2013

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

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

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

Algorithmen II Vorlesung am

Teil 2: Graphenalgorithmen

Algorithmen und Datenstrukturen 2

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

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

ADS: Algorithmen und Datenstrukturen 2

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Lösungsvorschlag Hausübung 8

Transkript:

Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455

Wiederholung Traversierung eines Graphen via Tiefendurchlaufs / Breitendurchlauf 1. Wähle einen beliebigen Knoten aus dem Graph 2. Lege diesen Knoten in einem Stapel / einer Schlange ab 3. Solange der Stapel / die Schlange nicht leer ist Entnimm einen Knoten v aus dem Stapel / der Schlange Wenn v nicht markiert ist, dann Markiere v als besucht Füge alle zu v adjazenten, nicht markierten Knoten dem Stapel / der Schlange hinzu Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 456

Spannbaum Grundidee Aufgrund der systematischen Verarbeitung der Knoten eines Graphen sowie des Ignorierens bereits besuchter Knoten kann man aus der Reihenfolge der besuchten Knoten des Graphen einen Baum konstruieren, der alle Graphknoten enthält, die vom Startknoten aus erreichbar sind. Erzeugung Man generiert aus dem jeweils im Traversierungsalgorithmus verarbeiteten (noch nicht markierten) Knoten v einen Baum, bei dem v immer die (Teilbaum-)Wurzel seiner (noch nicht markierten) adjazenten Knoten darstellt, folgt dem Weg der Verarbeitung und entfernt gegebenenfalls bei Markierung eines Knotens Duplikate auf schon existierenden Ebenen. Spannwald Falls nicht alle Knoten des Graphen im Spannbaum enthalten sind, können wir den Vorgang für die nicht besuchten Knoten wiederholen und erhalten dann einen Wald von Spannbäumen. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 457

Gewichtete Graphen Verallgemeinerung von Graphen Sehr viele Probleme auf Graphen beruhen auf der Auswertung einer Kostenfunktion, die Kanten ein Gewicht zuordnet, z.b. Routenplanung (Distanzen zwischen Städten, Übertragungskosten von Energie im Energieverbund, Informationsweg zwischen Kommunikationspartnern im Internet,...) Realisierung Adjazenzmatrix: Wir speichern die tatsächlichen Gewichte der Kanten statt der Binärgewichte (Kante vorhanden / keine Kante). Adjazenzliste: Wir erweitern die Liste der adjazenten Knoten um eine Strukturkomponente, die das Gewicht der Kante zum aktuellen Knoten aufnimmt. Einschränkung Negative Gewichte sind nicht erlaubt. Diese Forderung stellt jedoch keine wirkliche Einschränkung dar, da sich Graphen entsprechend umformen lassen (Gallo, Pallottino, 1986). Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 458

Kürzester Weg zwischen zwei Knoten Algorithmus von Dijkstra Berechnet von einem gegebenen Startknoten aus die kürzesten Wege zu allen Knoten eines Graphen (die von diesem Startknoten aus erreichbar sind). Allgemeines Funktionsprinzip Für jeden Knoten u wird zusätzlich festgehalten, zu welchen günstigsten Gesamtkosten und über welchen Vorgängerknoten u vom Startknoten aus am günstigsten erreichbar ist. Falls ein Knoten v gefunden werden kann, über den man kostengünstiger zu u gelangt, werden die Gesamtkosten aktualisiert und der Vorgängerknoten von u auf v gesetzt. Startzustand Initialisiere alle Knoten mit Kosten Initialisiere Startknoten mit Kosten 0 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 459

Algorithmus von Dijkstra Eingabe Gewichteter Graph mit Knotenmenge V und Kantenmenge E mit Kantengewicht w(e E) Startknoten s V Pseudocode K(v) = für alle v V // Initialisierung der Gesamtkosten eines Knotens K(s) = 0 // Startknoten hat Kosten 0 R = V Solange R nicht leer ist Wähle v R mit kleinstem K(v) // Menge noch zu untersuchender Knoten // Verwende immer den billigsten Knoten Entferne v aus R Für alle zu v adjazenten Knoten u mit u R Wenn K(v) + w(v,u) < K(u) K(u) = K(v) + w(v,u) Vorgänger(u) = v // u ist über v billiger zu erreichen // aktualisiere Kosten von u // aktualisiere Vorgänger von u Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 460

Kürzeste Wege zwischen allen Knoten Floyd-Warshal-Algorithmus Wir testen für alle möglichen Kantenkombinationen (j,k), ob man über irgendeinen dritten Knoten i günstiger (bzw. überhaupt) von j nach k gelangen kann, also ob w(j,i) + w(i,k) < w(j,k). Wenn ja, aktualisieren wir das Gewicht w(j,k). Voraussetzung Darstellung des gewichteten Graphen mittels Adjazenzmatrix. Ergebnis Modifizierte Adjazenzmatrix, die die günstigsten Verbindungen zwischen allen Knoten (auch indirekter Art) enthält. Besonderheit Negative Gewichte sind direkt möglich. for i = 1 to V for j = 1 to V for k = 1 to V if w(j,i) + w(i,k) < w(j,k) w(j,k) = w(j,i) + w(i,k) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 461

Floyd-Warshall-Algorithmus Zyklenerkennung Der Floyd-Warshall-Algorithmus beinhaltet eine implizite Zyklenerkennung. Voraussetzung Die Elemente der Hauptdiagonalen der Adjazenzmatrix müssen mit initialisiert werden. Ergebnis Falls nach der Ausführung des Algorithmus mindestens ein Gewicht auf der Hauptdiagonalen ungleich ist, dann existiert (mindestens) ein Zyklus im Graphen. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 462

Bewertung der Verfahren Floyd-Warshall-Algorithmus Dijkstra-Algorithmus berechnet die kürzesten Wege zwischen allen Knoten eines Graphen negative Gewichte sind direkt möglich sehr hohe Berechnungskomplexität O( V 3 ) berechnet die kürzesten Wege / Kosten zwischen einem Startknoten und allen anderen Knoten nur positive Gewichte sind möglich hohe Berechnungskomplexität O( V 2 ) Fazit (für Berechnung der kürzesten Wege zwischen allen Knoten) für lichte Graphen bietet sich die V -malige Berechnung des kürzesten Weges zwischen jedem v V und den anderen Knoten nach der Methode von Dijkstra an für dichte Graphen ist die Laufzeit des Floyd-Warshall-Algorithmus akzeptabel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 463

Ein Anwendungsbeispiel Weg- bzw. Zielsuche in einem Labyrinth: Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 464

Modellierung des Labyrinths als Graph Jeden Punkt im Labyrinth, an dem sich eine Wahlmöglichkeit für den Weg bietet oder ein Weg endet, modellieren wir als Knoten und alle verbindenden Wege als Kanten eines Graphen. Da die Wege im Labyrinth in beide Richtungen beschritten werden können, sind die Kanten ungerichtet. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 465

Suchen in Graphen Suchen mittels Graphtraversierung Mit Hilfe der Graphmodellierung des Labyrinths können wir mit Hilfe der bekannten Traversierungsalgorithmen einen Weg durch das Labyrinth von dessen Eingang (dem Startknoten) zum Ausgang (einem Zielknoten) finden. Im Gegensatz zur Traversierung aller Knoten können wir die Suche abbrechen, sobald wir einen Zielknoten gefunden haben. Tiefensuche & Breitensuche Analog zum Tiefen- oder Breitendurchlauf eines Graphen bezeichnen wir das korrespondierende Suchverfahren als Tiefen- oder Breitensuche. Wegsuche & Zielsuche Je nach Aufgabenstellung kann sowohl der Zielknoten als auch der Weg dahin (oder auch beides) gefordert sein. Deshalb unterscheiden wir Suchalgorithmen bezüglich Weg- oder Zielsuche: Beispiel für Zielsuche: Floyd-Warshall-Algorithmus Beispiel für Wegsuche: Navigation eines Roboters durch ein Labyrinth (via Dijkstra-Algorithmus) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 466

Weg- und Zielsuche im Labyrinth www.onlinekunst.de/malbuch/labyrinth.html Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 467

Ende der Vorlesung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 468