Download presentation

Presentation is loading. Please wait.

1
Data Structures, Spring 2006 © L. Joskowicz 1 Data Structures – LECTURE 14 Strongly connected components Definition and motivation Algorithm Chapter 22.5 in the textbook (pp 552—557).

2
Data Structures, Spring 2006 © L. Joskowicz 2 Connected components Find the largest components (sub-graphs) such that there is a path from any vertex to any other vertex. Applications: networking, communications. Undirected graphs: apply BFS/DFS (inner function) from a vertex, and mark vertices as visited. Upon termination, repeat for every unvisited vertex. Directed graphs: strongly connected components, not just connected: a path from u to v AND from v to u, which are not necessarily the same!

3
Data Structures, Spring 2006 © L. Joskowicz 3 Example: strongly connected components d bfeac g h

4
Data Structures, Spring 2006 © L. Joskowicz 4 Example: strongly connected components d bfeac g h

5
Data Structures, Spring 2006 © L. Joskowicz 5 Strongly connected components Definition: the strongly connected components (SCC) C 1, …, C k of a directed graph G = (V,E) are the largest disjoint sub-graphs (no common vertices or edges) such that for any two vertices u and v in C i, there is a path from u to v and from v to u. Equivalence classes of the binary relation path(u,v) denoted by u ~ v. The relation is not symmetric! Goal: compute the strongly connected components of G in time linear in the graph size Θ(|V|+|E|).

6
Data Structures, Spring 2006 © L. Joskowicz 6 Strongly connected components graph Definition: the SCC graph G ~ = (V ~,E ~ ) of the graph G = (V,E) is as follows: –V ~ = {C 1, …, C k }. Each SCC is a vertex. –E ~ = {(C i,C j )| i≠j and (x,y) E, where x C i and y C j }. A directed edge between components corresponds to a directed edge between them from any of their vertices. G ~ is a directed acyclic graph (no directed cycles)! Definition: the transpose graph G T = (V,E T ) of the graph G = (V,E) is G with its edge directions reversed: E T = {(u,v)| (v,u) E}.

7
Data Structures, Spring 2006 © L. Joskowicz 7 Example: SCC graph C4C4 C3C3 C1C1 C2C2 d b f e a c g h

8
Data Structures, Spring 2006 © L. Joskowicz 8 Example: transpose graph G T d b f e a c g h d b f e a c g h G GTGT

9
Data Structures, Spring 2006 © L. Joskowicz 9 SCC algorithm Idea: compute the SCC graph G ~ = (V ~,E ~ ) with two DFS, one for G and one for its transpose G T, visiting the vertices in reverse order. SCC(G) 1. DFS(G) to compute finishing times f [v], v V 2. Compute G T 3.DFS(G T ) in the order of decreasing f [v] 4.Output the vertices of each tree in the DFS forest as a separate SCC.

10
Data Structures, Spring 2006 © L. Joskowicz 10 Example: computing SCC (1) 1/6 d bfeac g h 2/5 3/4 8/13 11/12 7/16 14/15 9/10

11
Data Structures, Spring 2006 © L. Joskowicz 11 Example: computing SCC (2) d bfeac g h 6 13 4 15 5 10 12 16 1/6 d bfeac g h 2/5 3/4 8/13 11/12 7/16 14/15 9/10

12
Data Structures, Spring 2006 © L. Joskowicz 12 Example: computing SCC (3) d bfeac g h 6 13 4 15 5 10 12 16 d b f e a c g h 3/64/5 2/7 1/8

13
Data Structures, Spring 2006 © L. Joskowicz 13 Example: computing SCC (4) d b fe ac g h 6 13 4 15 5 10 12 16 b e a c 1/2

14
Data Structures, Spring 2006 © L. Joskowicz 14 Example: computing SCC (5) d b f ea c g h 6 13 4 15 5 10 12 16 b e a 1/2

15
Data Structures, Spring 2006 © L. Joskowicz 15 Example: computing SCC (6) 5 b e 1/42/3 d b f e ac g h 6 13 15 10 12 16

16
Data Structures, Spring 2006 © L. Joskowicz 16 Example: computing SCC (2) d b f e a c g h 1 2 34 4’’ C3C3 C4C4 C1C1 C2C2 1 2 3 4 Labeled transpose graph G T 4’

17
Data Structures, Spring 2006 © L. Joskowicz 17 Proof of correctness: SCC (1) Lemma 1: Let C and C’ be two distinct SCC of G = (V,E), let u,v C and u’,v’ C’. If there is a path from u to u’, then there cannot be a path from v’ to v. Definition: the start and finishing times of a set of vertices U V is: d[U] = min u U {d [u]} f [U] = max u U {f [u]}

18
Data Structures, Spring 2006 © L. Joskowicz 18 Proof of correctness: SCC (2) Lemma 2: Let C and C’ be two distinct SCC of G, and let (u,v) E where and u C and v C’. Then, f [C] > f [C’]. Proof: there are two cases, depending on which strongly connected component, C or C’ is discovered first: 1. C was discovered before C’: d(C) < d(C’) 2. C was discovered after C’: d(C) > d(C’)

19
Data Structures, Spring 2006 © L. Joskowicz 19 Example: finishing times d bfeac g h 1/6 d bfeac g h 2/5 3/4 8/13 11/12 7/16 14/15 9/10 f [C 3 ] = 6 f [C 4 ] = 5 f [C 2 ] = 15 f [C 1 ] = 16

20
Data Structures, Spring 2006 © L. Joskowicz 20 Example: finishing times d bfeac g h 1/6 d bfeac g h 2/5 3/4 8/13 11/12 7/16 14/15 9/10 f [C 3 ] = 6 f [C 4 ] = 5 f [C 2 ] = 15 f [C 1 ] = 16

21
Data Structures, Spring 2006 © L. Joskowicz 21 Proof of correctness: SCC (3) 1. d(C) < d(C’): C discovered before C’ Let x be the first vertex discovered in C. There is a path in G from x to each vertex of C which has not yet been discovered. Because (u,v) E, for any vertex w C’, there is also a path at time d[x] from x to w in G consisting only of unvisited vertices: x u v w. Thus, all vertices in C and C’ become descendants of x in the depth-first tree. Therefore, f [x] = f [C] > f [C’].

22
Data Structures, Spring 2006 © L. Joskowicz 22 Proof of correctness: SCC (4) 2. d(C) > d(C’): C discovered after C’ Let y be the first vertex discovered in C’. At time d[y], all vertices in C’ are unvisited. There is a path in G from y to each vertex of C’ which has only vertices not yet discovered. Thus, all vertices in C’ will become descendants of y in the depth-first tree, and so f [y] = f [C’]. At time d[y], all vertices in C are unvisited. Since there is an edge (u,v) from C to C’, there cannot, by Lemma 1, be a path from C’ to C. Hence, no vertex in C is reachable from y.

23
Data Structures, Spring 2006 © L. Joskowicz 23 Proof of correctness: SCC (5) 2. d(C) > d(C’) At time f [y], therefore, all vertices in C are unvisited. Thus, no vertex in C is reachable from y. At time f [y], therefore, all vertices in C are still unvisited. Thus, for anuy vertex w in C: f [w] > f [y] f [C] > f [C’].

24
Data Structures, Spring 2006 © L. Joskowicz 24 Proof of correctness: SCC (6) Corollary: for edge (u,v) E T, and u C and v’ C’ f [C] < f [C’] This provides shows to what happens during the second DFS. The algorithm starts at x with the SCC C whose finishing time f [C] is maximum. Since there are no vertices in G T from C to any other SCC, the search from x will not visit any other component! Once all the vertices have been visited, a new SCC is constructed as above.

25
Data Structures, Spring 2006 © L. Joskowicz 25 Proof of correctness: SCC (7) Theorem: The SCC algorithm computes the strongly connected components of a directed graph G. Proof: by induction on the number of depth-first trees found in the DFS of G T : the vertices of each tree form a SCC. The first k trees produced by the algorithm are SCC. Basis: for k = 0, this is trivially true. Inductive step: The first k trees produced by the algorithm are SCC. Consider the (k+1) st tree rooted at u in SCC C. By the lemma, f [u] = f [C] > f [C’] for SCC C’ that has not yet been visited.

26
Data Structures, Spring 2006 © L. Joskowicz 26 Proof of correctness: SCC (8) When u is visited, all the vertices v in its SCC have not been visited. Therefore, all vertices v are descendants of u in the depth-first tree. By the inductive hypothesis, and the corollary, any edges in G T that leave C must be in SCC that have already been visited. Thus, no vertex in any SCC other than C will be a descendant of u during the depth first search of G T. Thus, the vertices of the depth-first search tree in G T that is rooted at u form exactly one connected component.

27
Data Structures, Spring 2006 © L. Joskowicz 27 Uses of the SCC graph Articulation: a vertex whose removal disconnects G. Bridge: an edge whose removal disconnects G. Euler tour: a cycle that traverses all edges of G exactly once (vertices can be visited more than once) All can be computed in O(|E|) on the SCC. d bf eac g h C1C1 C2C2 C4C4 C3C3

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