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

Ähnliche Dokumente
Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2-1. Seminar -

Vorlesung Datenstrukturen

Diskrete Strukturen WS 2005/06. Ernst W. Mayr. 27. Januar Fakultät für Informatik TU München

Graphdurchmusterung, Breiten- und Tiefensuche

Wie wird ein Graph dargestellt?

15. Elementare Graphalgorithmen

2.4 Starke Zusammenhangskomponenten in Digraphen

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

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

Informatik II, SS 2018

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

Seien u, v V, u v. Da G zusammenhängend ist, muss mindestens ein Pfad zwischen u und v existieren.

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

Informatik II, SS 2016

Tutoraufgabe 1 (Suchen in Graphen):

Algorithmen und Datenstrukturen

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

ADS: Algorithmen und Datenstrukturen 2

Informatik II, SS 2016

VL-14: Graphalgorithmen I. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

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

Breitensuche BFS (Breadth First Search)

Effiziente Algorithmen

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

Einheit 11 - Graphen

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

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap.

Lernmodul 7 Algorithmus von Dijkstra

Algorithmen und Datenstrukturen

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

Kapitel IV Minimale Spannbäume

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.

Kapitel IV Minimale Spannbäume

Minimal spannende Bäume

Programmiertechnik II

Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od

12. Graphen. Königsberg Zyklen. [Multi]Graph

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

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

Vorlesung Datenstrukturen

8 Diskrete Optimierung

Graphenalgorithmen I

ADS: Algorithmen und Datenstrukturen 2

Vorlesung Datenstrukturen

Algorithmische Graphentheorie

Quicksort ist ein Divide-and-Conquer-Verfahren.

Graphen. Graphen und ihre Darstellungen

Algorithmen und Datenstrukturen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Graphentheorie. Yichuan Shen. 10. Oktober 2013

Datenstrukturen und Algorithmen (SS 2013)

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

Teil 2: Graphenalgorithmen

Programmiertechnik II

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

9 Minimum Spanning Trees

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

Bäume und Wälder. Definition 1

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

ADS: Algorithmen und Datenstrukturen 2

Bäume und Wälder. Definition 1

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

Fortgeschrittene Netzwerk- und Graph-Algorithmen

1 DFS-Bäume in ungerichteten Graphen

1 DFS-Bäume in ungerichteten Graphen

Nachbarschaft, Grad, regulär, Inzidenz

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Diskrete Mathematik Graphentheorie (Übersicht)

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen)

Vorlesung Datenstrukturen

SS10 Effiziente Algorithmen 2. Kapitel: Graphdurchläufe

Berechnung von Abständen

ADS 2: Algorithmen und Datenstrukturen

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

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

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

3.2 Generischer minimaler Spannbaum-Algorithmus

Algorithmen und Datenstrukturen

Sortierverfahren. Laufzeitkomplexität. exponentiell

= 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

Informatik II, SS 2014

Algorithmen & Komplexität

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

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

Effiziente Algorithmen

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Kapitel 5: Graphen und Graphalgorithmen

Folien aus der Vorlesung Optimierung I SS2013

Informatik B Sommersemester Musterlösung zur Klausur am

2. Repräsentationen von Graphen in Computern

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

5. Bäume und Minimalgerüste

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

Übungsblatt 2 - Lösung

Programmierkurs Python

Vorlesungstermin 2: Graphentheorie II. Markus Püschel David Steurer. Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich

Programmierkurs Python II

Transkript:

Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist. Definition 4.1.2. Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Beispiele für Graphen sind: Straßennetz (gerichtet) Eisenbahn Rechnernetz WWW (gerichtet) Projekt mit Teilprojekten (gerichtet) soziales Netzwerk 4.1.1 Weg Definition 4.1.3. Ein Weg im Graphen G = (V, E) ist eine Folge von Knoten W = (v 1,..., v n ), v 1,..., v n V, wobei die Kante e = (v i, v i+1 ), i = 1,..., n 1, in der Menge E enthalten ist. Eigenschaft 4.1.4. Ein Weg W ist einfach, wenn jeder Knoten v W genau einmal besucht wurde. Eigenschaft 4.1.5. Ein Weg W beschreibt einen Kreis, wenn v 1 = v n. Definition 4.1.6. Ein Graph G heißt azyklisch, wenn er keine Kreise enthält. 71

Definition 4.1.7. Der Durchmesser eines Graphen G ist das Maximum der Abständer alle Knotenpaare (v i, v j ) W. Definition 4.1.8. Ein Graph G ist zusammenhängend, wenn zwischen einem beliebigen Paar (v i, v j ), v i, v j V, ein Weg existiert. Ein gerichteter Graph ist stark zusammenhängend, wenn es für je zwei Knoten v i und v j einen Weg von v i nach v j gibt und einen Weg von v j nach v i. Definition 4.1.9. Eine Zusammenhangskomponente ist ein maximaler Teilgraph von G, der zusammenhängend und nicht erweiterbar ist. 4.1.2 Darstellungsformen Graphen können auf verschiedene Arten repräsentiert werden. Die gebräuchlichsten sind Adjazenzmatrizen, Adjazenlisten und Inzidenzmatrizen. Adjazenzmatrix Eine Adjazenzmatix <adjazent lat.; angrenzend, benachbart> ist eine n n-matrix, wobei n die Anzahl der Knoten in dem Graphen G = (V, E) ist. In der Matrix wird in der i-ten Zeile und in der j-ten Spalte eine 1 eingetragen, wenn e = (v i, v j ) E ist. Ist der Graph G ungerichtet, ist die Adjazenzmatrix symmetrisch. Adjazenzliste Eine Adjazenzliste ist eine Liste, die alle Knoten des Graphen G = (V, E) und zusätzlich zu jedem Knoten v V eine Liste mit seinen Nachbarn enthält. Inzidenzmatrix Eine Inzidenzmatrix ist eine n m-matrix, wobei n die Anzahl der Knoten und m die Anzahl der Kanten des Graphen G = (V, E) ist. Ist G ungerichtet, dann wird in der i-ten und j-ten Zeile der l-ten Spalte eine 1 eingetragen, wenn e l = (v i, v j ) E. Ist G gerichtet dann enthält die Zeile zu v i eine 1 (Startknoten) und die Zeile zu v j eine 1 (Endknoten). 4.1.3 Traversierung von Graphen Zwei bekannte Varianten, wie Graphen durchlaufen werden können, sind Breitensuche und Tiefensuche. Breitensuche - BFS (engl; breath first search) In der Breitensuche werden zuerst alle Geschwisterknoten durchsucht und dann die Kinderknoten. Bemerkung. Breitensuche findet immer den kürzesten Weg 72

Tiefensuche - DFS (engl; depth first search) In der Tiefensuche werden zuerst rekursiv alle Kinderknoten durchsucht bevor die Geschwisterknoten durchsucht werden. Bemerkung. Enthält der Graph G = (V, E) einen unendlich langen Weg, ist nicht sichergestellt, dass Tiefensuche einen Weg von v i nach v j mit v i, v j V findet. Tiefensuche kann eingesetzt werden um den Weg aus einem Labyrinth zu finden, oder um Zusammenhangskomponenten in einem Graphen zu bestimmen. 4.1.4 Topologisches Sortieren Definition 4.1.10. Topologisches Sortieren ordnet die Knoten eines gerichteten, azyklischen Graphen G = (V, E) so an, dass der Knoten u vor dem Knoten v erscheint, wenn G die Kante (u, v) enthält. Beispiel. Teilaufgaben eines Projektes, die hintereinander abgearbeitet werden müssen, Etappen eines Wettkampfes die nacheinander absolviert werden müssen oder Veranstaltungen eines Studienfaches die aufeinander aufbauen. Eine topologische Sortierung des Graphen in 4.1 ist a, f, b, c, g, d, e. Abbildung 4.1: Graph für die topologische Suche 4.1.5 Teilgraph Seien G = (V, E ) und G = (V, E) zwei Graphen. Ist V V und E E dann ist G ein Teilgraph von G. G ist ein induzierter Teilgraph von G, wenn G alle Kanten zwischen den Knoten aus V enthält, die in G vorhanden sind, formal: E = E ( ) V. 2 4.2 starke Zusammenhangskomponenten Definition 4.2.1. Ein induzierter Teilgraph G von G, heißt starke Zusammenhangskomponente falls G stark zusammenhängend ist und es keinen größeren Teilgraphen gibt, der G enthält und stark zusammenhängend ist. 73

(a) (b) (c) Abbildung 4.2: (a) Ausgangsgraph. (b) Teilgraph von (a). (c) Induzierter Teilgraph mit der gleichen Knotenmenge wie in (b). Problem 4.2.2. Gegeben ist ein gerichteter Graph G = (V, E). Gesucht sind nun die starken Zusammenhangskomponenten von G. Algorithm 4: Finde Zusammenhangskomponenten 1. Führe DFS(G) aus, wähle den Startknoten zufällig und nummeriere Knoten in DFS-Reihenfolge 2. Konstruiere G T = (V, E T ) mit E T = {(u, v) (v, u) E} // Graph mit umgedrehten Kanten 3. Führe DFS(G T ) aus, wähle den Startknoten mir der höchsten Nummer und nummeriere Knoten in DFS-Reihenfolge // wie in Schritt 1 Eine Veranschaulichung ist in 4.3 und in 4.4 gegeben. Abbildung 4.3: Graph nach Schritt 1 Behauptung 4.2.3. u, v sind in gleicher Zusammenhangskomponente u, v in gleichem Baum von DFS(G T ). Beweis. Zuerst beweisen wir. Es ist ein Weg von u nach v und ein Weg von v nach u in G enthalten, dann ist auch ein Weg von u nach v und ein Weg von v nach u in G T enthalten. O.B.d.A. wird DFS(u, G T ) vor DFS( v, G T ) aufgerufen. 74

Abbildung 4.4: Graph nach Schritt 3 Da v vor dem Aufruf von DFS(u,G T ) noch nicht besucht wurde und es einen Weg von u nach v in G T gibt, wird v innerhalb dieses Aufrufs gefunden und gehört somit zu dem Unterbaum von u. Also, ist v in dem gleichen DFS-Baum wie u. Als nächstes Beweisen wir. Dazu werden wir zeigen, dass alle Knoten der Zusammenhangskomponente im gleichen Baum wie die Wurzel der Zusammenhangskomponente sind. Angenommen x sei die Wurzel von v. Daraus folgt, dass ein Weg von x nach v in G T enthalten ist, das heißt, es gibt einen Weg von v nach x in G. Da x die Wurzel von v ist, ist die Nummer von x größer als die Nummer von v (nach dem Schritt 1). Daraus folgt dass DFS( x, G) nach DFS( v, G) beendet wird. Dies kann nur geschehen wenn x und v verschachtelt (4.5) oder disjunkt (4.6) sind. Abbildung 4.5: verschachtelter Aufruf Abbildung 4.6: disjunkter Aufruf Abbildung 4.7: verschachtelter Aufruf (2) Jetzt müssen wir noch ausschließen, dass x und v disjunkt sind. Angenommen DFS(v,G) wird vor DFS(x,G) aufgerufen. Da der Weg v nach x in G enthalten ist, müsste der Aufruf von DFS(x,G) aus dem Aufruf von DFS(v,G) heraus 75

geschehen (siehe Abbildung 4.7) und damit auch die Nummer von v größer als die Nummer von x sein. Dies ist ein Widerspruch! Also, wurde DFS( v, G) innerhalb von DFS( x,g) aufgerufen. Das bedeutet, es gibt einen Weg von x nach v in G. Damit liegen x und v in der gleichen starken Zusammenhangskomponente. 4.3 Minimal spannende Bäume Gegeben sei ein ungerichteter, zusammenhängender Graph G = (V, E) und eine Kostenfunktion c : E R. Gesucht ist ein spannender Baum mit minimalen Kosten. Ein Beispiel für dieses Problem ist die Elektrizitätsversorgung. Knoten sind dann die Orte, die Kosten sind die Kosten um Leitungen zu verlegen oder Abstände zwischen den Orten. Lemma 4.3.1. Der Graph G = (V, E) sei ein Baum. e = (u, v) / T, u, v V im Graph G = (V, T {e}) existiert genau ein Kreis. Beweis. Für den Beweis zeigen wir zuerst, dass e einen Kreis schließt und anschließend, dass es nur einen Kreis geben kann. 1. G sei ein Baum wie oben gefordert. Dann existiert ein Weg von u nach v mit Kanten aus T. e schließt den Kreis. 2. Es existiert nur ein Kreis: Angenommen es gäbe zwei Kreise in G. Wir betrachten die Punkte, an denen die Kreise zum ersten Mal auseinander gehen und zum ersten Mal zusammen kommen. Es existierte also schon zuvor ein Kreis zwischen diesen Knoten in G (siehe Abbildung 4.8). Widerspruch! Abbildung 4.8: zwei Kreise Lemma 4.3.2. Gegeben G = (V, E) und ein spannender Wald (V 1, T 1 ),..., (V k, T k ), T = k T i (Wie in Abbildung 4.9). Sei e = (u, v)u V 1, v / V 1 mit minimalen i=1 Kosten. Dann existiert ein spannender Baum von G, der T {e} enthält und der minimale Kosten unter Bäumen, die T enthalten, hat. Beweis. Angenommen S sei ein spannender Baum, S = (V, T ), T T, e / T, S minimal. Nach Lemma 4.3.1 hat der Graph (V, T {e}) genau einen Kreis. 76

Abbildung 4.9: spannender Wald Es existiert eine Kante e = (u, v ) mit u V 1, v / V 1 (Siehe Abbildung 4.10). c(e) c(e ) nach Definition von e. S = (V, T {e}\{e }) ist zusammenhängend, kreisfrei und Kosten von S Kosten von S. Abbildung 4.10: Wald mit zusätzlichen Knoten Wie findet man nun einen minimalen spannenden Baum? Idee Fange mit Wald {V 1 }, {V 2 },..., {V n } an. Füge nacheinander Kanten mit minimalen Kosten ein, die V i mit V j verbinden, i j. Dabei werden Kanten ignoriert, die Knoten im gleichen Baum verbinden. Als Datenstruktur wird UNION-FIND genutzt. Algorithm 5: Algorithmus von Kruskal Initialisierung: T :=, Q := alle Knoten, V S := {V 1 },..., {V n } while V S > 1 do e = (v, w) ist die Kante mit minimalen Kosten aus Q entferne e aus Q V = F IND(v) W = F IND(w) IF(V W ) THEN UNION(V, W ) T := T {e} Wegen Lemma 4.3.2 enthält T nun Kanten eines minimal spannenden Baums von G. Laufzeit Zeile 1 Prioritätsschlange hat Laufzeit O(m log(m)) mit m = E und V S hat die Laufzeit O(n) mit n = V. 77

Zeilen 3 und 4 Das Finden des Minimums dauert O(m log(m)). Zeilen 5 und 6 Es gibt O(m) UNION-FIND-Operationen. Diese haben zusammen eine Laufzeit von O(m log (m)) oder genauer O(mα(2m, n)). Zeilen 8 und 9 Die Vereinigung ist bekannter Maßen in konstanter Zeit möglich, deshalb ist Laufzeit O(1). Gesamt Da die Zeilen 3 und 4 am meisten Zeit benötigen, ergibt sich eine Gesamtlaufzeit von O(m log(m)). 78