1 / 27

Data Structures – LECTURE 14 Strongly connected components

Data Structures – LECTURE 14 Strongly connected components. Definition and motivation Algorithm Chapter 22.5 in the textbook (pp 552—557). Connected components. Find the largest components (sub-graphs) such that there is a path from any vertex to any other vertex.

lelia
Download Presentation

Data Structures – LECTURE 14 Strongly connected components

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Data Structures – LECTURE 14 Strongly connected components • Definition and motivation • Algorithm Chapter 22.5 in the textbook (pp 552—557).

  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. b f e d h g a c Example: strongly connected components

  4. b f e d h g a c Example: strongly connected components

  5. Strongly connected components • Definition: the strongly connected components (SCC) C1, …, Ck 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 Ci, 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. Strongly connected components graph • Definition: the SCC graphG~ = (V~,E~) of the graph G = (V,E) is as follows: • V~ = {C1, …, Ck}. Each SCC is a vertex. • E~ = {(Ci,Cj)| i≠j and (x,y)E, where xCiand yCj}. 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 graphGT = (V,ET) of the graph G = (V,E) is G with its edge directions reversed: ET= {(u,v)| (v,u)E}.

  7. b f e d h g C4 C3 C1 C2 a c Example: SCC graph

  8. b b f f e e h h d d g g a a c c Example: transpose graph GT G GT

  9. SCC algorithm Idea: compute the SCCgraph G~ = (V~,E~) with two DFS, one for G and one for its transpose GT, visiting the vertices in reverse order. SCC(G) • DFS(G) to compute finishing times f [v], vV • Compute GT • DFS(GT) in the order of decreasingf [v] • Output the vertices of each tree in the DFS forest as a separate SCC.

  10. b f e h d g a c Example: computing SCC (1) 2/5 3/4 1/6 7/16 11/12 14/15 8/13 9/10

  11. b b f f e e h d h d g g a a c c Example: computing SCC (2) 2/5 3/4 1/6 7/16 11/12 14/15 5 4 8/13 9/10 12 16 6 15 10 13

  12. b b f f e e d d h h g g 2/7 a a c c 1/8 4/5 3/6 Example: computing SCC (3) 5 4 12 16 6 15 10 13

  13. b b f e e d h g a a c c 1/2 Example: computing SCC (4) 5 4 12 16 6 15 10 13

  14. b b f e e d h g a a c 1/2 Example: computing SCC (5) 5 4 12 16 6 15 10 13

  15. b b f e e h d 1/4 2/3 g a c Example: computing SCC (6) 5 12 16 6 15 10 13

  16. 2 4 3 C2 C1 C4 C3 1 Example: computing SCC (2) Labeled transpose graph GT 2 b e 3 4’ 4 4’’ a d g 1 c h f

  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] = minuU{d [u]} f [U] = maxuU{f [u]}

  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: • C was discovered before C’: d(C) < d(C’) • C was discovered after C’: d(C) > d(C’)

  19. b b f f e e d h h d g g a a c c Example: finishing times 2/5 3/4 1/6 7/16 11/12 f [C4] = 5 14/15 8/13 9/10 f [C3] = 6 f [C2] = 15 f [C1] = 16

  20. b b f f e e d h h d g g a a c c Example: finishing times 2/5 3/4 1/6 7/16 11/12 f [C4] = 5 14/15 8/13 9/10 f [C3] = 6 f [C2] = 15 f [C1] = 16

  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 verticesin C and C’ become descendants of x in the depth-first tree. • Therefore, f [x] = f [C] > f [C’].

  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. 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. Proof of correctness: SCC (6) Corollary: for edge (u,v)ET, 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 GT 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. 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 GT: 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. 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 GT 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 GT. • Thus, the vertices of the depth-first search tree in GT that is rooted at u form exactly one connected component.

  27. e b f d h g a c C1 C2 C4 C3 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.

More Related