15. Elementare Graphalgorithmen

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

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

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

Algorithmen und Datenstrukturen

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

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

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring

Algorithmen und Datenstrukturen

Lernmodul 7 Algorithmus von Dijkstra

Motivation Kap. 6: Graphen

Lösungsvorschlag Hausübung 8

Algorithmen und Datenstrukturen 2-1. Seminar -

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2

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

Algorithmen und Datenstrukturen 2

Breitensuche BFS (Breadth First Search)

Algorithmen und Datenstrukturen

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

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Breiten- und Tiefensuche in Graphen

Klausur Theoretische Informatik I WS 2004/2005

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

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

Vorlesung Datenstrukturen

Übung Algorithmen und Datenstrukturen

Lösungen zu Kapitel 5

Kap. 6.6: Kürzeste Wege

Kodieren Von Graphen

Graphen und Bäume. A.1 Graphen

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

Algorithmen & Datenstrukturen 2 Praktikum 3

Vorlesung 3: Graphenalgorithmen. Markus Püschel David Steurer Peter Widmayer. PDF download goo.gl/ym3spq

9 Minimum Spanning Trees

Grundbegriffe der Informatik

Graphen. Anwendung, Repräsentation, Tiefensuche, Breitensuche, Warshall s Algorithmus, kürzeste Wege.

Graphenalgorithmen I

Graphdurchmusterung, Breiten- und Tiefensuche

Datenstrukturen und Algorithmen 2. Klausur SS 2001

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

Einführung in die Informatik 2

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

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

Vorlesung Datenstrukturen

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

Kapitel 6: Graphalgorithmen Gliederung

14. Rot-Schwarz-Bäume

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Exkurs: Graphtraversierung

Wie wird ein Graph dargestellt?

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke

Graphen. Graphen und ihre Darstellungen

Einheit 11 - Graphen

Routing Algorithmen. Begriffe, Definitionen

Vorlesung Datenstrukturen

2. Repräsentationen von Graphen in Computern

8. Übung zu Algorithmen I 15. Juni 2016

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Programmierkurs Python

Programmierkurs Python II

5. Bäume und Minimalgerüste

Algorithmen und Datenstrukturen 14. Vorlesung

Relationen und Graphentheorie

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

Relationen und DAGs, starker Zusammenhang

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

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

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.

Algorithmen und Datenstrukturen

NAME, VORNAME: Studiennummer: Matrikel:

Algorithmen & Komplexität

8 Diskrete Optimierung

Quicksort ist ein Divide-and-Conquer-Verfahren.

Wiederholung zu Flüssen

Programmiertechnik II

Graphalgorithmen. Graphen

Tutoraufgabe 1 (Suchen in Graphen):

Algorithmen und Datenstrukturen

Wiederholung

12. AuD Tafelübung T-C3

Programmiertechnik II

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

Algorithmische Methoden zur Netzwerkanalyse

10. Übungsblatt zu Algorithmen I im SS 2010

9. Übung Algorithmen I

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

Kürzeste-Wege-Algorithmen und Datenstrukturen

Berechnung minimaler Spannbäume. Beispiel

Flüsse in Netzwerken

Algorithmen und Datenstrukturen 2

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

Algorithmen und Datenstrukturen (WS 2007/08) 63

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).

3 Klassifikation wichtiger Optimierungsprobleme

Graphen: Datenstrukturen und Algorithmen

Datenstrukturen. einfach verkettete Liste

ADS: Algorithmen und Datenstrukturen 2

Grundbegriffe der Informatik Tutorium 8

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen)

Transkript:

Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen von Graphen Schließlich einfache Graphalgorithmen: Breiten- und Tiefensuche, Zusammenhangskomponenten, Minimalspannende Bäume

Wiederholung Graphen Gerichtete Graphen Ein gerichteter Graph G ist ein Paar (V,E), wobei E eine endliche Menge ist und E V V. Elemente aus V heissen Knoten, Elemente aus E heissen Kanten. Entsprechend heisst V Knotenmenge und E heisst Kantenmenge von G. Kanten sind geordnete Paare von Knoten. Kanten der Form (u,u), u V, sind zugelassen und heissen Schleifen. Ist (,v) E u, so sagen wir, dass die Kante von u nach v führt. Sagen auch, dass u und v adjazent sind. Müssen dann aber noch Richtung berücksichtigen. 2

Illustration gerichteter Graph V = {,2,3,4,5,6 } E = {(,2 ), ( 2,2 ), ( 2,4 ), ( 2,5 ), ( 4,, ) ( 4,5 ), ( 5,4 ), ( 6,3 )} 2 3 4 5 6 3

Wiederholung Graphen Ungerichtete Graphen Ein ungerichteter Graph G ist ein Paar (V,E), wobei V eine endliche Menge ist und E eine Menge von 2-elementigen Teilmengen von V ist. Elemente aus V heissen Knoten, Elemente aus E heissen Kanten. Entsprechend heisst V Knotenmenge und E heisst Kantenmenge von G. Formal haben Kanten die Form {,v} mit u,v V u. Schreiben aber wir bei gerichteten Graphen Kanten als Paare (u,v), unterscheiden dabei aber nicht zwischen (u,v) und (v,u). Kanten der Form (u,u) sind nicht zugelassen. Ist ( u,v ) E, so sagen wir, dass u und v adjazent sind. 4

Illustration ungerichteter Graph V = {,2,3,4,5,6 } E = {(,2 ), (,5 ), ( 2,5 ), ( 6,3 )} 2 3 4 5 6 5

Darstellung von Graphen Adjazenzlisten () Die Adjazenzlisten-Darstellung eines Graphen G=(V,E) besteht aus einem Array Adj von V Listen. Pro Knoten u enthält Adj damit genau eine Liste Adj u. [ ] Für alle u V enthält Adj [ u] alle Knoten, die zu u Adj u enthält alle Knoten u,v. adjazent sind. Äquivalent, [ ] v, so dass ( ) E Knoten in [ u] Adj sind in beliebiger Reihenfolge gespeichert. 6

Darstellung von Graphen Adjazenzlisten (2) Ist G gerichtet, so enthalten alle Listen in Adj zusammen genau E Einträge. Ist G ungerichete, so enthalten alle Listen in Adj zusammen genau 2 E Einträge, denn eine Kante (u,v) führt zu Eintrag v in Adj [ u] und zu Eintrag Adj v. u in [ ] 7

Darstellung von ungerichteten Graphen Adjazenzlisten 2 3 5 4 2 3 4 5 2 5 / 5 3 4 / 2 4 / 2 5 3 / 4 2 / 8

Darstellung von gerichteten Graphen Adjazenzlisten 2 3 4 5 6 2 3 4 5 6 2 4 / 5 / 6 5 / 2 / 4 / 6 / 9

Darstellung von Graphen Adjazenzmatrix Für die Adjazenzmatrix-Darstellung eines Graphen nehmen wir an, dass die Knoten in V mit den Zahlen von K,, V nummeriert sind. Die Adjazenzmatrix von G ist dann eine A = ( a ij ) mit, falls ( i, j) E a ij =. 0, sonst V V Matrix Ist G ein ungerichteter Graph, so ist die Matrix A symmetrisch, d.h. für alle (i,j) gilt a = a. Adjazenmatrix benötigt immer Speicher ( ) 2 V ij ji Θ. 0

Darstellung von ungerichteten Graphen - Adjazenzmatrix 2 3 5 4 2 3 4 5 0 0 0 2 0 3 0 0 0 4 0 0 5 0 0

Darstellung von gerichteten Graphen - Adjazenzmatrix 2 3 4 5 6 2 3 4 5 6 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 4 0 0 0 0 0 5 0 0 0 0 0 6 0 0 0 0 0 2

Vergleich der Darstellungen Die Adjazenzlisten-Darstellung ist besser, wenn E 2 viel kleiner ist als V, also bei dünn besetzten Graphen. Die Adjazenzmatrix-Darstellung ist besser, wenn E etwa so groß ist wie Graphen. 2 V, also bei dicht besetzten Mit Adjazenzmatrix kann bei je zwei Knoten u,v in konstanter Zeit überprüft werden, ob ( u,v ) E. Die meisten Graphenalgorithmen in dieser Vorlesung benutzen allerdings Adjazenzlisten. 3

Breitensuche Überblick () Die Breitensuche ist ein Algorithmus, der die Grundlage vieler Graphenalgorithmen bildet. Ziel der Breitensuche ist es, bei einem Graphen G=(V,E) und einer Quelle s V alle Knoten v V zu finden, die von s aus erreichbar sind. Dabei ist ein Knoten v von s aus erreichbar, wenn es in G einen Pfad von s nach v gibt. Die Breitensuche berechnet auch für alle Knoten v den Abstand δ ( s,v ) von s zu v. Dabei ist der Abstand von s zu v die minimale Anzahl von Kanten auf einem Pfad von s nach v. 4

Breitensuche - Überblick (2) Die Breitensuche bestimmt alle Knoten mit Abstand < k vor den Knoten mit Abstand k. Daher der Name Breitensuche. Graphensuche funktioniert in gleicher Weise bei gerichteten und ungerichteten Graphen. Nehmen an, dass Eingabegraph in Adjazenzlisten- Darstellung gegeben ist. Sagen, dass ein Knoten entdeckt wird, wenn er das erste Mal bei der Breitensuche angetroffen wird. 5

Breitensuche - Überblick (3) Wird v entdeckt, während [ u] Adj nach neuen Knoten durchsucht wird, so heisst u Vorgänger von v. Knoten sind entweder weiss, grau oder schwarz. Weiss sind alle noch nicht entdeckten Knoten. Grau sind alle entdeckten Knoten, deren Adjazenzliste noch nicht vollständig nach neuen Knoten durchsucht wurde. Schwarz sind alle anderen Knoten, d.h., schwarze Knoten wurden bereits entdeckt und ihre Adjazenzliste wurde vollständig durchsucht. 6

Pseudocode für Breitensuche ( ) jeden Knoten u in V \ { s} do color[ u] WHITE d[ u] π[ NIL color[ u] : = Feld für Farbe von v. Initial [ s] GRAY WHITE. [ ] 0 [ s] NIL d[ u] : = Feld für bislang berechneten { } Abstand zu s. Initial. ( Q,s ) Q { } π [ u] : = Feld für Vorgänger. Initial NIL. do u Dequeue( Q) for v Adj[ u] do if color [ v ] = WHITE then color[ v] GRAY d[ v] d[ u] + π[ u Enqueue( Q,v ) color[ u] BLACK BFS G,s for 2 3 4 5 color 6 d s 7 π 8 Q 9 Enqueue 0 while 2 3 4 5 6 7 8 BFS benutzt Queue für graue Knoten. 7

8 Illustration Breitensuche () 0 r v u t s y x w Q s 0 0 r v u t s y x w Q w r

9 Illustration Breitensuche (2) 0 r v u t s y x w Q w r 0 2 2 r v u t s y x w Q r t 2 x 2

Illustration Breitensuche (3) r s 0 t u 2 3 Q= 2 2 3 v w x y 20

Breitensuche Laufzeitanalyse () Zeilen 2-4 jeweils konstante Zeit. Werden V mal O V. durchlaufen. Damit Zeit ( ) Zeilen 5-9 insgesamt konstante Zeit. Jeder Knoten wird nur einmal in Queue eingefügt und gelöscht. Schleife in Zeilen 2-7 wird für jeden Eintrag v in Adjazenzlisten nur einmal durchlaufen. Zeilen 2-7 pro Durchlauf Zeit O ( ). 2

Breitensuche Laufzeitanalyse (3) Gesamtzeit für Durchläufe der Schleife in Zeilen -8 insgesamt O ( E ). Denn Gesamtgröße Θ E. aller Adjazenzlisten ( ) Satz 5.: Bei Eingabe von Graph G=(V,E) und Quelle s besitzt Algorithmus BFS Laufzeit O ( V + E ) 22

Pseudocode für Breitensuche ( ) jeden Knoten u in V \ { s} do color[ u] WHITE d[ u] π[ NIL color[ u] : = Feld für Farbe von v. Initial [ s] GRAY WHITE. [ ] 0 [ s] NIL d[ u] : = Feld für bislang berechneten { } Abstand zu s. Initial. ( Q,s ) Q { } π [ u] : = Feld für Vorgänger. Initial NIL. do u Dequeue( Q) for v Adj[ u] do if color [ v ] = WHITE then color[ v] GRAY d[ v] d[ u] + π[ u Enqueue( Q,v ) color[ u] BLACK BFS G,s for 2 3 4 5 color 6 d s 7 π 8 Q 9 Enqueue 0 while 2 3 4 5 6 7 8 BFS benutzt Queue für graue Knoten. 23

Breitensuche Erreichbarkeit, Kürzeste Pfade () Lemma 5.2: Sei G= (V,E) ein gerichteter oder ungerichteter Graph. Sei s V beliebig. Für jede Kante ( u,v ) E gilt δ ( s,v) δ( s,u) +. Lemma 5.3: Sei G=(V,E) ein gerichteter oder ungerichteter Graph. Sei s V beliebig und s,g Eingabe für BFS. Nach Beendigung von BFS gilt für jeden Knoten v V d [ v] δ( s,v ). 24

Breitensuche Erreichbarkeit, Kürzeste Pfade (2) Lemma 5.4: Die Queue Q enthalte zu einem beliebigen Zeitpunkt des Ablaufs von BFS die Knoten ( v, K, v r ), wobei v der Kopf head [ Q] und v r das Ende tail [ Q] sei. Dann gilt [ v ] d[ v ] + und d[ v ] d[ v ],i =, K,r -. d r i i+ Korollar 5.5: Knoten v i werde während des Ablaufs von BFS vor Knoten v j in die Queue Q eingefügt. Zum Zeitpunkt, an dem v j in die Queue Q eingefügt wird, gilt d [ v ] d[ v ]. i j 25

Breitensuche Erreichbarkeit, Kürzeste Pfade (3) Satz 5.6: Sei G=(V,E) ein gerichteter oder ungerichteter Graph. Sei s V beliebig und s,g Eingabe für BFS. Nach Beendigung von BFS gilt für jeden Knoten v V Insbesondere sind die von s aus erreichbaren d v <. Knoten v die Knoten mit [ ] d [ v] = δ( s,v ). Weiter ist für jeden von s aus erreichbaren Knoten v s ein kürzester Pfad von s zu v gegeben durch einen kürzesten Pfad von s zum Vorgänger π [ v] π v,v. von v erweitert um die Kante ( [ ] ) 26

Breitensuchbäume Betrachten nach BFS mit Eingabe G,s den Graphen G V, E mit π = ( ) π und Dann gilt π Satz 5.7: ( V, E ) G π = π π ist ein Baum. V π enthält genau die von s aus erreichbaren Knoten in G. Für jeden Knoten v Vπ ist der eindeutige Pfad von s zu v in G ein kürzester Pfad von s zu v in G. π V π E π = { v V π[ v] NIL} { s}. ( π[ v ],v ) v V \ { s} : = { }. π 27