cs473-algorithms i
DESCRIPTION
CS473-Algorithms I. Lecture 16 Strongly Connected Components. Strongly Connected Components. Definition: a strongly connected component (SCC) of a directed graph G ( V , E ) is a maximal set of vertices U V such that For each u , v U we have both u v and v u - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/1.jpg)
CS 473 Lecture 16 1
CS473-Algorithms I
Lecture 16
Strongly Connected Components
![Page 2: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/2.jpg)
CS 473 Lecture 16 2
Strongly Connected Components
Definition: a strongly connected component (SCC) of a directed graph G(V,E) is a maximal set of vertices U V such that– For each u,v U we have both u v and v u i.e., u and v are mutually reachable from each other (u v)
Let GT(V,ET) be the transpose of G(V,E) where ET {(u,v): (u,v) E}
– i.e., ET consists of edges of G with their directions reversedConstructing GT from G takes O(V+E) time (adjacency list rep)Note: G and GT have the same SCCs (u v in G u v in GT)
![Page 3: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/3.jpg)
CS 473 Lecture 16 3
Strongly Connected Components
Algorithm
(1) Run DFS(G) to compute finishing times for all uV
(2) Compute GT
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] computed in Step (1)
(4) Output vertices of each DFT in DFF of Step (3) as a separate SCC
![Page 4: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/4.jpg)
CS 473 Lecture 16 4
Strongly Connected ComponentsLemma 1: no path between a pair of vertices in
the same SCC, ever leaves the SCC
Proof: let u and v be in the same SCC u vlet w be on some path u w v u w
but v u a path w v u w u
therefore u and w are in the same SCC
QED
u
vwSCC
![Page 5: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/5.jpg)
CS 473 Lecture 16 5
SCC: Example
a b c
e
d
f g h
![Page 6: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/6.jpg)
CS 473 Lecture 16 6
SCC: Example
a b c
e
d
f g h
1
1
(1)Run DFS(G) to compute finishing times for all uV
![Page 7: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/7.jpg)
CS 473 Lecture 16 7
SCC: Example
a b c
e
d
f g h
1
1
10
2 73 4 5 6
8 9
(1)Run DFS(G) to compute finishing times for all uV
![Page 8: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/8.jpg)
CS 473 Lecture 16 8
SCC: Example
a b c
e
d
f g h
1
2
10
2 73 4 5 6
8 911
(1)Run DFS(G) to compute finishing times for all uV
![Page 9: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/9.jpg)
CS 473 Lecture 16 9
SCC: Example
a b c
e
d
f g h
1
2
10
2 73 4 5 6
8 916111413
1512
1
Vertices sorted according to the finishing times:
b, e, a, c, d, g, h, f
![Page 10: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/10.jpg)
CS 473 Lecture 16 10
SCC: Example
a b c
e
d
f g h
(2)Compute GT
![Page 11: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/11.jpg)
CS 473 Lecture 16 11
SCC: Example
a b c
e
d
f g h
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 12: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/12.jpg)
CS 473 Lecture 16 12
SCC: Example
a b c
e
d
f g h
r1=
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 13: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/13.jpg)
CS 473 Lecture 16 13
SCC: Example
a b c
e
d
f g h
r1=
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 14: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/14.jpg)
CS 473 Lecture 16 14
SCC: Example
a b c
e
d
f g h
r1= r2=
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 15: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/15.jpg)
CS 473 Lecture 16 15
SCC: Example
a b c
e
d
f g h
r1= r2=
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 16: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/16.jpg)
CS 473 Lecture 16 16
SCC: Example
a b c
e
d
f g h
r1= r2=
r3=
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 17: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/17.jpg)
CS 473 Lecture 16 17
SCC: Example
a b c
e
d
f g h
r1= r2=
r3=
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 18: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/18.jpg)
CS 473 Lecture 16 18
SCC: Example
a b c
e
d
f g h
r1= r2=
r3= r4=
(3) Call DFS(GT) processing vertices in main loop in decreasing f[u] order: b, e, a, c, d, g, h, f
![Page 19: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/19.jpg)
CS 473 Lecture 16 19
SCC: Example
a b c
e
d
f g h
r1= r2=
r3= r4=
(4) Output vertices of each DFT in DFF as a separate SCC
Cb{b,a,e}Cg{g,f} Ch{h}
Cc{c,d
}
![Page 20: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/20.jpg)
CS 473 Lecture 16 20
SCC: Examplea b c
e
d
f g h
hf,g
c,da,b,e
Acyclic componentgraph
Cb Cg
Cc
Ch
![Page 21: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/21.jpg)
CS 473 Lecture 16 21
Strongly Connected ComponentsThrm 1: in any DFS, all vertices in the same SCC
are placed in the same DFT
Proof: let r be the first vertex discovered in SCC Sr
because r is first, color[x]WHITE xSr{r} at time d[r]
So all vertices are WHITE on each r x path xSr{r}
– since these paths never leave Sr
Hence each vertex in Sr{r}becomes a descendent of r (White-path Thrm)
QED
r W
Sr
WG
Wat time d[r]
![Page 22: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/22.jpg)
CS 473 Lecture 16 22
Notation for the Rest of This Lecture
• d[u] and f[u] refer to those values computed by DFS(G) at step (1)
• u v refers to G not GT
Definition: forefather (u) of vertex u1. (u) That vertex w such that u w and f[u] is
maximized
2. (u) u possible because u u f[u] f[ (u)]
![Page 23: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/23.jpg)
CS 473 Lecture 16 23
Strongly Connected ComponentsLemma 2: ( (u)) (u)
Proof try to show that f[ ( (u))] f[ (u)] :
For any u,v V; u v Rv Ru f[ (v)] f[ (u)]
So, u (u) f[ ( (u))] f[ (u)]
Due to definition of (u) we have f[ ( (u))] f[ (u)]
Therefore f[ ( (u))] f[ (u)] QED
u vRv {w: v w}
v (u)
Note: f[x] f[y] x y(same vertex)
![Page 24: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/24.jpg)
CS 473 Lecture 16 24
Strongly Connected Components
Properties of forefather:
• Every vertex in an SCC has the same forefather which is in the SCC
• Forefather of an SCC is the representative vertex of the SCC
• In the DFS of G, forefather of an SCC is the first vertex discovered in the SCC last vertex finished in the SCC
![Page 25: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/25.jpg)
CS 473 Lecture 16 25
Strongly Connected Components
THM2: (u) of any u V in any DFS of G is an ancestor of u
PROOF: Trivial if (u) u. If (u) u, consider color of (u) at time d[u]
(u) is GRAY: (u) is an ancestor of u proving the theorem (u) is BLACK: f [(u)] < f [u] contradiction to def. of (u) (u) is WHITE: 2 cases according to colors of intermediate
vertices on p(u, (u))
Path p(u, (u)) at time d[u]:
u x1 x2 xr
G ? ? ?
w
(u) . . . . . .
![Page 26: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/26.jpg)
CS 473 Lecture 16 26
Strongly Connected Components
Case 1: every intermediate vertex xi p(u, (u)) is WHITE (u) becomes a descendant of u (WP-THM) f [(u)] < f [u] contradiction
Case 2: some non-WHITE intermediate vertices on p(u, (u)) • Let xt be the last non-WHITE vertex on
p(u, (u)) u, x1, x2,…, xr, (u)• Then, xt must be GRAY since BLACK-to-WHITE edge (xt,
xt+1) cannot exist• But then, p(xt, (u)) xt+1, xt+2,…, xr, (u) is a white path
(u) is a descendant of xt (by white-path theorem) f [xt] > f [(u)] contradicting our choice for (u) Q.E.D.
![Page 27: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/27.jpg)
CS 473 Lecture 16 27
Strongly Connected Components
C1: in any DFS of G (V, E) vertices u and (u) lie in the same SCC, u V
PROOF: u (u) (by definition) and (u) u since (u) is an ancestor of u (by THM2)
THM3: two vertices u,v V lie in the same SCC (u) = (v) in a DFS of G (V, E)
PROOF: let u and v be in the same SCC Cuv u v
![Page 28: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/28.jpg)
CS 473 Lecture 16 28
Strongly Connected Components
w: v w u w and w: u w v w, i.e., every vertex reachable from u is reachable from v and vice-versa
So, w (u) w (v) and w (v) w (u) by definition of forefather
PROOF: Let (u) (v) wCw uCw by C1 and vCw by C1By THM3: SCCs are sets of vertices with the same forefatherBy THM2 and parenthesis THM: A forefather is the first vertex
discovered and the last vertex finished in its SCC
w
u v
w
SCC Cuv
![Page 29: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/29.jpg)
CS 473 Lecture 16 29
SCC: Why do we Run DFS on GT?
Consider r V with largest finishing time computed by DFS on Gr must be a forefather by definition since r r and f [r] is
maximum in V
Cr ?: Cr vertices in r’s SCC {u in V: (u) r}
Cr {u V: u r and f [x] f [r] x Ru} where Ru {v V: u v}
Cr {u V: u r} since f [r] is maximum
Cr RrT {u V: r u in GT} reachability set of r in GT
i.e., Cr those vertices reachable from r in GT
Thus DFS-VISIT(GT, r) identifies all vertices in Cr and
blackens them
![Page 30: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/30.jpg)
CS 473 Lecture 16 30
SCC: Why do we Run DFS on GT?
BFS(GT, r) can also be used to identify Cr
Then, DFS on GT continues with DFS-VISIT(GT, r ) where f [r ] > f [w] w V Cr
r must be a forefather by definition since r r and f [r ] is maximum in V Cr
r r
GT G Cr
![Page 31: CS473-Algorithms I](https://reader036.vdocuments.us/reader036/viewer/2022062410/5681545a550346895dc273b1/html5/thumbnails/31.jpg)
CS 473 Lecture 16 31
SCC: Why do we Run DFS on GT?
Hence by similar reasoning DFS-VISIT(GT, r ) identifies Cr
Impossible since otherwise r, w Cr r, w would have been blackened
Thus, each DFS-VISIT(GT, x) in DFS(GT) identifies an SCC Cx with x
r
w
r
w