Top Banner
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).
27

Data Structures – LECTURE 14 Strongly connected components

Jan 22, 2016

Download

Documents

leli_a

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. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Data Structures – LECTURE 14  Strongly connected components

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

Page 2: Data Structures – LECTURE 14  Strongly connected components

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!

Page 3: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 3

Example: strongly connected components

d

b

f

e

a

c

g

h

Page 4: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 4

Example: strongly connected components

d

b

f

e

a

c

g

h

Page 5: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 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|).

Page 6: Data Structures – LECTURE 14  Strongly connected components

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~ = {C1, …, Ck}. Each SCC is a vertex.

– E~ = {(Ci,Cj)| i≠j and (x,y)E, where xCi and yCj}. 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 GT = (V,ET) of the graph G = (V,E) is G with its edge directions reversed: ET= {(u,v)| (v,u)E}.

Page 7: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 7

Example: SCC graph

C4

C3

C1

C2

d

b

f

e

a

c

g

h

Page 8: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 8

Example: transpose graph GT

d

b

f

e

a

c

g

h

d

b

f

e

a

c

g

h

G

GT

Page 9: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 9

SCC algorithmIdea: compute the SCC graph G~ = (V~,E~) with two

DFS, one for G and one for its transpose GT, visiting the vertices in reverse order.

SCC(G)

1. DFS(G) to compute finishing times f [v], vV

2. Compute GT

3. DFS(GT) in the order of decreasing f [v]

4. Output the vertices of each tree in the DFS forest as a separate SCC.

Page 10: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 10

Example: computing SCC (1)

1/6

d

b

f

e

a

c

g

h

2/5 3/4

8/13

11/127/16

14/159/10

Page 11: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 11

Example: computing SCC (2)

d

b

f

e

a

c

g

h

6

13

4

15

5

10

1216

1/6

d

b

f

e

a

c

g

h

2/5 3/4

8/13

11/127/16

14/159/10

Page 12: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 12

Example: computing SCC (3)

d

b

f

e

a

c

g

h

6

13

4

15

5

10

1216

d

b

f

e

a

c

g

h

3/64/5

2/71/8

Page 13: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 13

Example: computing SCC (4)

d

b

f

e

a

c

g

h

6

13

4

15

5

10

1216

b e

a

c

1/2

Page 14: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 14

Example: computing SCC (5)

d

b

f

e

a

c

g

h

6

13

4

15

5

10

1216

b e

a

1/2

Page 15: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 15

Example: computing SCC (6) 5

b e

1/4 2/3

d

b

f

e

a

c

g

h

6

1315

10

1216

Page 16: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 16

Example: computing SCC (2)

d

b

f

e

a

c

g

h

1

2

3 44’’

C3

C4

C1

C21

2

34

Labeled transpose graph GT

4’

Page 17: Data Structures – LECTURE 14  Strongly connected components

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] = minuU{d [u]}

f [U] = maxuU{f [u]}

Page 18: Data Structures – LECTURE 14  Strongly connected components

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 uC and vC’.

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

Page 19: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 19

Example: finishing times

d

b

f

e

a

c

g

h

1/6

d

b

f

e

a

c

g

h

2/5 3/4

8/13

11/127/16

14/159/10

f [C3] = 6

f [C4] = 5

f [C2] = 15 f [C1] = 16

Page 20: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 20

Example: finishing times

d

b

f

e

a

c

g

h

1/6

d

b

f

e

a

c

g

h

2/5 3/4

8/13

11/127/16

14/159/10

f [C3] = 6

f [C4] = 5

f [C2] = 15 f [C1] = 16

Page 21: Data Structures – LECTURE 14  Strongly connected components

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 wC’, there is also a path at time d[x] from x to w in G consisting only of unvisited vertices: xuvw.

• Thus, all vertices in C and C’ become descendants of x in the depth-first tree.

• Therefore, f [x] = f [C] > f [C’].

Page 22: Data Structures – LECTURE 14  Strongly connected components

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.

Page 23: Data Structures – LECTURE 14  Strongly connected components

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

Page 24: Data Structures – LECTURE 14  Strongly connected components

Data Structures, Spring 2006 © L. Joskowicz 24

Proof of correctness: SCC (6)Corollary: for edge (u,v)ET, and uC 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.

Page 25: Data Structures – LECTURE 14  Strongly connected components

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

Page 26: Data Structures – LECTURE 14  Strongly connected components

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

Page 27: Data Structures – LECTURE 14  Strongly connected components

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

b

f

e

a

cg

h

C1

C2

C4

C3