# Data Structures, Spring 2006 © L. Joskowicz 1 Data Structures – LECTURE 14 Strongly connected components Definition and motivation Algorithm Chapter 22.5.

## Presentation on theme: "Data Structures, Spring 2006 © L. Joskowicz 1 Data Structures – LECTURE 14 Strongly connected components Definition and motivation Algorithm Chapter 22.5."— Presentation transcript:

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

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!

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

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

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

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

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

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

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.

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

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

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

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

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

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

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’

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]}

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’)

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

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

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’].

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.

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’].

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.

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.

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.

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

Download ppt "Data Structures, Spring 2006 © L. Joskowicz 1 Data Structures – LECTURE 14 Strongly connected components Definition and motivation Algorithm Chapter 22.5."

Similar presentations