Design and Analysis of Algorithms: CSE 5311 Lecture 19 Topological Sort
Design and Analysis of Algorithms: CSE 5311 Lecture 19 Topological Sort
CSE 5311
Lecture 19 Topological Sort
A B D
C E
A B C D E
• 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
Example: On board.
A B D
1/
C E
Linked List:
A B D
1/
2/
C E
Linked List:
A B D
1/
2/3
C E
Linked List:
2/3
E
A B D
1/4
2/3
C E
Linked List:
1/4 2/3
D E
A B D
5/ 1/4
2/3
C E
Linked List:
1/4 2/3
D E
A B D
5/ 1/4
6/ 2/3
C E
Linked List:
1/4 2/3
D E
A B D
5/ 1/4
6/7 2/3
C E
Linked List:
6/7 1/4 2/3
C D E
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
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
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
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.
• 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.)
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
Example: On board.
e f g h
cd
abe
fg h
• 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)
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′).
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.