Download presentation

Presentation is loading. Please wait.

Published byDarcy Wood Modified over 6 years ago

1
Lecture 16: DFS, DAG, and Strongly Connected Components Shang-Hua Teng

2
Directed Acyclic Graphs A directed acyclic graph or DAG is a directed graph with no directed cycles:

3
DFS and DAGs Theorem: a directed graph G is acyclic iff a DFS of G yields no back edges: –=> if G is acyclic, will be no back edges Trivial: a back edge implies a cycle –<= if no back edges, G is acyclic Proof by contradiction: G has a cycle a back edge –Let v be the vertex on the cycle first discovered, and u be the predecessor of v on the cycle –When v discovered, whole cycle is white –Must visit everything reachable from v before returning from DFS-Visit() –So path from u v is gray gray, thus (u, v) is a back edge

4
Topological Sort Topological sort of a DAG: –Linear ordering of all vertices in graph G such that vertex u comes before vertex v if edge (u, v) G Real-world application: Scheduling a dependent graph, find a feasible course plan for university studies

5
A Topological Sort Algorithm Topological-Sort() { 1.Call DFS to compute finish time f[v] for each vertex 2.As each vertex is finished, insert it onto the front of a linked list 3.Return the linked list of vertices } Time: O(V+E) Correctness: need to prove that (u,v) G f[u]>f[v]

6
Correctness of Topological Sort Lemma: (u,v) G f[u] > f[v] –When (u,v) is explored, u is gray, consider the following cases: 1.v is gray (u,v) is back edge. Can’t happen, if G is a DAG. 2.v if white v becomes descendent of u f[v] < f[u] (since must finish v before backtracking and finishing u) 3.v is black v already finished f[v] < f[u]

7
Our Algorithm for Topological Sorting is correct

8
Strongly Connected Directed graphs Every pair of vertices are reachable from each other a b d c e f g

9
Strongly-Connected Graph G is strongly connected if, for every u and v in V, there is some path from u to v and some path from v to u. Strongly Connected Not Strongly Connected

10
Strongly-Connected Components A strongly connected component of a graph is a maximal subset of nodes (along with their associated edges) that is strongly connected. Nodes share a strongly connected component if they are inter-reachable.

11
Strongly Connected Components a b d c e f g { a, c, g } { f, d, e, b }

12
Reduced Component Graph of Strongly Connected Components a b d c e f g { a, c, g } { f, d, e, b } Component graph G SCC =(V SCC, E SCC ): one vertex for each component –(u, v) E SCC if there exists at least one directed edge from the corresponding components

13
Strongly Connected Components

14
Graph of Strongly Connected Components Theorem: the Component graph G SCC =(V SCC, E SCC ) is a DAG –Each component is maximal in the sense that no other vertices can be added to it. If G SCC =(V SCC, E SCC ) is not a DAG, then one can merge components on along a circle of G SCC Therefore, G SCC has a topological ordering

15
Finding Strongly-Connected Components Input: A directed graph G = (V,E) Output: a partition of V into disjoint sets so that each set defines a strongly connected component of G How should we compute the partition?

16
Graph of Strongly Connected Components Recall: Theorem: the Component graph G SCC =(V SCC, E SCC ) is a DAG –Each component is maximal in the sense that no other vertices can be added to it. If G SCC =(V SCC, E SCC ) is not a DAG, then one can merge components on along a circle of G SCC Therefore, G SCC has a topological ordering

17
DFS on G Topological Sort G SCC =(V SCC, E SCC ) Let U be a subset of V If we output U in V SCC in the decreasing order of f[U], then we topologically sort G SCC Lemma: Let U and U’ be distinct strongly connected component, suppose there is an edge (u,v) in E where u in U and v in U’. Then f[U] > f[U’]

18
Proof of the Lemma Lemma: Let U and U’ be distinct strongly connected component, suppose there is an edge (u,v) in E where u in U and v in U’. Then f[U] > f[U’] Proof: Two cases 1.d[U] < d[U’], say x in U is the first vertex 2.d[U’] < d[U], say y is the first, but U is not reachable from y

19
Transpose of a Digraph Transpose of G = (V,E): G T =(V, E T ), where E T ={(u, v): (v, u) E} If G is a DAG then G T is also a DAG If we print the topological order of G in the reverse order, then it is a topological order of G T

20
Strongly-Connected Components Strongly-Connected-Components(G) 1.call DFS(G) to compute finishing times f[u] for each vertex u. 2.compute G T 3.call DFS(G T ), but in the main loop of DFS, consider the vertices in order of decreasing f[u] 4.output the vertices of each tree in the depth-first forest of step 3 as a separate strongly connected component. The graph G T is the transpose of G, which is visualized by reversing the arrows on the digraph.

21
Strong Components: example a dc ba dc b after step 1 a4a4 b3b3 c2c2 d1d1 a4a4 d1d1c2c2 b3b3 Graph G r a4a4 c2c2 b3b3 d1d1 df spanning forest for G r

22
Runtime Lines 1 and 3 are (E+V) due to DFS Line 2 involves creating an adjacency list or matrix, and it is also O(E+V) Line 4 is constant time So, SCC(G) is (E+V)

23
Strongly-Connected Components DFS on G, starting at c. node a d=13 f=14 node b d=11 f=16 node c d=1 f=10 node d d=8 f=9 node e d=12 f=15 node f d=3 f=4 node g d=2 f=7 node h d=5 f=6

24
DFS on G T node a d=13 f=14 node b d=11 f=16 node c d=1 f=10 node d d=8 f=9 node e d=12 f=15 node f d=3 f=4 node g d=2 f=7 node h d=5 f=6 node a d=2 f=5 =b node b d=1 f=6 =NIL node c d=7 f=10 =NIL node d d=8 f=9 =c node e d=3 f=4 =a node f d=12 f=13 =g node g d=11 f=14 =NIL node h d=15 f=16 =NIL

25
DFS on G T This is G T, labeled after running DFS(G T ). In order of decreasing finishing time, process the nodes in this order: b e a c d g h f. G T : node a d=2 f=5 =b node b d=1 f=6 =NIL node c d=7 f=10 =NIL node d d=8 f=9 =c node e d=3 f=4 =a node f d=12 f=13 =g node g d=11 f=14 =NIL node h d=15 f=16 =NIL

26
Strongly-Connected Components These are the 4 trees that result, yielding the strongly connected components. Finally, merge the nodes of any given tree into a super-node, and draw links between them, showing the resultant acyclic component graph. a bc d e f gh abcd efgh abecd fg h Component Graph

Similar presentations

© 2021 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google