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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 VL-14: Graphalgorithmen I (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger SS 2017, RWTH DSAL/SS 2017 VL-14: Graphalgorithmen I 1/48

2 Organisatorisches Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann, David Korzeniewski, Björn Tauer Webseite: Nächste Vorlesung: Dienstag, Juni 20, 16:15 17:45 Uhr, Aula 1 DSAL/SS 2017 VL-14: Graphalgorithmen I 2/48

3 Graphalgorithmen I Terminologie Repräsentation von Graphen Breitensuche (BFS) Tiefensuche (DFS) Finden von Zusammenhangskomponenten DSAL/SS 2017 VL-14: Graphalgorithmen I 3/48

4 Bedeutung der Graphen in der Informatik Graphen treten in vielen Informatikanwendungen auf: Beispiele (Computer-)Netzwerke Darstellung von topologischen Informationen (Karten,... ) Darstellung von elektronischen Schaltungen Vorranggraphen (precedence graph), Ablaufpläne,... Semantische Netze (z. B. Entity-Relationship-Diagramme) In dieser Vorlesung werden wir uns auf fundamentale Graphalgorithmen konzentrieren. DSAL/SS 2017 VL-14: Graphalgorithmen I 4/48

5 Was ist ein Graph? (1) Gerichteter Graph Ein gerichteter Graph (auch: digraph) G ist ein Paar (V, E) DSAL/SS 2017 VL-14: Graphalgorithmen I 5/48

6 Was ist ein Graph? (1) Gerichteter Graph Ein gerichteter Graph (auch: digraph) G ist ein Paar (V, E) mit einer endlichen Menge V von Knoten (vertices) und DSAL/SS 2017 VL-14: Graphalgorithmen I 5/48

7 Was ist ein Graph? (1) Gerichteter Graph Ein gerichteter Graph (auch: digraph) G ist ein Paar (V, E) mit einer endlichen Menge V von Knoten (vertices) und einer Menge E V V von geordneten Paaren von Knoten, die gerichtete Kanten (arcs) genannt werden. DSAL/SS 2017 VL-14: Graphalgorithmen I 5/48

8 Was ist ein Graph? (1) Gerichteter Graph Ein gerichteter Graph (auch: digraph) G ist ein Paar (V, E) mit einer endlichen Menge V von Knoten (vertices) und einer Menge E V V von geordneten Paaren von Knoten, die gerichtete Kanten (arcs) genannt werden. Ungerichteter Graph Ein ungerichteter Graph G ist ein Paar (V, E) mit einer endlichen Menge V von Knoten (vertices) und einer Menge E von ungeordneten Knotenpaaren, die Kanten (edges) genannt werden. DSAL/SS 2017 VL-14: Graphalgorithmen I 5/48

9 Was ist ein Graph? (2) Beispiel V = {A,..., F } E = {(A, B), (A, D), (B, E), (C, E), (C, F ), (D, B), (E, D), (F, F )} A B C Kanten Knoten D E F DSAL/SS 2017 VL-14: Graphalgorithmen I 6/48

10 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

11 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E Knoten u ist inzident zu Kante e = (u, v) DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

12 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E Knoten u ist inzident zu Kante e = (u, v) Kante (u, u) heisst Schlinge (loop) DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

13 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E Knoten u ist inzident zu Kante e = (u, v) Kante (u, u) heisst Schlinge (loop) Der Grad deg(u) ist die Anzahl der zu u inzidenten Kanten DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

14 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E Knoten u ist inzident zu Kante e = (u, v) Kante (u, u) heisst Schlinge (loop) Der Grad deg(u) ist die Anzahl der zu u inzidenten Kanten In-Grad deg + (u); Aus-Grad deg (u) DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

15 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E Knoten u ist inzident zu Kante e = (u, v) Kante (u, u) heisst Schlinge (loop) Der Grad deg(u) ist die Anzahl der zu u inzidenten Kanten In-Grad deg + (u); Aus-Grad deg (u) Graph ist k-regulär, falls alle Knoten Grad k haben DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

16 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E Knoten u ist inzident zu Kante e = (u, v) Kante (u, u) heisst Schlinge (loop) Der Grad deg(u) ist die Anzahl der zu u inzidenten Kanten In-Grad deg + (u); Aus-Grad deg (u) Graph ist k-regulär, falls alle Knoten Grad k haben Handshake Lemma In einem ungerichteten Graphen G = (V, E) gilt: deg(v) = 2 E v V DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

17 Terminologie (1) Knoten u ist adjazent zu Knoten v, wenn (u, v) E Knoten u ist inzident zu Kante e = (u, v) Kante (u, u) heisst Schlinge (loop) Der Grad deg(u) ist die Anzahl der zu u inzidenten Kanten In-Grad deg + (u); Aus-Grad deg (u) Graph ist k-regulär, falls alle Knoten Grad k haben Handshake Lemma In einem ungerichteten Graphen G = (V, E) gilt: deg(v) = 2 E v V Lemma In gerichtetem Graphen gilt: deg + (v) = deg (v) v V v V DSAL/SS 2017 VL-14: Graphalgorithmen I 7/48

18 Terminologie (2) Teilgraph Ein Teilgraph (subgraph) eines Graphen G = (V, E) ist ein Graph G = (V, E ) mit: V V und E E (V V ). DSAL/SS 2017 VL-14: Graphalgorithmen I 8/48

19 Terminologie (2) Teilgraph Ein Teilgraph (subgraph) eines Graphen G = (V, E) ist ein Graph G = (V, E ) mit: V V und E E (V V ). Ist V V und/oder E E, so heisst G echter (proper) Teilgraph DSAL/SS 2017 VL-14: Graphalgorithmen I 8/48

20 Terminologie (2) Teilgraph Ein Teilgraph (subgraph) eines Graphen G = (V, E) ist ein Graph G = (V, E ) mit: V V und E E (V V ). Ist V V und/oder E E, so heisst G echter (proper) Teilgraph Ist E = E (V V ), so ist G der durch V induzierte Teilgraph DSAL/SS 2017 VL-14: Graphalgorithmen I 8/48

21 Terminologie (2) Teilgraph Ein Teilgraph (subgraph) eines Graphen G = (V, E) ist ein Graph G = (V, E ) mit: V V und E E (V V ). Ist V V und/oder E E, so heisst G echter (proper) Teilgraph Ist E = E (V V ), so ist G der durch V induzierte Teilgraph A B C D E F Teilgraph in rot DSAL/SS 2017 VL-14: Graphalgorithmen I 8/48

22 Terminologie (3) Symmetrischer Graph Der gerichtete Graph G heisst symmetrisch, wenn aus (v, w) E immer auch (w, v) E folgt. DSAL/SS 2017 VL-14: Graphalgorithmen I 9/48

23 Terminologie (3) Symmetrischer Graph Der gerichtete Graph G heisst symmetrisch, wenn aus (v, w) E immer auch (w, v) E folgt. Zu jedem ungerichteten Graphen gibt es einen korrespondierenden symmetrischen Digraphen. DSAL/SS 2017 VL-14: Graphalgorithmen I 9/48

24 Terminologie (3) Symmetrischer Graph Der gerichtete Graph G heisst symmetrisch, wenn aus (v, w) E immer auch (w, v) E folgt. Zu jedem ungerichteten Graphen gibt es einen korrespondierenden symmetrischen Digraphen. Vollständiger Graph Ein Graph G heisst vollständig, wenn jedes Paar von Knoten mit einer Kante verbunden ist. DSAL/SS 2017 VL-14: Graphalgorithmen I 9/48

25 Terminologie (3) Symmetrischer Graph Der gerichtete Graph G heisst symmetrisch, wenn aus (v, w) E immer auch (w, v) E folgt. Zu jedem ungerichteten Graphen gibt es einen korrespondierenden symmetrischen Digraphen. Vollständiger Graph Ein Graph G heisst vollständig, wenn jedes Paar von Knoten mit einer Kante verbunden ist. K n ist der ungerichtete vollständige Graph mit n Knoten. DSAL/SS 2017 VL-14: Graphalgorithmen I 9/48

26 Terminologie (3) Symmetrischer Graph Der gerichtete Graph G heisst symmetrisch, wenn aus (v, w) E immer auch (w, v) E folgt. Zu jedem ungerichteten Graphen gibt es einen korrespondierenden symmetrischen Digraphen. Vollständiger Graph Ein Graph G heisst vollständig, wenn jedes Paar von Knoten mit einer Kante verbunden ist. K n ist der ungerichtete vollständige Graph mit n Knoten. Transponieren Der transponierte Graph von G = (V, E) ist gegeben durch G T = (V, E ) mit (v, w) E gdw. (w, v) E. DSAL/SS 2017 VL-14: Graphalgorithmen I 9/48

27 Terminologie (4) Vollständiger (und symmetrischer) Digraph auf vier Knoten: A B D E DSAL/SS 2017 VL-14: Graphalgorithmen I 10/48

28 Pfade, Kreise, Zusammenhang DSAL/SS 2017 VL-14: Graphalgorithmen I 11/48

29 Pfade und Kreise (1) Spaziergang, Pfad Ein Spaziergang (walk) von einem Knoten v zu einem Knoten w ist eine Folge v 0, v 1, v 2,..., v k 1, v k, sodass: Startknoten v 0 = v und Endknoten v k = w (v i, v i+1 ) ist Kante in E, für 0 i k 1 DSAL/SS 2017 VL-14: Graphalgorithmen I 12/48

30 Pfade und Kreise (1) Spaziergang, Pfad Ein Spaziergang (walk) von einem Knoten v zu einem Knoten w ist eine Folge v 0, v 1, v 2,..., v k 1, v k, sodass: Startknoten v 0 = v und Endknoten v k = w (v i, v i+1 ) ist Kante in E, für 0 i k 1 Ein Spaziergang mit lauter paarweise verschiedenen Knoten (das heisst, mit v i v j für i j) heisst simpel oder einfach oder Pfad. DSAL/SS 2017 VL-14: Graphalgorithmen I 12/48

31 Pfade und Kreise (1) Spaziergang, Pfad Ein Spaziergang (walk) von einem Knoten v zu einem Knoten w ist eine Folge v 0, v 1, v 2,..., v k 1, v k, sodass: Startknoten v 0 = v und Endknoten v k = w (v i, v i+1 ) ist Kante in E, für 0 i k 1 Ein Spaziergang mit lauter paarweise verschiedenen Knoten (das heisst, mit v i v j für i j) heisst simpel oder einfach oder Pfad. Die Länge eines Spaziergangs ist die Anzahl der durchlaufenen Kanten. DSAL/SS 2017 VL-14: Graphalgorithmen I 12/48

32 Pfade und Kreise (1) Spaziergang, Pfad Ein Spaziergang (walk) von einem Knoten v zu einem Knoten w ist eine Folge v 0, v 1, v 2,..., v k 1, v k, sodass: Startknoten v 0 = v und Endknoten v k = w (v i, v i+1 ) ist Kante in E, für 0 i k 1 Ein Spaziergang mit lauter paarweise verschiedenen Knoten (das heisst, mit v i v j für i j) heisst simpel oder einfach oder Pfad. Die Länge eines Spaziergangs ist die Anzahl der durchlaufenen Kanten. Kreis Ein Kreis (cycle) ist ein nicht-leerer Pfad bei dem Startknoten mit Endknoten zusammenfällt. DSAL/SS 2017 VL-14: Graphalgorithmen I 12/48

33 Pfade und Kreise (1) Spaziergang, Pfad Ein Spaziergang (walk) von einem Knoten v zu einem Knoten w ist eine Folge v 0, v 1, v 2,..., v k 1, v k, sodass: Startknoten v 0 = v und Endknoten v k = w (v i, v i+1 ) ist Kante in E, für 0 i k 1 Ein Spaziergang mit lauter paarweise verschiedenen Knoten (das heisst, mit v i v j für i j) heisst simpel oder einfach oder Pfad. Die Länge eines Spaziergangs ist die Anzahl der durchlaufenen Kanten. Kreis Ein Kreis (cycle) ist ein nicht-leerer Pfad bei dem Startknoten mit Endknoten zusammenfällt. Graph ist kreis-frei (azyklisch), wenn er keine Kreise als Teilgraphen hat. DSAL/SS 2017 VL-14: Graphalgorithmen I 12/48

34 Pfade und Kreise (2) A B C D E F Schlinge Kreis A B E D B und C F F sind Beispiele für Spaziergänge. E D B und C F sind Pfade. DSAL/SS 2017 VL-14: Graphalgorithmen I 13/48

35 Zusammenhang (1) Erreichbarkeit Ein Knoten w ist vom Knoten v aus erreichbar, wenn es einen Pfad von v nach w gibt. DSAL/SS 2017 VL-14: Graphalgorithmen I 14/48

36 Zusammenhang (1) Erreichbarkeit Ein Knoten w ist vom Knoten v aus erreichbar, wenn es einen Pfad von v nach w gibt. Zusammenhang (im ungerichteten Graphen) G heisst zusammenhängend, wenn jeder Knoten von jedem anderen Knoten aus erreichbar ist. DSAL/SS 2017 VL-14: Graphalgorithmen I 14/48

37 Zusammenhang (1) Erreichbarkeit Ein Knoten w ist vom Knoten v aus erreichbar, wenn es einen Pfad von v nach w gibt. Zusammenhang (im ungerichteten Graphen) G heisst zusammenhängend, wenn jeder Knoten von jedem anderen Knoten aus erreichbar ist. Eine Zusammenhangskomponente (connected component) von G ist ein maximaler zusammenhängender Teilgraph von G. DSAL/SS 2017 VL-14: Graphalgorithmen I 14/48

38 Zusammenhang (2) Zusammenhang (im gerichteten Graphen) G heisst stark zusammenhängend (strongly connected), wenn jeder Knoten von jedem anderen aus erreichbar ist. DSAL/SS 2017 VL-14: Graphalgorithmen I 15/48

39 Zusammenhang (2) Zusammenhang (im gerichteten Graphen) G heisst stark zusammenhängend (strongly connected), wenn jeder Knoten von jedem anderen aus erreichbar ist. G heisst schwach zusammenhängend, wenn der zugrunde liegende ungerichtete Graph (in dem alle Kanten ungerichtet gemacht worden sind) zusammenhängend ist. DSAL/SS 2017 VL-14: Graphalgorithmen I 15/48

40 Zusammenhang (2) Zusammenhang (im gerichteten Graphen) G heisst stark zusammenhängend (strongly connected), wenn jeder Knoten von jedem anderen aus erreichbar ist. G heisst schwach zusammenhängend, wenn der zugrunde liegende ungerichtete Graph (in dem alle Kanten ungerichtet gemacht worden sind) zusammenhängend ist. Eine starke Zusammenhangskomponente von G ist ein maximaler stark zusammenhängender Teilgraph von G. DSAL/SS 2017 VL-14: Graphalgorithmen I 15/48

41 Zusammenhang (2) Zusammenhang (im gerichteten Graphen) G heisst stark zusammenhängend (strongly connected), wenn jeder Knoten von jedem anderen aus erreichbar ist. G heisst schwach zusammenhängend, wenn der zugrunde liegende ungerichtete Graph (in dem alle Kanten ungerichtet gemacht worden sind) zusammenhängend ist. Eine starke Zusammenhangskomponente von G ist ein maximaler stark zusammenhängender Teilgraph von G. Jeder ungerichtete Graph kann eindeutig in Zusammenhangskomponenten aufgeteilt werden. Jeder gerichtete Graph kann eindeutig in starke Zusammenhangskomponenten aufgeteilt werden. DSAL/SS 2017 VL-14: Graphalgorithmen I 15/48

42 Zusammenhang (3a) A B C I F J D G H E Ein ungerichteter Graph: Wie lauten die Zusammenhangskomponenten? DSAL/SS 2017 VL-14: Graphalgorithmen I 16/48

43 Zusammenhang (3b) A B C I F J D G H E Die Zusammenhangskomponenten. DSAL/SS 2017 VL-14: Graphalgorithmen I 17/48

44 Zusammenhang (4) Ein nicht-stark-zusammenhängender Digraph, aufgeteilt in seine maximalen stark zusammenhängenden Teilgraphen. DSAL/SS 2017 VL-14: Graphalgorithmen I 18/48

45 Zusammenhang (5) G ist Baum G zusammenhängend und G kreis-frei Anmerkungen Ein Baum mit n Knoten hat n 1 Kanten. Ein ungerichteter Graph mit n Knoten und n 2 oder weniger Kanten kann nicht zusammenhängend sein. Ein ungerichteter Graph mit n Knoten und n oder mehr Kanten muss einen Zyklus enthalten. DSAL/SS 2017 VL-14: Graphalgorithmen I 19/48

46 Repräsentation von Graphen DSAL/SS 2017 VL-14: Graphalgorithmen I 20/48

47 Repräsentation von Graphen: Adjazenzmatrix Sei G = (V, E) ein Graph mit V = n E = m V = {v 1,..., v n } DSAL/SS 2017 VL-14: Graphalgorithmen I 21/48

48 Repräsentation von Graphen: Adjazenzmatrix Sei G = (V, E) ein Graph mit V = n E = m V = {v 1,..., v n } Adjazenzmatrix In der Adjazenzmatrix-Darstellung ist der Graph durch eine n n Matrix A gegeben, wobei A(i, j) = 1 wenn (v i, v j ) E A(i, j) = 0 wenn (v i, v j ) / E DSAL/SS 2017 VL-14: Graphalgorithmen I 21/48

49 Repräsentation von Graphen: Adjazenzmatrix Sei G = (V, E) ein Graph mit V = n E = m V = {v 1,..., v n } Adjazenzmatrix In der Adjazenzmatrix-Darstellung ist der Graph durch eine n n Matrix A gegeben, wobei A(i, j) = 1 wenn (v i, v j ) E A(i, j) = 0 wenn (v i, v j ) / E Wenn G ungerichtet ist, ist A symmetrisch (A = A T ). Dann muss nur die Hälfte der Matrix gespeichert werden. DSAL/SS 2017 VL-14: Graphalgorithmen I 21/48

50 Repräsentation von Graphen: Adjazenzmatrix Sei G = (V, E) ein Graph mit V = n E = m V = {v 1,..., v n } Adjazenzmatrix In der Adjazenzmatrix-Darstellung ist der Graph durch eine n n Matrix A gegeben, wobei A(i, j) = 1 wenn (v i, v j ) E A(i, j) = 0 wenn (v i, v j ) / E Wenn G ungerichtet ist, ist A symmetrisch (A = A T ). Dann muss nur die Hälfte der Matrix gespeichert werden. Platzbedarf: Θ(n 2 ). DSAL/SS 2017 VL-14: Graphalgorithmen I 21/48

51 Repräsentation von Graphen: Adjazenzliste Adjazenzliste In der Darstellung als Array von Adjazenzlisten gibt es ein durch die Nummer des Knoten indiziertes Array, das verkettete Listen (Adjazenzlisten) enthält. Der i-te Arrayeintrag enthält alle Kanten mit Startknoten v i. DSAL/SS 2017 VL-14: Graphalgorithmen I 22/48

52 Repräsentation von Graphen: Adjazenzliste Adjazenzliste In der Darstellung als Array von Adjazenzlisten gibt es ein durch die Nummer des Knoten indiziertes Array, das verkettete Listen (Adjazenzlisten) enthält. Der i-te Arrayeintrag enthält alle Kanten mit Startknoten v i. Ist G ungerichtet, dann wird jede Kante zweimal gespeichert DSAL/SS 2017 VL-14: Graphalgorithmen I 22/48

53 Repräsentation von Graphen: Adjazenzliste Adjazenzliste In der Darstellung als Array von Adjazenzlisten gibt es ein durch die Nummer des Knoten indiziertes Array, das verkettete Listen (Adjazenzlisten) enthält. Der i-te Arrayeintrag enthält alle Kanten mit Startknoten v i. Ist G ungerichtet, dann wird jede Kante zweimal gespeichert Kanten, die in G nicht vorkommen, benötigen keinen Speicherplatz DSAL/SS 2017 VL-14: Graphalgorithmen I 22/48

54 Repräsentation von Graphen: Adjazenzliste Adjazenzliste In der Darstellung als Array von Adjazenzlisten gibt es ein durch die Nummer des Knoten indiziertes Array, das verkettete Listen (Adjazenzlisten) enthält. Der i-te Arrayeintrag enthält alle Kanten mit Startknoten v i. Ist G ungerichtet, dann wird jede Kante zweimal gespeichert Kanten, die in G nicht vorkommen, benötigen keinen Speicherplatz Platzbedarf: Θ(n + m). DSAL/SS 2017 VL-14: Graphalgorithmen I 22/48

55 Darstellung eines ungerichteten Graphen A E B D C A B C D E Adjazenzliste B E A E D C D B C E B D B A Adjazenzmatrix DSAL/SS 2017 VL-14: Graphalgorithmen I 23/48

56 Darstellung eines gerichteten Graphen A B C D E F A B C D E F B E F B D F D E Adjazenzliste Adjazenzmatrix DSAL/SS 2017 VL-14: Graphalgorithmen I 24/48

57 Graphendurchlauf DSAL/SS 2017 VL-14: Graphalgorithmen I 25/48

58 Graphendurchlauf (1) Viele Algorithmen (die wir später kennenlernen werden) untersuchen jeden einzelnen Knoten und jede einzelne Kante eines Graphen. DSAL/SS 2017 VL-14: Graphalgorithmen I 26/48

59 Graphendurchlauf (1) Viele Algorithmen (die wir später kennenlernen werden) untersuchen jeden einzelnen Knoten und jede einzelne Kante eines Graphen. Es gibt verschiedene Graphendurchlaufstrategien (traversal strategies), die jeden Knoten (oder jede Kante) genau einmal besuchen: Breitensuche (BFS) Tiefensuche (DFS) DSAL/SS 2017 VL-14: Graphalgorithmen I 26/48

60 Graphendurchlauf (1) Viele Algorithmen (die wir später kennenlernen werden) untersuchen jeden einzelnen Knoten und jede einzelne Kante eines Graphen. Es gibt verschiedene Graphendurchlaufstrategien (traversal strategies), die jeden Knoten (oder jede Kante) genau einmal besuchen: Breitensuche (BFS) Tiefensuche (DFS) Es handelt sich um Verallgemeinerungen der Strategien zur Baumtraversierung DSAL/SS 2017 VL-14: Graphalgorithmen I 26/48

61 Graphendurchlauf (1) Viele Algorithmen (die wir später kennenlernen werden) untersuchen jeden einzelnen Knoten und jede einzelne Kante eines Graphen. Es gibt verschiedene Graphendurchlaufstrategien (traversal strategies), die jeden Knoten (oder jede Kante) genau einmal besuchen: Breitensuche (BFS) Tiefensuche (DFS) Es handelt sich um Verallgemeinerungen der Strategien zur Baumtraversierung In diesem allgemeineren Szenario müssen wir uns aber alle bereits besuchten Knoten explizit merken DSAL/SS 2017 VL-14: Graphalgorithmen I 26/48

62 Graphendurchlauf (1) Viele Algorithmen (die wir später kennenlernen werden) untersuchen jeden einzelnen Knoten und jede einzelne Kante eines Graphen. Es gibt verschiedene Graphendurchlaufstrategien (traversal strategies), die jeden Knoten (oder jede Kante) genau einmal besuchen: Breitensuche (BFS) Tiefensuche (DFS) Es handelt sich um Verallgemeinerungen der Strategien zur Baumtraversierung In diesem allgemeineren Szenario müssen wir uns aber alle bereits besuchten Knoten explizit merken Im folgenden arbeiten wir mit der Adjazenzlisten-Darstellung DSAL/SS 2017 VL-14: Graphalgorithmen I 26/48

63 Graphendurchlauf (1) Viele Algorithmen (die wir später kennenlernen werden) untersuchen jeden einzelnen Knoten und jede einzelne Kante eines Graphen. Es gibt verschiedene Graphendurchlaufstrategien (traversal strategies), die jeden Knoten (oder jede Kante) genau einmal besuchen: Breitensuche (BFS) Tiefensuche (DFS) Es handelt sich um Verallgemeinerungen der Strategien zur Baumtraversierung In diesem allgemeineren Szenario müssen wir uns aber alle bereits besuchten Knoten explizit merken Im folgenden arbeiten wir mit der Adjazenzlisten-Darstellung Algorithmen auf dieser Basis kosten O( V + E ) Zeit DSAL/SS 2017 VL-14: Graphalgorithmen I 26/48

64 Graphendurchlauf (2) Beispiele Finden von (schwachen oder starken) Zusammenhangskomponenten Topologische Sortierung Kritische-Pfad-Analyse Finden von 2-Zusammenhangskomponenten (biconnected components) und viele weitere... DSAL/SS 2017 VL-14: Graphalgorithmen I 27/48

65 Breitensuche DSAL/SS 2017 VL-14: Graphalgorithmen I 28/48

66 Breitensuche Breitensuche (Breadth-First Search, BFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Die Breitensuche beginnt in einem beliebigen Knoten v. Zugrundeliegende Strategie: DSAL/SS 2017 VL-14: Graphalgorithmen I 29/48

67 Breitensuche Breitensuche (Breadth-First Search, BFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Die Breitensuche beginnt in einem beliebigen Knoten v. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). DSAL/SS 2017 VL-14: Graphalgorithmen I 29/48

68 Breitensuche Breitensuche (Breadth-First Search, BFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Die Breitensuche beginnt in einem beliebigen Knoten v. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: DSAL/SS 2017 VL-14: Graphalgorithmen I 29/48

69 Breitensuche Breitensuche (Breadth-First Search, BFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Die Breitensuche beginnt in einem beliebigen Knoten v. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche gleichzeitig von allen derartigen Knoten w aus weiter. DSAL/SS 2017 VL-14: Graphalgorithmen I 29/48

70 Breitensuche Breitensuche (Breadth-First Search, BFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Die Breitensuche beginnt in einem beliebigen Knoten v. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche gleichzeitig von allen derartigen Knoten w aus weiter. Keinerlei Backtracking. DSAL/SS 2017 VL-14: Graphalgorithmen I 29/48

71 Breitensuche Breitensuche (Breadth-First Search, BFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Die Breitensuche beginnt in einem beliebigen Knoten v. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche gleichzeitig von allen derartigen Knoten w aus weiter. Keinerlei Backtracking. Markiere Knoten v als besucht (BLACK). DSAL/SS 2017 VL-14: Graphalgorithmen I 29/48

72 Breitensuche Breitensuche (Breadth-First Search, BFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Die Breitensuche beginnt in einem beliebigen Knoten v. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche gleichzeitig von allen derartigen Knoten w aus weiter. Keinerlei Backtracking. Markiere Knoten v als besucht (BLACK). Anmerkung: Die schwarzen Knoten sind genau jene Knoten, die vom Startknoten aus erreichbar sind DSAL/SS 2017 VL-14: Graphalgorithmen I 29/48

73 Breitensuche: Beispiel Beginn der Breitensuche Fertig! Erforsche alle folgenden unbesuchten Knoten Erforsche alle folgenden unbesuchten Knoten G A B C D E F G A B D E F G C A B C D E F A B D E F G C DSAL/SS 2017 VL-14: Graphalgorithmen I 30/48

74 Breitensuche: Implementierung 1 void bfssearch ( List adjlist [ n], int n, int start ) { 2 int color [n]; 3 Queue wait ; // zu verarbeitende Knoten 4 for ( int i = 0; i < n; i ++) { 5 color [ i] = WHITE ; // noch nicht gefunden 6 } 7 color [ start ] = GRAY ; // start ist noch zu verarbeiten 8 wait. enqueue ( start ); 9 while (! wait. isempty ()) { 10 // naechster noch unverarbeiteter Knoten 11 int v = wait. dequeue (); 12 foreach (w in adjlist [v]) { 13 if ( color [ w] == WHITE ) { 14 // neuer unbesuchter Knoten 15 color [ w] = GRAY ; // w ist noch zu verarbeiten 16 wait. enqueue (w); 17 } 18 } 19 color [ v] = BLACK ; // v ist abgeschlossen 20 } 21 } DSAL/SS 2017 VL-14: Graphalgorithmen I 31/48

75 Eigenschaften der Breitensuche (1) Notation Für einen Knoten v V bezeichnet d(v) den Abstand vom Startknoten zum Knoten v (das heisst: die Anzahl der Kanten auf dem kürzesten Weg vom Startknoten nach v) Wenn ein Knoten w in die Queue gegeben wird, so färben wir die dafür verantwortliche Kante (v, w) gelb. Knoten v ist der Vater von Knoten w. DSAL/SS 2017 VL-14: Graphalgorithmen I 32/48

76 Eigenschaften der Breitensuche (1) Notation Für einen Knoten v V bezeichnet d(v) den Abstand vom Startknoten zum Knoten v (das heisst: die Anzahl der Kanten auf dem kürzesten Weg vom Startknoten nach v) Wenn ein Knoten w in die Queue gegeben wird, so färben wir die dafür verantwortliche Kante (v, w) gelb. Knoten v ist der Vater von Knoten w. BFS besucht die Knoten in einer Reihenfolge mit ansteigendem Abstand vom Startknoten DSAL/SS 2017 VL-14: Graphalgorithmen I 32/48

77 Eigenschaften der Breitensuche (1) Notation Für einen Knoten v V bezeichnet d(v) den Abstand vom Startknoten zum Knoten v (das heisst: die Anzahl der Kanten auf dem kürzesten Weg vom Startknoten nach v) Wenn ein Knoten w in die Queue gegeben wird, so färben wir die dafür verantwortliche Kante (v, w) gelb. Knoten v ist der Vater von Knoten w. BFS besucht die Knoten in einer Reihenfolge mit ansteigendem Abstand vom Startknoten Erst wenn alle Knoten mit Abstand d verarbeitet worden sind, werden die Knoten mit Abstand d + 1 angegangen DSAL/SS 2017 VL-14: Graphalgorithmen I 32/48

78 Eigenschaften der Breitensuche (1) Notation Für einen Knoten v V bezeichnet d(v) den Abstand vom Startknoten zum Knoten v (das heisst: die Anzahl der Kanten auf dem kürzesten Weg vom Startknoten nach v) Wenn ein Knoten w in die Queue gegeben wird, so färben wir die dafür verantwortliche Kante (v, w) gelb. Knoten v ist der Vater von Knoten w. BFS besucht die Knoten in einer Reihenfolge mit ansteigendem Abstand vom Startknoten Erst wenn alle Knoten mit Abstand d verarbeitet worden sind, werden die Knoten mit Abstand d + 1 angegangen Die Suche terminiert, wenn für einen Abstand d keine Knoten auftreten. DSAL/SS 2017 VL-14: Graphalgorithmen I 32/48

79 Eigenschaften der Breitensuche (2) Die zu verarbeitenden Knoten werden als FIFO-Queue (first-in first-out) organisiert. DSAL/SS 2017 VL-14: Graphalgorithmen I 33/48

80 Eigenschaften der Breitensuche (2) Die zu verarbeitenden Knoten werden als FIFO-Queue (first-in first-out) organisiert. Es gibt eine einzige Verarbeitungsmöglichkeit für v (nämlich: wenn es aus der Queue entnommen wird) DSAL/SS 2017 VL-14: Graphalgorithmen I 33/48

81 Eigenschaften der Breitensuche (2) Die zu verarbeitenden Knoten werden als FIFO-Queue (first-in first-out) organisiert. Es gibt eine einzige Verarbeitungsmöglichkeit für v (nämlich: wenn es aus der Queue entnommen wird) Die gelben Kanten induzieren den Breitensuchbaum DSAL/SS 2017 VL-14: Graphalgorithmen I 33/48

82 Eigenschaften der Breitensuche (2) Die zu verarbeitenden Knoten werden als FIFO-Queue (first-in first-out) organisiert. Es gibt eine einzige Verarbeitungsmöglichkeit für v (nämlich: wenn es aus der Queue entnommen wird) Die gelben Kanten induzieren den Breitensuchbaum Breitensuchbaum hat Startknoten als Wurzel DSAL/SS 2017 VL-14: Graphalgorithmen I 33/48

83 Eigenschaften der Breitensuche (2) Die zu verarbeitenden Knoten werden als FIFO-Queue (first-in first-out) organisiert. Es gibt eine einzige Verarbeitungsmöglichkeit für v (nämlich: wenn es aus der Queue entnommen wird) Die gelben Kanten induzieren den Breitensuchbaum Breitensuchbaum hat Startknoten als Wurzel Theorem (Komplexität der Breitensuche) Die Zeitkomplexität von BFS ist O( V + E ). Der Platzbedarf von BFS ist Θ( V ). DSAL/SS 2017 VL-14: Graphalgorithmen I 33/48

84 Tiefensuche DSAL/SS 2017 VL-14: Graphalgorithmen I 34/48

85 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

86 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

87 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

88 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

89 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche rekursiv von w aus. Das heisst: DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

90 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche rekursiv von w aus. Das heisst: Erforsche Kante (v, w), besuche den neu entdeckten Knoten w, und forsche von dort aus, bis es nicht mehr weiter geht. DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

91 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche rekursiv von w aus. Das heisst: Erforsche Kante (v, w), besuche den neu entdeckten Knoten w, und forsche von dort aus, bis es nicht mehr weiter geht. Dann backtracke von w nach v. DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

92 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche rekursiv von w aus. Das heisst: Erforsche Kante (v, w), besuche den neu entdeckten Knoten w, und forsche von dort aus, bis es nicht mehr weiter geht. Dann backtracke von w nach v. Für jede Kante (v, w) mit bereits besuchtem Nachfolger w: DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

93 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche rekursiv von w aus. Das heisst: Erforsche Kante (v, w), besuche den neu entdeckten Knoten w, und forsche von dort aus, bis es nicht mehr weiter geht. Dann backtracke von w nach v. Für jede Kante (v, w) mit bereits besuchtem Nachfolger w: Überprüfe die Kante, ohne aber Nachfolger w zu besuchen. Markiere Knoten v als besucht (BLACK). DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

94 Tiefensuche Tiefensuche (Depth-First Search, DFS) Am Anfang sind alle Knoten als unbesucht (WHITE) markiert. Zugrundeliegende Strategie: Markiere den aktuellen Knoten v als aktiv (GRAY). Für jede Kante (v, w) mit unbesuchtem Nachfolger w: Suche rekursiv von w aus. Das heisst: Erforsche Kante (v, w), besuche den neu entdeckten Knoten w, und forsche von dort aus, bis es nicht mehr weiter geht. Dann backtracke von w nach v. Für jede Kante (v, w) mit bereits besuchtem Nachfolger w: Überprüfe die Kante, ohne aber Nachfolger w zu besuchen. Markiere Knoten v als besucht (BLACK). Anmerkung: Auch bei DFS sind die schwarzen Knoten genau jene Knoten, die vom Startknoten aus erreichbar sind DSAL/SS 2017 VL-14: Graphalgorithmen I 35/48

95 Tiefensuche: Beispiel (1) Beginn der Tiefensuche Erforsche einen Knoten Erforsche einen Knoten Sackgasse! Backtracke und erforsche den nächsten Knoten G A B C D E F G A B C D E F G A B C D E F G A B C D E F DSAL/SS 2017 VL-14: Graphalgorithmen I 36/48

96 Tiefensuche: Beispiel (2) A D A D B G B G F C E Nächster Zustand wurde bereits gefunden Backtracke und erforsche den nächsten Knoten F C E Nächster Zustand wurde bereits gefunden Backtracke und erforsche den nächsten Knoten A D A D B G B G F C E D ist eine Sackgasse Backtracke und erforsche den nächsten Knoten F C E B ist eine Sackgasse Backtracke und erforsche den nächsten Knoten DSAL/SS 2017 VL-14: Graphalgorithmen I 37/48

97 Tiefensuche: Beispiel (3) Erforsche den nächsten Knoten C wurde bereits gefunden Backtracke und erforsche den nächsten Knoten Beide nächsten Knoten wurden bereits gefunden Fertig! G A B C D E F G A B C D E F G A B C D E F G A B C D E F DSAL/SS 2017 VL-14: Graphalgorithmen I 38/48

98 Tiefensuche Implementierung 1 void dfsrec ( List adjlist [ n], int n, 2 int start, int & color [n]) { 3 color [ start ] = GRAY ; 4 foreach ( next in adjlist [ start ]) { 5 if ( color [ next ] == WHITE ) { 6 dfssrec ( adjlist, n, next, color ); 7 } 8 } 9 color [ start ] = BLACK ; 10 } void dfssearch ( List adjlist [ n], int n, int start ) { 13 int color [n]; 14 for ( int i = 0; i < n; i ++) { // Initialisierung 15 color [ i] = WHITE ; 16 } 17 dfsrec ( adjlist, n, start, color ); 18 } DSAL/SS 2017 VL-14: Graphalgorithmen I 39/48

99 Eigenschaften der Tiefensuche (1) DFS erforscht einen Pfad so weit wie möglich (dann backtracking) DSAL/SS 2017 VL-14: Graphalgorithmen I 40/48

100 Eigenschaften der Tiefensuche (1) DFS erforscht einen Pfad so weit wie möglich (dann backtracking) Die zu verarbeitenden Knoten werden in LIFO-Reihenfolge abgearbeitet DSAL/SS 2017 VL-14: Graphalgorithmen I 40/48

101 Eigenschaften der Tiefensuche (1) DFS erforscht einen Pfad so weit wie möglich (dann backtracking) Die zu verarbeitenden Knoten werden in LIFO-Reihenfolge abgearbeitet Es gibt zwei mögliche Verarbeitungszeitpunkte für jeden Knoten: DSAL/SS 2017 VL-14: Graphalgorithmen I 40/48

102 Eigenschaften der Tiefensuche (1) DFS erforscht einen Pfad so weit wie möglich (dann backtracking) Die zu verarbeitenden Knoten werden in LIFO-Reihenfolge abgearbeitet Es gibt zwei mögliche Verarbeitungszeitpunkte für jeden Knoten: 1 Wenn der Knoten entdeckt wird 2 Wenn der Knoten abgeschlossen wird DSAL/SS 2017 VL-14: Graphalgorithmen I 40/48

103 Eigenschaften der Tiefensuche (1) DFS erforscht einen Pfad so weit wie möglich (dann backtracking) Die zu verarbeitenden Knoten werden in LIFO-Reihenfolge abgearbeitet Es gibt zwei mögliche Verarbeitungszeitpunkte für jeden Knoten: 1 Wenn der Knoten entdeckt wird 2 Wenn der Knoten abgeschlossen wird Theorem (Komplexität der Breitensuche) Die Zeitkomplexität von DFS ist O( V + E ). Der Platzbedarf von DFS ist Θ( V ). DSAL/SS 2017 VL-14: Graphalgorithmen I 40/48

104 Eigenschaften der Tiefensuche (2) 1 void dfsrec ( List adjlist [ n], int n, 2 int start, int & color [n]) { 3 color [ start ] = GRAY ; 4 time = time+1; left[start] = time; 5 foreach ( next in adjlist [ start ]) { 6 if ( color [ next ] == WHITE ) { 7 dfssrec ( adjlist, n, next, color ); 8 } 9 } 10 color [ start ] = BLACK ; 11 time = time+1; right[start] = time; 12 } Knoten v ist von Zeitpunkt left[v] bis Zeitpunkt right[v] aktiv DSAL/SS 2017 VL-14: Graphalgorithmen I 41/48

105 Eigenschaften der Tiefensuche (3) Fakt Zwei Intervalle [left[v],right[v]] und [left[u],right[u]] sind entweder disjunkt, oder das eine Intervall enthält das andere DSAL/SS 2017 VL-14: Graphalgorithmen I 42/48

106 Eigenschaften der Tiefensuche (3) Fakt Zwei Intervalle [left[v],right[v]] und [left[u],right[u]] sind entweder disjunkt, oder das eine Intervall enthält das andere Fakt Knoten v ist Vorfahre vom Knoten u im DFS-Baum, gdw. left[v] < left[u] < right[u] < right[v] gdw. zum Zeitpunkt left[v] ein Pfad von v nach u existiert, der (bis auf v) nur weisse Knoten enthält DSAL/SS 2017 VL-14: Graphalgorithmen I 42/48

107 Eigenschaften der Tiefensuche (4) DFS-Klassifikation von Kanten Baum-Kanten (tree-edges) treten im DFS-Baum auf DSAL/SS 2017 VL-14: Graphalgorithmen I 43/48

108 Eigenschaften der Tiefensuche (4) DFS-Klassifikation von Kanten Baum-Kanten (tree-edges) treten im DFS-Baum auf Rückwärts-Kanten (back-edges) gehen von Knoten u zu Vorfahren v DSAL/SS 2017 VL-14: Graphalgorithmen I 43/48

109 Eigenschaften der Tiefensuche (4) DFS-Klassifikation von Kanten Baum-Kanten (tree-edges) treten im DFS-Baum auf Rückwärts-Kanten (back-edges) gehen von Knoten u zu Vorfahren v Vorwärts-Kanten (forward-edges) gehen von einem Vorfahren v zum Knoten u DSAL/SS 2017 VL-14: Graphalgorithmen I 43/48

110 Eigenschaften der Tiefensuche (4) DFS-Klassifikation von Kanten Baum-Kanten (tree-edges) treten im DFS-Baum auf Rückwärts-Kanten (back-edges) gehen von Knoten u zu Vorfahren v Vorwärts-Kanten (forward-edges) gehen von einem Vorfahren v zum Knoten u Quer-Kanten (cross-edges) sind alle restlichen Kanten DSAL/SS 2017 VL-14: Graphalgorithmen I 43/48

111 Eigenschaften der Tiefensuche (4) DFS-Klassifikation von Kanten Baum-Kanten (tree-edges) treten im DFS-Baum auf Rückwärts-Kanten (back-edges) gehen von Knoten u zu Vorfahren v Vorwärts-Kanten (forward-edges) gehen von einem Vorfahren v zum Knoten u Quer-Kanten (cross-edges) sind alle restlichen Kanten Fakt In einem ungerichteten Graphen ist jede Kante entweder Baum-Kante oder Rückwärts-Kante DSAL/SS 2017 VL-14: Graphalgorithmen I 43/48

112 Finden von Zusammenhangskomponenten DSAL/SS 2017 VL-14: Graphalgorithmen I 44/48

113 Finden von Zusammenhangskomponenten (1) Problem Bestimme alle Zusammenhangskomponenten für ungerichteten Graphen. DSAL/SS 2017 VL-14: Graphalgorithmen I 45/48

114 Finden von Zusammenhangskomponenten (1) Problem Bestimme alle Zusammenhangskomponenten für ungerichteten Graphen. Lösung Konstruiere den zugehörigen symmetrischen Digraphen DSAL/SS 2017 VL-14: Graphalgorithmen I 45/48

115 Finden von Zusammenhangskomponenten (1) Problem Bestimme alle Zusammenhangskomponenten für ungerichteten Graphen. Lösung Konstruiere den zugehörigen symmetrischen Digraphen Verwende Tiefensuche: DSAL/SS 2017 VL-14: Graphalgorithmen I 45/48

116 Finden von Zusammenhangskomponenten (1) Problem Bestimme alle Zusammenhangskomponenten für ungerichteten Graphen. Lösung Konstruiere den zugehörigen symmetrischen Digraphen Verwende Tiefensuche: Beginne bei einem beliebigen Knoten DSAL/SS 2017 VL-14: Graphalgorithmen I 45/48

117 Finden von Zusammenhangskomponenten (1) Problem Bestimme alle Zusammenhangskomponenten für ungerichteten Graphen. Lösung Konstruiere den zugehörigen symmetrischen Digraphen Verwende Tiefensuche: Beginne bei einem beliebigen Knoten Finde alle anderen Knoten (und alle Kanten) in der selben Komponente mit DFS DSAL/SS 2017 VL-14: Graphalgorithmen I 45/48

118 Finden von Zusammenhangskomponenten (1) Problem Bestimme alle Zusammenhangskomponenten für ungerichteten Graphen. Lösung Konstruiere den zugehörigen symmetrischen Digraphen Verwende Tiefensuche: Beginne bei einem beliebigen Knoten Finde alle anderen Knoten (und alle Kanten) in der selben Komponente mit DFS Wenn es weitere Knoten gibt, wähle einen und wiederhole das Verfahren DSAL/SS 2017 VL-14: Graphalgorithmen I 45/48

119 Finden von Zusammenhangskomponenten (1) Problem Bestimme alle Zusammenhangskomponenten für ungerichteten Graphen. Lösung Konstruiere den zugehörigen symmetrischen Digraphen Verwende Tiefensuche: Beginne bei einem beliebigen Knoten Finde alle anderen Knoten (und alle Kanten) in der selben Komponente mit DFS Wenn es weitere Knoten gibt, wähle einen und wiederhole das Verfahren Man erhält einen Tiefensuchwald. Die Zeitkomplexität ist Θ( V + E ). DSAL/SS 2017 VL-14: Graphalgorithmen I 45/48

120 Finden von Zusammenhangskomponenten (2) 1 // Ausgabe in cc: cc[ v] = Komponente von Knoten v 2 3 void conncomponents ( List adjlst [ n], int n, int & cc[ n]) { 4 int color [ n], ccnum = 0; 5 for ( int v = 0; v < n; v ++) { // Initialisierung 6 color [ v] = WHITE ; 7 } 8 for (int v = 0; v < n; v++) { 9 if (color[v] == WHITE) { // weitere Komponente 10 dfssearch ( adjlst, n, v, ccnum++, cc); 11 } 12 } 13 } DSAL/SS 2017 VL-14: Graphalgorithmen I 46/48

121 Finden von Zusammenhangskomponenten (3) 1 void dfssearch ( List adjlst [ n], int n, int start, 2 int & color [ n], int ccnum, int &cc[n]) { 3 color [ start ] = GRAY ; 4 cc[start] = ccnum; // speichere Nummer der Komponente von v 5 foreach ( next in adjlst [ start ]) { 6 if ( color [ next ] == WHITE ) { 7 dfssearch ( adjlst, n, next, color, ccnum, cc); 8 } 9 } 10 color [ start ] = BLACK ; 11 } DSAL/SS 2017 VL-14: Graphalgorithmen I 47/48

122 Organisatorisches Nächste Vorlesung: Dienstag, Juni 20, 16:15 17:45 Uhr, Aula 1 Webseite: DSAL/SS 2017 VL-14: Graphalgorithmen I 48/48

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

Graphalgorithmen I. Organisatorisches. VL-14: Graphalgorithmen I. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger Organisatorisches VL-14: raphalgorithmen I (atenstrukturen und lgorithmen, SS 2017) erhard Woeginger Vorlesung: erhard Woeginger (Zimmer 4024 im 1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann,

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/81 Datenstrukturen und Algorithmen Vorlesung 14+15: Elementare Graphenalgorithmen (K22,K24.2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen 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

Mehr

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

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

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

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. 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.

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 13 (8.6.2016) Graphenalgorithmen I Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 13 (6.6.2018) Graphenalgorithmen II Yannic Maus Algorithmen und Komplexität Repräsentation von Graphen Zwei klassische Arten, einen Graphen

Mehr

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Stefan Thater & Michaela Regneri FR.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 011 Heute Ein wenig Graph-Theorie (in aller Kürze) Datenstrukturen

Mehr

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

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap. 254 12. Graphen Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap. 9.1-9.4,Cormen et al, Kap. 22 Königsberg 1736 255 Königsberg 1736 255 Königsberg 1736 255

Mehr

Programmierkurs Python

Programmierkurs Python Programmierkurs Python Stefan Thater Michaela Regneri 2010-0-29 Heute Ein wenig Graph-Theorie (in aller Kürze) Datenstrukturen für Graphen Tiefen- und Breitensuche Nächste Woche: mehr Algorithmen 2 Was

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 17. Vorlesung Graphen: Repräsentation und Durchlaufstrategien Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Vorlesungsumfrage Nutzen Sie

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 12 (4.6.2018) Graphenalgorithmen I Yannic Maus Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

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

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS Kap. 5: Graphen Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 17. VO DAP2 SS 2009 23. Juni 2008 1 Motivation Warum soll ich heute hier bleiben? Graphen sind wichtig und

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 9 Graphen Version vom 13. Dezember 2016 1 / 1 Vorlesung Fortsetzung 13. Dezember

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

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

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger Graphenalgorithmen I Geschickt Programmieren für den ICPC- Wettbewerb Felix Weissenberger Inhalt Grundlagen zu Graphen Begriffe Darstellung von Graphen Graphenalgorithmen Breitensuche Tiefensuche Topologisches

Mehr

Algorithmen und Datenstrukturen 2-1. Seminar -

Algorithmen und Datenstrukturen 2-1. Seminar - Algorithmen und Datenstrukturen 2-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 1. Übungsserie: 3 Aufgaben, insgesamt 30 28 Punkte A1 Spannbäume (10 8

Mehr

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

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Dipl-Math. Wolfgang Kinzner 2.4.2012 Kapitel 1: Grundlagen der algorithmischen Graphgentheorie

Mehr

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

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

Diskrete Strukturen WS 2005/06. Ernst W. Mayr. 27. Januar Fakultät für Informatik TU München WS 2005/06 Ernst W. Mayr Fakultät für Informatik TU München http://www14.in.tum.de/lehre/2005ws/ds/ 27. Januar 2006 Ernst W. Mayr 2.16 Inzidenzmatrix 3. Definitionen für gerichtete Graphen 3.1 Digraph

Mehr

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

12. Graphen. Königsberg Zyklen. [Multi]Graph Königsberg 76. Graphen, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap. 9. - 9.,Cormen et al, Kap. [Multi]Graph Zyklen C Kante Gibt es einen Rundweg durch die Stadt

Mehr

Matching. Organisatorisches. VL-18: Matching. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger. Tanzabend

Matching. Organisatorisches. VL-18: Matching. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger. Tanzabend Organisatorisches VL-18: Matching (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann,

Mehr

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 12, Donnerstag, 23. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 0 / 04 Vorlesung, Donnerstag,. Januar 04 (Graphen, Breiten/Tiefensuche, Zusammenhangskomponenten) Junior-Prof.

Mehr

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.

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. Graphen Definition: 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. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

Motivation Kap. 6: Graphen

Motivation Kap. 6: Graphen Motivation Kap. 6: Graphen Warum soll ich heute hier bleiben? Graphen sind wichtig und machen Spaß! Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Was gibt es

Mehr

Algorithmen I - Tutorium 28 Nr. 9

Algorithmen I - Tutorium 28 Nr. 9 Algorithmen I - Tutorium 28 Nr. 9 29.06.2017: Spaß mit Graphen und Graphtraversierung Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE

Mehr

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

Traversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS, V. April 0 / P.F. Stadler & S. Will (Bioinf, Uni LE) ADS, V. April 0 / Traversierung ADS: Algorithmen und Datenstrukturen Teil Prof. Peter F. Stadler & Sebastian

Mehr

Kapitel 5: Graphen und Graphalgorithmen

Kapitel 5: Graphen und Graphalgorithmen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 5: Graphen und Graphalgorithmen Skript zur Vorlesung Algorithmen und Datenstrukturen

Mehr

Graphen und Bäume. A.1 Graphen

Graphen und Bäume. A.1 Graphen Algorithmen und Datenstrukturen 96 A Graphen und Bäume A.1 Graphen Ein gerichteter Graph (auch Digraph) G ist ein Paar (V, E), wobei V eine endliche Menge und E eine Relation auf V ist, d.h. E V V. V heißt

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die nformatik 2 raphenexploration Sven Kosub A Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester

Mehr

Graphen. Leonhard Euler ( )

Graphen. Leonhard Euler ( ) Graphen Leonhard Euler (1707-1783) 2 Graph Ein Graph besteht aus Knoten (nodes, vertices) die durch Kanten (edges) miteinander verbunden sind. 3 Nachbarschaftsbeziehungen Zwei Knoten heissen adjazent (adjacent),

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphdurchläufe Maike Buchin 22. und 27.6.2017 Graphexploration Motivation: Für viele Zwecke will man den gesamten Graphen durchlaufen, zb. um festzustellen ob er (stark) zusammenhängt.

Mehr

1 Exploration geordneter Wurzelbäume

1 Exploration geordneter Wurzelbäume Exploration geordneter Wurzelbäume Ein geordneter Wurzelbaum ist ein Baum, bei welchem ein Knoten als Wurzel ausgezeichnet wird und bei welchem die Kinder eines Knotens linear, sagen wir von links nach

Mehr

Elementare Datenstrukturen

Elementare Datenstrukturen Organisatorisches VL-09: Elementare Datenstrukturen (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen:

Mehr

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen)

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen) WS 2015/16 Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_15

Mehr

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

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 16 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 45 Graphen TU Ilmenau Seite 2 / 45 Graphen 1 2 3 4 5 6 7 8

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 12, Donnerstag, 22. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 014 / 015 Vorlesung 1, Donnerstag,. Januar 015 (Graphen, Breiten/Tiefensuche, Zusammenhangskomponenten) Junior-Prof.

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester

Mehr

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Breitensuche BFS (Breadth First Search)

Breitensuche BFS (Breadth First Search) 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;

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS : Algorithmen und Datenstrukturen Teil Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 09. Mai 08 [Letzte Aktualisierung: 06/07/08, 08:4]

Mehr

Graphenalgorithmen I

Graphenalgorithmen I Graphenalgorithmen I Vortrag im Seminar Hallo Welt! für Fortgeschrittene 7. Juni 211 Graphenalgorithmen I 1/33 Motivation Problem Wie komme ich am schnellsten ins Kanapee? Problem Wie kommt ein Datenpaket

Mehr

Einheit 11 - Graphen

Einheit 11 - Graphen Einheit - Graphen Bevor wir in medias res (eigentlich heißt es medias in res) gehen, eine Zusammenfassung der wichtigsten Definitionen und Notationen für Graphen. Graphen bestehen aus Knoten (vertex, vertices)

Mehr

14. Elementare Graphalgorithmen

14. Elementare Graphalgorithmen Graphen sind eine der wichtigsten Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Übersicht: Zunächst eine kurze Einführung in Graphen. Dann

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 16 (2.7.2014) Graphtraversierung II, Minimale Spannbäume I Algorithmen und Komplexität Tiefensuche: Pseusocode DFS Traversal: for all u in

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu

Mehr

Tutoraufgabe 1 (Suchen in Graphen):

Tutoraufgabe 1 (Suchen in Graphen): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS14 F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe 1 (Suchen in Graphen): a) Geben Sie die Reihenfolge an, in der die Knoten besucht werden, wenn

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 02. Mai 2017 [Letzte Aktualisierung: 10/07/2018,

Mehr

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

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind. 3.5 Gerichteter Pfad Definition 291 Eine Folge (u 0, u 1,..., u n ) mit u i V für i = 0,..., n heißt gerichteter Pfad, wenn ( i {0,..., n 1} ) [ (u i, u i+1 ) A]. Ein gerichteter Pfad heißt einfach, falls

Mehr

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

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008 Technische Universität München Fakultät für Informatik Lehrstuhl für Informatik 15 Computergraphik & Visualisierung Prof. Dr. Rüdiger Westermann Dr. Werner Meixner Wintersemester 2007/08 Lösungsblatt 9

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste

Mehr

Kapitel IV Minimale Spannbäume

Kapitel IV Minimale Spannbäume Kapitel IV Minimale Spannbäume. Grundlagen Ein Graph G = (V, E) besteht aus einer Menge V von Knoten und einer Menge E von Kanten. Wir werden nur endliche Knoten- (und damit auch Kanten-) Mengen betrachten.

Mehr

Nachbarschaft, Grad, regulär, Inzidenz

Nachbarschaft, Grad, regulär, Inzidenz Nachbarschaft, Grad, regulär, Inzidenz Definition Eigenschaften von Graphen Sei G = (V, E) ein ungerichteter Graph. 1 Die Nachbarschaftschaft Γ(u) eines Knoten u V ist Γ(u) := {v V {u, v} E}. 2 Der Grad

Mehr

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

Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 19. VO DAP2 SS 2008 19. Juni 2008 1

Mehr

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

23. Graphen. Königsberg Zyklen. [Multi]Graph Königsberg 76. Graphen, Repräsentation, Reflexive transitive Hülle, Traversieren (DFS, BFS), Zusammenhangskomponenten, Topologisches Sortieren Ottman/Widmayer, Kap. 9. - 9.,Cormen et al, Kap. 60 60 [Multi]Graph

Mehr

Algorithmen I. Tutorium 1-8. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-8. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-8. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-06-06 Überblick 1 Allgemeines Adjazenzliste Adjazenzmatrix Adjazenzfeld Aufgaben

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS : Algorithmen und Datenstrukturen Teil 4 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

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

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

Graphentheorie. Yichuan Shen. 10. Oktober 2013

Graphentheorie. Yichuan Shen. 10. Oktober 2013 Graphentheorie Yichuan Shen 0. Oktober 203 Was ist ein Graph? Ein Graph ist eine kombinatorische Struktur, die bei der Modellierung zahlreicher Probleme Verwendung findet. Er besteht ganz allgemein aus

Mehr

Graphalgorithmen I. Katharina Reif Hallo Welt -Seminar - LS 2

Graphalgorithmen I. Katharina Reif Hallo Welt -Seminar - LS 2 Graphalgorithmen I Katharina Reif 14.06.2017 allo Welt -Seminar - LS 2 Überblick Einführung Speichern von Graphen Topologische Sortierung Zusammenhang und Zusammenhangskomponenten Artikulationspunkte rücken

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz http://www.inf.uni-konstanz.de/algo/lehre/ss08/info2 Sommersemester 2008 Sven Kosub

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

Mehr

Minimale Spannbäume. Übersicht. 1 Spannbäume. 2 Minimale Spannbäume. 3 Greedy Algorithmen. 4 Die Algorithmen von Kruskal und Prim

Minimale Spannbäume. Übersicht. 1 Spannbäume. 2 Minimale Spannbäume. 3 Greedy Algorithmen. 4 Die Algorithmen von Kruskal und Prim Datenstrukturen und Algorithmen Vorlesung 16: (K23) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-1/dsal/ 12. Juni 201

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

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

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Organisatorisches VL-17: Kürzeste Pfade (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann,

Mehr

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

Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od Diskrete Strukturen 3.7 dag 473/556 3.8 Zusammenhang Definition

Mehr

5 Graphen. Repräsentationen endlicher Graphen. 5.1 Gerichtete Graphen. 5.2 Ungerichtete Graphen. Ordnung von Graphen

5 Graphen. Repräsentationen endlicher Graphen. 5.1 Gerichtete Graphen. 5.2 Ungerichtete Graphen. Ordnung von Graphen Grundlagen der Mathematik für Informatiker 1 Grundlagen der Mathematik für Informatiker 5 Graphen 5.1 Gerichtete Graphen Definition 5.1 (V, E) heißt gerichteter Graph (Digraph), wenn V Menge von Knoten

Mehr

2.4 Starke Zusammenhangskomponenten in Digraphen

2.4 Starke Zusammenhangskomponenten in Digraphen Starke Zusammenhangskomponenten Einleitung 2.4 Starke Zusammenhangskomponenten in Digraphen Definition 2.4.1 Zwei Knoten v und w in einem Digraphen G heißen äquivalent, wenn v w und w v gilt. Notation:

Mehr

Übersicht. Datenstrukturen und Algorithmen. Trigramme... Übersicht. Terminologie Repräsentation von Graphen

Übersicht. Datenstrukturen und Algorithmen. Trigramme... Übersicht. Terminologie Repräsentation von Graphen atenstrukturen und lgorithmen Vorlesung 14+15: lementare algorithmen (K22,K24.2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification roup http://moves.rwth-aachen.de/teaching/ss-15/dsal/

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine

Mehr

Effiziente Algorithmen

Effiziente Algorithmen Effiziente Algorithmen Martin Hofmann und Jan Johannsen Institut für Informatik LMU München Sommersemester 2002 Graphalgorithmen Grundlegendes Repräsentation von Graphen Breiten- und Tiefensuche Minimale

Mehr

Graphen Jiri Spale, Algorithmen und Datenstrukturen - Graphen 1

Graphen Jiri Spale, Algorithmen und Datenstrukturen - Graphen 1 Graphen 27 Jiri Spale, Algorithmen und Datenstrukturen - Graphen Motivation Einsatz: Berechnung von Entfernungen Auffinden von Zyklen in Beziehungen Ermittlung von Verbindungen Zeitmanagement Konzept:

Mehr

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

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56 Graphalgorithmen I Simon Regnet Universität Erlangen May 16, 2008 Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, 2008 1 / 56 Inhalt 1 Motivation 2 Terminologie 3 Datenstrukturen 4 Suche

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS : Algorithmen und Datenstrukturen Teil Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

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

Wir nennen einen Pfad in einem gerichteten Graphen Zyklus, wenn der Pfad im gleichen Knoten beginnt und endet, d. h. aaacmxicdvdlsgmxfl1t3/vv69jntaiuyowubbdcwy1lbfuqwkomtwuyzgri7ltgwa9wa7/cr+lo3potpq2c9xegcdjnxu7j8wmpdlru2mktlc4tr6yu5dc3nre2czvfhlgjzrzolfs65vpdpyh4hqvk3oo1p6evedmpzid+c8i1esq6xjtmnzaoitexjkkvbozdl5yrytfofkpu+bhacu+q5dfxyu4updp+pkobwgv3xyne9hrlqh4hk9sytufg2mmorsekf8zfjobhlav0wnuwrjtkppnnez+sq6v0sf9p+yiku/x7rkzdy9lqt5mhxtvz05uif3q+ugfs38zdz1aedznlwqtwndwpjarvvfmrfpuvtiaioeeesvnqfiijkjkpj/se5gxlagllwti/enzhnwvos87bfr+qiv+txnhzc8velveqvwcgvdidazgcd06hbhdwcxvgemitpmpiexhgzqvznhvnoz87uzah5/0djy+sia==

Mehr

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

Seien u, v V, u v. Da G zusammenhängend ist, muss mindestens ein Pfad zwischen u und v existieren. Beweis: 1. 2. Seien u, v V, u v. Da G zusammenhängend ist, muss mindestens ein Pfad zwischen u und v existieren. Widerspruchsannahme: Es gibt zwei verschiedene Pfade zwischen u und v. Dann gibt es einen

Mehr

Kapitel IV Minimale Spannbäume

Kapitel IV Minimale Spannbäume Kapitel IV Minimale Spannbäume 1. Grundlagen Ein Graph G = (V, E) besteht aus einer Menge V von Knoten und einer Menge E von Kanten. Wir werden nur endliche Knoten- (und damit auch Kanten-) Mengen betrachten.

Mehr

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

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr) WS 2011/12 Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr) Dr. Werner Meixner Fakultät für Informatik TU München http://www14.in.tum.de/lehre/2011ws/ds/uebung/ 25. Januar 2012 ZÜ DS ZÜ XIII

Mehr

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

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza) WS 2013/14 Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza) Dr. Werner Meixner Fakultät für Informatik TU München http://www14.in.tum.de/lehre/2013ws/ds/uebung/ 22. Januar 2014 ZÜ DS ZÜ XIII

Mehr

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

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt. Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil II Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 07.

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu

Mehr

Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich. Graphen (2)

Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich. Graphen (2) Graphen (2) 1 Topologisches Sortieren (1) Die Kanten eines gerichteten zyklenfreien Graphen bilden eine Halbordnung (die Ordnungsrelation ist nur für solche Knoten definiert die am gleichen Pfad liegen).

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen & Datenstrukturen 2 Praktikum 3 Algorithmen & Datenstrukturen 2 Praktikum 3 Thema: Graphalgorithmen Sommersemester 2016 Prof. Dr. Christoph Karg Hochschule Aalen Dieses Praktikum widmet sich dem Thema Graphalgorithmen. Ziel ist die Implementierung

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 3 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

12. AuD Tafelübung T-C3

12. AuD Tafelübung T-C3 12. AuD Tafelübung T-C3 Simon Ruderich 2. Februar 2011 Kollisionen (Primär)Kollision Stelle mit normal eingefügtem Element schon belegt (gleicher Hashwert) tritt bei verketteten Listen und Sondierung auf

Mehr

Diskrete Mathematik Graphentheorie (Übersicht)

Diskrete Mathematik Graphentheorie (Übersicht) Diskrete Mathematik Graphentheorie (Übersicht) Dr. C. Löh 2. Februar 2010 0 Graphentheorie Grundlagen Definition (Graph, gerichteter Graph). Ein Graph ist ein Paar G = (V, E), wobei V eine Menge ist (die

Mehr

WS 2008/09. Diskrete Strukturen

WS 2008/09. Diskrete Strukturen WS 2008/09 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0809

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr