0% found this document useful (0 votes)
94 views33 pages

Design and Analysis of Algorithms: CSE 5311 Lecture 19 Topological Sort

This document discusses topological sorting and strongly connected components in directed acyclic graphs (DAGs). It describes an algorithm to perform topological sorting on a DAG by doing a depth-first search (DFS) to compute finishing times and inserting vertices into a linked list in order of finishing time. It also describes an algorithm to find strongly connected components using DFS on the original graph and its transpose to find connected subgraphs.

Uploaded by

shashank dwivedi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
94 views33 pages

Design and Analysis of Algorithms: CSE 5311 Lecture 19 Topological Sort

This document discusses topological sorting and strongly connected components in directed acyclic graphs (DAGs). It describes an algorithm to perform topological sorting on a DAG by doing a depth-first search (DFS) to compute finishing times and inserting vertices into a linked list in order of finishing time. It also describes an algorithm to find strongly connected components using DFS on the original graph and its transpose to find connected subgraphs.

Uploaded by

shashank dwivedi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

Design and Analysis of Algorithms

CSE 5311
Lecture 19 Topological Sort

Junzhou Huang, Ph.D.


Department of Computer Science and Engineering

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 1


Topological Sort
Want to “sort” a directed acyclic graph (DAG).

A B D

C E

A B C D E

Think of original DAG as a partial order.


Want a total order that extends this partial order.
Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 2
Topological Sort

• Performed on a DAG.
• Linear ordering of the vertices of G such that if (u, v) ∈ E,
then u appears somewhere before v.
Topological-Sort (G)
1. call DFS(G) to compute finishing times f [v] for all v ∈ V
2. as each vertex is finished, insert it onto the front of a linked list
3. return the linked list of vertices

Time: Θ(V + E).

Example: On board.

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 3


Example
(Courtesy of Prof. Jim Anderson)

A B D
1/

C E

Linked List:

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 4


Example

A B D
1/

2/
C E

Linked List:

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 5


Example

A B D
1/

2/3
C E

Linked List:
2/3
E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 6


Example

A B D
1/4

2/3
C E

Linked List:
1/4 2/3
D E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 7


Example

A B D
5/ 1/4

2/3
C E

Linked List:
1/4 2/3
D E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 8


Example

A B D
5/ 1/4

6/ 2/3
C E

Linked List:
1/4 2/3
D E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 9


Example

A B D
5/ 1/4

6/7 2/3
C E

Linked List:
6/7 1/4 2/3
C D E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 10


Example

A B D
5/8 1/4

6/7 2/3
C E

Linked List:
5/8 6/7 1/4 2/3
B C D E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 11


Example

A B D
9/ 5/8 1/4

6/7 2/3
C E

Linked List:
5/8 6/7 1/4 2/3
B C D E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 12


Example

A B D
9/10 5/8 1/4

6/7 2/3
C E

Linked List:
9/10 5/8 6/7 1/4 2/3
A B C D E

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 13


Correctness Proof

• Just need to show if (u, v) ∈ E, then f [v] < f [u].


• When we explore (u, v), what are the colors of u and v?
– u is gray.
– Is v gray, too?
 No, because then v would be ancestor of u.
 ⇒ (u, v) is a back edge.
 ⇒ contradiction of Lemma 22.11 (dag has no back edges).
– Is v white?
 Then becomes descendant of u.
 By parenthesis theorem, d[u] < d[v] < f [v] < f [u].
– Is v black?
 Then v is already finished.
 Since we’re exploring (u, v), we have not yet finished u.
 Therefore, f [v] < f [u].
Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 14
Strongly Connected Components

• G is strongly connected if every pair (u, v) of


vertices in G is reachable from one another.
• A strongly connected component (SCC) of G is
a maximal set of vertices C ⊆ V such that for all u,
v ∈ C, both u v and v u exist.

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 15


Component Graph

• GSCC = (VSCC, ESCC).


• VSCC has one vertex for each SCC in G.
• ESCC has an edge if there’s an edge between the
corresponding SCC’s in G.
• GSCC for the example considered:

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 16


GSCC is a DAG

Lemma 22.13
Let C and C′ be distinct SCC’s in G, let u, v ∈ C, u′, v′ ∈ C′,
and suppose there is a path u u′ in G. Then there cannot
also be a path v′ v in G.

Proof:
• Suppose there is a path v′ v in G.
• Then there are paths u u′ v′ and v′ v u in G.
• Therefore, u and v′ are reachable from each other,
so they are not in separate SCC’s.

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 17


Transpose of a Directed Graph

• GT = transpose of directed G.
– GT = (V, ET), ET = {(u, v) : (v, u) ∈ E}.
– GT is G with all edges reversed.
• Can create GT in Θ(V + E) time if using adjacency
lists.
• G and GT have the same SCC’s. (u and v are
reachable from each other in G if and only if
reachable from each other in GT.)

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 18


Algorithm to determine SCCs

SCC(G)
1. call DFS(G) to compute finishing times f [u] for all u
2. compute GT
3. call DFS(GT), but in the main loop, consider vertices in
order of decreasing f [u] (as computed in first DFS)
4. output the vertices in each tree of the depth-first forest
formed in second DFS as a separate SCC

Time: Θ(V + E).

Example: On board.

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 19


Example
(Courtesy of Prof. Jim Anderson)
G
a b c d
13/14 11/16 1/10 8/9

12/15 3/4 2/7 5/6


e f g h

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 20


Example
GT
a b c d

e f g h

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 21


Example

cd
abe

fg h

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 22


Example (2)

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 23


Example (2) DFS

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 24


Example (2) GT

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 25


Example (2) DFT in GT

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 26


Example (2) SCC

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 27


How does it work?

• Idea:
– By considering vertices in second DFS in decreasing order of
finishing times from first DFS, we are visiting vertices of the
component graph in topologically sorted order.
– Because we are running DFS on GT, we will not be visiting any v
from a u, where v and u are in different components.
• Notation:
– d[u] and f [u] always refer to first DFS.
– Extend notation for d and f to sets of vertices U ⊆ V:
– d(U) = minu∈U{d[u]} (earliest discovery time)
– f (U) = maxu∈U{ f [u]} (latest finishing time)

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 28


SCCs and DFS finishing times

Lemma 22.14
Let C and C′ be distinct SCC’s in G = (V, E). Suppose there is an edge
(u, v) ∈ E such that u ∈ C and v ∈C′. Then f (C) > f (C′).
C C′
Proof:
• Case 1: d(C) < d(C′)
– Let x be the first vertex discovered in C.
u v
– At time d[x], all vertices in C and C′ are
white. Thus, there exist paths of white
vertices from x to all vertices in C and C′. x
– By the white-path theorem, all vertices in C
and C′ are descendants of x in depth-first
tree.
– By the parenthesis theorem, f [x] = f (C) >
f(C′).

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 29


SCCs and DFS finishing times

Lemma 22.14
Let C and C′ be distinct SCC’s in G = (V, E). Suppose there is an edge
(u, v) ∈ E such that u ∈ C and v ∈C′. Then f (C) > f (C′).
Proof:
C C′
• Case 2: d(C) > d(C′)
– Let y be the first vertex discovered in C′.
– At time d[y], all vertices in C′ are white and
there is a white path from y to each vertex in u v
C′ ⇒ all vertices in C′ become descendants of
y. Again, f [y] = f (C′).
– At time d[y], all vertices in C are also white.
x y
– By earlier lemma, since there is an edge (u, v),
we cannot have a path from C′ to C.
– So no vertex in C is reachable from y.
– Therefore, at time f [y], all vertices in C are still
white.
– Therefore, for all w ∈ C, f [w] > f [y], which
implies that f (C) > f (C′).
Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 30
SCCs and DFS finishing times

Corollary 22.15
Let C and C′ be distinct SCC’s in G = (V, E). Suppose there is an edge
(u, v) ∈ ET, where u ∈ C and v ∈ C′. Then f(C) < f(C′).

Proof:
• (u, v) ∈ ET ⇒ (v, u) ∈ E.
• Since SCC’s of G and GT are the same, f(C′) > f (C), by
Lemma 22.14.

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 31


Correctness of SCC

• When we do the second DFS, on GT, start with SCC C


such that f(C) is maximum.
– The second DFS starts from some x ∈ C, and it visits all vertices
in C.
– Corollary 22.15 says that since f(C) > f (C′) for all C ≠ C′, there
are no edges from C to C′ in GT.
– Therefore, DFS will visit only vertices in C.
– Which means that the depth-first tree rooted at x contains exactly
the vertices of C.

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 32


Correctness of SCC

• The next root chosen in the second DFS is in SCC C′ such


that f (C′) is maximum over all SCC’s other than C.
– DFS visits all vertices in C′, but the only edges out of C′ go to C,
which we’ve already visited.
– Therefore, the only tree edges will be to vertices in C′.
• We can continue the process.
• Each time we choose a root for the second DFS, it can
reach only
– vertices in its SCC—get tree edges to these,
– vertices in SCC’s already visited in second DFS—get no tree edges
to these.

Dept. CSE, UT Arlington CSE5311 Design and Analysis of Algorithms 33

You might also like