1 / 14

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). Strongly connected components.

ponce
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. 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 path(u,v) relation, denoted by u ~ v. • Applications: networking, communications. • Problem: compute the strongly connected components of G in linear time Θ(|V|+|E|).

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

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

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

  8. 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 f [v], ∀vV • Compute GT • DFS(GT) in the order of decreasing f [v] • Output the vertices of each tree in the DFS forest as a separate SCC.

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

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

  11. 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’. 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’]where f [C] = minuC(f [C]) for C G. Corollary: for edge (u,v)ET, and uC and v’C’ f [C] < f [C’]

  12. Proof of correctness: SCC (2) 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.

  13. Proof of correctness: SCC (3) 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.

  14. 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 each edge of G exactly once (vertices can be visited more than once) All can be computed in O(|E|) on the SCC.

More Related