VL-14: Graphalgorithmen I. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger
|
|
- Edmund Böhler
- vor 5 Jahren
- Abrufe
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
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,
MehrDatenstrukturen 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
Mehr15. 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
MehrProgramm 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
MehrDefinition 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.
MehrInformatik 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
MehrAlgorithmen 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 /
MehrInformatik 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
MehrProgrammierkurs 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
Mehr12. 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
MehrProgrammierkurs 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
MehrAlgorithmen 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
MehrInformatik 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
MehrKap. 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
MehrAlgorithmen 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
MehrProgrammiertechnik 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
MehrProgrammiertechnik 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
MehrGraphenalgorithmen 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
MehrAlgorithmen 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
MehrFerienkurs 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
MehrEinfü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
MehrDiskrete 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
Mehr12. 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
MehrMatching. 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,
MehrAlgorithmen 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.
MehrEin 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
MehrMotivation 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
MehrAlgorithmen 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
MehrTraversierung 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
MehrKapitel 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
MehrGraphen 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
MehrEinfü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
MehrGraphen. 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),
MehrVorlesung 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.
Mehr1 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
MehrElementare 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:
MehrDiskrete 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
MehrAlgorithmen 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
MehrGraphdurchmusterung, 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,
MehrAlgorithmen 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.
MehrEinfü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
MehrTechnische 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
MehrBreitensuche 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;
MehrSortieren 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
MehrADS 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]
MehrGraphenalgorithmen 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
MehrEinheit 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)
Mehr14. 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
MehrInformatik 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
MehrAlgorithmen & 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
MehrTutoraufgabe 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
MehrADS: 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,
MehrDefinition 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
MehrDiskrete 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 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
MehrKapitel 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.
MehrNachbarschaft, 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
MehrKap. 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
Mehr23. 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
MehrAlgorithmen 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
MehrVorlesung 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)
MehrADS 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. 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,
MehrQuicksort 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.
MehrDatenstrukturen. 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,
MehrGraphentheorie. 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
MehrGraphalgorithmen 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
MehrEinfü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
MehrWie 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
MehrMinimale 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
MehrADS: 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
MehrKü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,
MehrAlgorithmus 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
Mehr5 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
Mehr2.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
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/
MehrVorlesung 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
MehrEffiziente 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
MehrGraphen 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:
MehrGraphalgorithmen 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
MehrAlgorithmen 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
MehrADS 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
MehrWir 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==
MehrSeien 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
MehrKapitel 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.
MehrZentralü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
MehrZentralü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
MehrWintersemester 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
MehrADS: 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.
MehrAlgorithmen & 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
MehrHelmut 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).
MehrInformatik 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
MehrAlgorithmen & 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
MehrADS: 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
Mehr12. 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
MehrDiskrete 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
MehrWS 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
MehrWS 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