Breitensuche BFS (Breadth First Search)

Ähnliche Dokumente
Das Heiratsproblem. Definition Matching

Algorithmen & Komplexität

durch Einfügen von Knoten konstruiert werden kann.

Wiederholung

Einführung in die Informatik 2

WS 2009/10. Diskrete Strukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2-1. Seminar -

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

Nachbarschaft, Grad, regulär, Inzidenz

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

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

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

9. Übung Algorithmen I

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

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

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

15. Elementare Graphalgorithmen

10. Übungsblatt zu Algorithmen I im SS 2010

Graphdurchmusterung, Breiten- und Tiefensuche

Wie wird ein Graph dargestellt?

Relationen und DAGs, starker Zusammenhang

Vorlesung Datenstrukturen

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Quicksort ist ein Divide-and-Conquer-Verfahren.

Diskrete Mathematik Graphentheorie (Übersicht)

Zweizusammenhang und starker Zusammenhang

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 Tutorium Übungsaufgaben

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

Übung Algorithmen und Datenstrukturen

Orientierung in Graphen

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

Polygontriangulierung

Grundlagen: Algorithmen und Datenstrukturen

Kapitel 5: Graphen und Graphalgorithmen

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

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

Übung Algorithmen und Datenstrukturen

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Lösungsvorschlag Hausübung 8

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

Klausur Theoretische Informatik I WS 2004/2005

Informatik II, SS 2014

Lernmodul 7 Algorithmus von Dijkstra

12. AuD Tafelübung T-C3

Algorithmen & Datenstrukturen 2 Praktikum 3

Informatik II, SS 2016

3. Musterlösung. Problem 1: Boruvka MST

Graphenalgorithmen I

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

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

Tutoraufgabe 1 (Suchen in Graphen):

1 Exploration geordneter Wurzelbäume

Ausfallsicherheit von Netzen

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

1 topologisches Sortieren

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

Das Rucksackproblem. Definition Sprache Rucksack. Satz

Verteilen von Bällen auf Urnen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Algorithmen und Datenstrukturen 2

2 Tiefen- und Breitensuche

Algorithmen II Vorlesung am

1 DFS-Bäume in ungerichteten Graphen

1 DFS-Bäume in ungerichteten Graphen

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza)

Datenstrukturen. einfach verkettete Liste

Polygontriangulierung

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

3 Klassifikation wichtiger Optimierungsprobleme

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

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

8. Übung zu Algorithmen I 15. Juni 2016

Diskrete Strukturen Wiederholungsklausur

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Bemerkung: Der vollständige Graph K n hat n(n 1)

Algorithmen & Komplexität

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

Exkurs: Graphtraversierung

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Weiterführendes Programmieren Lineare Widerstandsnetzwerke II Aufgabenblatt 6. 1 Zusammenfassung der elektrotechnischen Begriffe

Algorithmen und Datenstrukturen

10. Übung Algorithmen I

Euler und Hamiltonkreise

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Bäume und Wälder. Definition 1

Diskrete Mathematik 1

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr)

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 8 FS 16

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

8 Diskrete Optimierung

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Vorlesung Datenstrukturen

5. Bäume und Minimalgerüste

Algorithmen und Datenstrukturen 14. Vorlesung

Transkript:

Breitensuche BFS (Breadth First Search) Algorithmus BREITENSUCHE EINGABE: G = (V, E) als Adjazenzliste, Startknoten s V 1 Für alle v V 1 If (v = s) then d[v] 0 else d[v] ; 2 pred[v] nil; 2 Q new Queue; Q.Enqueue(s); 3 While (Q.Isempty() TRUE) 1 v Q.Dequeue(Q); 2 Für alle u Γ(v) 1 If d[u] = then d[u] d[v] + 1; pred[u] v; Q.Enqueue(u); AUSGABE: Arrays d[v], pred[v] für alle v V DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 111 / 136

Kürzeste u-v Pfade Satz Kürzeste u-v Pfade BREITENSUCHE berechnet bei Eingabe G = (V, E), v für jeden Knoten u V einen kürzesten u-v Pfad p = (u, pred[u], pred[pred[u]],..., v) in Zeit O( V + E ). Beweis: Korrektheit p ist ein Pfad, denn kein Knoten wird zweimal in Q eingefügt. Wegen d[pred[u]] = d[u] 1,..., d[v] = 0 besitzt p Länge d[u]. Annahme: Pfad p = (u = v 0,..., v = v k ) mit Länge k < d[u]. Für jede Kante {u, v } E gilt d[u ] d[v ] + 1. Damit folgt d[u] d[v 1 ] + 1... d[v k ] + k = k. (Widerspruch zu k < d[u].) DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 112 / 136

Laufzeit Breitensuche Beweis: Laufzeit Schritt 1: O( V ), Schritt 2: O(1). Schritt 3: Sei s in der ZHK V V. Für alle v V werden alle Nachbarn u Γ(v) besucht, d.h. v V Γ(v) v V deg(v) = 2 E. Damit ist die Laufzeit von Schritt 3 O( E ). DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 113 / 136

Spannbaum mit kürzesten u-v Pfaden Satz Spannbaum mit kürzesten u-v Pfaden BREITENSUCHE berechnet bei Eingabe eines zusammenhängenden G = (V, E) und v V in Zeit O( V + E ) einen Spannbaum T = (V, E ), E = {{u, pred(u)} u V \ {v}} mit kürzesten u-v Pfaden. Beweis: Kürzeste u-v Pfade in G sind von der Form (u, pred[u],..., v). Wegen E = {{u, pred(u)} u V \ {v}} gilt E = n 1. Zeigen nun, dass G zusammenhängend ist. Damit folgt zusammen mit E = n 1, dass T ein Baum ist. Für alle u, w V sind p u = (u, pred[u],..., v) und p w = (w, pred[w],..., v) ein u-v bzw. ein w-v Pfad. Fall 1: p u, p w sind bis auf v knotendisjunkt. Dann ist p = (u, pred[u],..., v k,..., pred[w], w) ein u-w Pfad. Fall 2: p u, p w sind nicht knotendisjunkt. Dann ist p aus Fall 1 ein u-w Weg. Dieser kann zu einem u-w Pfad verkürzt werden. DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 114 / 136

Zusammenhangskomponenten Algorithmus VOLLSTÄNDIGE BREITENSUCHE EINGABE: G = (V, E) 1 Setze i 1. 2 While V 1 Starte BREITENSUCHE in beliebigem Startknoten s V. 2 V i {v V d[v] < }. 3 V V \ V i ; G G[V ]; i i + 1; AUSGABE: ZHKs G[V 1 ],..., G[V k ] DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 115 / 136

Laufzeit für ZHKs Satz Berechnung von ZHKs VOLLSTÄNDIGE BREITENSUCHE berechnet bei Eingabe G = (V, E) die ZHKs von G in Zeit O( V + E ). Beweis: Laufzeit: Jeder Knoten wird genau einmal in Q eingefügt. Laufzeit: O( V ). Jede Kante {u, v} wird einmal bei den Nachbarn von u und einmal bei den Nachbarn von v betrachtet. Laufzeit: O( E ). Korrektheit: Folgt aus den Sätzen zuvor. DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 116 / 136

Tiefensuche DFS (Depth First Search) Algorithmus TIEFENSUCHE EINGABE: G = (V, E) als Adjazenzliste, Startknoten s V 1 Für alle v V 1 pred[v] nil; 2 S new Stack; S.Push(s); 3 While (S.Isempty() TRUE) 1 v S.Pop(); 2 If ( u Γ(v) \ {s} mit pred[u] =nil) then 1 S.Push(v); S.Push(u); 2 pred[u] v; AUSGABE: pred[v] für alle v V DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 117 / 136

Rekursive Version von DFS Algorithmus REKURSIVE TIEFENSUCHE EINGABE: G = (V, E) als Adjazenzliste, Startknoten s V 1 Für alle v V 1 pred[v] nil; 2 DFS-rekursiv(s); Funktion DFS-rekursiv(v) 1 While ( u Γ(v) \ {s} mit pred[u] =nil) 1 pred[u] v; 2 DFS-rekursiv(u); AUSGABE: pred[v] für alle v V Anmerkung: Die rekursiven Aufrufe simulieren den Stack S. DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 118 / 136

Berechnung eines Spannbaums Satz Berechnung eines Spannbaums TIEFENSUCHE berechnet bei Eingabe eines zusammenhängenden G = (V, E) und v V in Zeit O( E ) einen Spannbaum T = (V, E ) mit E = {{u, pred[u]} u V \ {v}}. Beweis: Korrektheit: Es gilt E = n 1. Falls T zusammenhängend ist, so ist T ein Baum. Für jeden Knoten u V \ {v} ist (u, pred[u], pred[pred[u]],..., v) ein u-v Pfad. Konstruktion von u-w Pfaden für alle u, w V analog zu BFS. Laufzeit: Analog zur Analyse bei BFS. DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 119 / 136

Hamiltonscher Kreis Definition Hamiltonscher Kreis Sei G = (V, E) ein zusammenhängender Graph. 1 Ein Hamiltonscher Kreis in G ist ein Kreis, der alle Knoten enthält. 2 Graphen mit Hamiltonkreis bezeichnet man als hamiltonsch. Bsp: 5 Personen setzen sich an einen runden Tisch. Frage: Gibt es zwei Konstellationen, bei denen jeder andere Nachbarn besitzt? Modellierung als Graphproblem: u, v sind Nachbarn, falls {u, v} Kante eines Hamiltonkreises ist. D.h. wir suchen zwei Konstellationen mit kantendisjunkten Hamiltonkreisen. Der K 5 besitzt zwei kantendisjunkte Hamiltonkreise. DiMa I - Vorlesung 09-11.11.2008 Breitensuche, Kürzeste u-v Pfade, Tiefensuche, Hamiltonkreis 120 / 136