Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
1
Topological SortingChapter 9
CPTR 318
1
DAG
• A directed acyclic graph
– A directed graph
– No cycles
• A DAG “flows” in only one direction
• Vertices form a partial order
– reflexive
– antisymmetric
– transitive
2
Example DAG
3
B
FE
G
A D
C
H
I
Topological Sort
• A linear ordering of the vertices within a DAG
• A vertex appears before any other vertex connected by an outbound edge
• All DAGs have one or more topological orderings
4
B
FE
G
A D
C
H
I
Topological Sort
5
B
FE
G
A D
C
1: A, B, C, D, H, E, F, G, I
2: H, A, B, C, E, F, D, I, G
3: A, B, H, C, E, D, F, G, I
Give a topological sort of this graph
H
I
Applications
• Project planning
– PERT
– Weighted edges: compute critical path
• Scheduling courses with prerequisites
6
2
Topological Sort Algorithm
• An application of depth-first search
7
dfs(Vertex v){
v.mark = visited;do_something(v); for ( each vertex w adjacent to v )
if ( w.mark != visited ) dfs(w);
}
Topological Sort Algorithm (1)
8
// Builds a list in topological order
List topo_dfs(Vertex v, List L)
{
v.mark = visited;
for ( each vertex w adjacent to v )
if ( w.mark != visited )
L = topo_dfs(w, L);
L.push_front(v); // Put v on front of list
return L;
}
Topological Sort Algorithm (2)
9
// Calls topo_dfs on all source vertices
// (vertices with no incoming edges)
List topo_sort(Graph G)
{
list = Ø; // List initially empty
for ( each vertex v in G )
if ( v has no incoming edges )
list = topo_dfs(v, list);
return list;
}
Topological Sort in Action
10
B
FE
G
A D
C
H
I
Topological Sort in Action
11
B
FE
G
A D
C
H
I
E
Topological Sort in Action
12
B
F
G
A D
C
H
I
3
E
Topological Sort in Action
13
B
F
G
A D
C
H
I
FE
Topological Sort in Action
14
B
G
A D
C
H
I
G
FE
Topological Sort in Action
15
BA D
C
H
I
G
FE
Topological Sort in Action
16
BA D
C
H
I
G
FE
Topological Sort in Action
17
BA D
C
H
G
I
F
G
E
Topological Sort in Action
18
BA D
C
H
GF
I
4
E F
G
Topological Sort in Action
19
BA D
C
H
GFE
I
H E F
G
Topological Sort in Action
20
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
21
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
22
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
23
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
24
BA D
C
GFEH
I
5
H E F
G
Topological Sort in Action
25
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
26
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
27
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
28
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
29
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
30
BA D
C
GFEH
I
6
H E F
G
Topological Sort in Action
31
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
32
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
33
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
34
BA D
C
GFEH
I
H E F
G
Topological Sort in Action
35
BA D
C
GFEH
I
I
H E F
G
Topological Sort in Action
36
BA D
C
I
GFEHID
7
H E F
G
Topological Sort in Action
37
BA D
C
I
GFEHIDC
H E F
G
Topological Sort in Action
38
BA D
C
I
GFEHIDC
H E F
G
Topological Sort in Action
39
BA D
C
I
GFEHIDCB
H E F
G
Topological Sort in Action
40
BA D
C
I
GFEHIDCBA
H E F
G
Topological Sort Result
41
BA D
C
I
GFEHIDCBA
Alternate Topological Sort
42
B
FE
G
A D
C
H
I
8
Alternate Topological Sort
43
B
FE
G
A D
C
H
I
Alternate Topological Sort
44
B
FE
G
A D
C
H
I
Alternate Topological Sort
45
B
FE
G
A D
C
H
I
Alternate Topological Sort
46
B
FE
G
A D
C
H
I
Alternate Topological Sort
47
B
FE
G
A D
C
H
I
Alternate Topological Sort
48
B
FE
G
A D
C
H
I
9
Alternate Topological Sort
49
B
FE
G
A D
C
H
I
Alternate Topological Sort
50
B
FE
G
A D
C
H
I
Alternate Topological Sort
51
B
FE
G
A D
C
H
I
Alternate Topological Sort
52
B
FE
G
A D
C
H
I
Alternate Topological Sort
53
B
FE
G
A D
C
H
I
Alternate Topological Sort
54
B
FE
G
A D
C
H
I
G
10
Alternate Topological Sort
55
B
FE
G
A D
C
H
I
GF
Alternate Topological Sort
56
B
FE
G
A D
C
H
I
GFE
Alternate Topological Sort
57
B
FE
G
A D
C
H
I
GFE
Alternate Topological Sort
58
B
FE
G
A D
C
H
I
GFE
Alternate Topological Sort
59
B
FE
G
A D
C
H
I
GFE
Alternate Topological Sort
60
B
FE
G
A D
C
H
I
GFE
11
Alternate Topological Sort
61
B
FE
G
A D
C
H
I
GFE
Alternate Topological Sort
62
B
FE
G
A D
C
H
I
GFE
Alternate Topological Sort
63
B
FE
G
A D
C
H
I
GFE
Alternate Topological Sort
64
B
FE
G
A D
C
H
I
GFEI
Alternate Topological Sort
65
B
FE
G
A D
C
H
I
GFEID
Alternate Topological Sort
66
B
FE
G
A D
C
H
I
GFEIDC
12
Alternate Topological Sort
67
B
FE
G
A D
C
H
I
GFEIDC
Alternate Topological Sort
68
B
FE
G
A D
C
H
I
GFEIDCB
Alternate Topological Sort
69
B
FE
G
A D
C
H
I
GFEIDCBA
Alternate Topological Sort
70
B
FE
G
A D
C
H
I
GFEIDCBA
Alternate Topological Sort
71
B
FE
G
A D
C
H
I
GFEIDCBAH
Alternate Result
72
B
FE
G
A D
C
H
I
GFEIDCBAH
13
Topological Sort by Numbering
73
// Assigns numbers to vertices accessible
// from v in reverse topological order
topo_dfs(Vertex v)
{
for ( each vertex w adjacent to v )
if ( w.number < 0 )
topo_dfs(w);
v.number = N++; // Global N
}
Topological Sort by Numbering
74
// Calls topo_dfs on all source vertices
// (vertices with no incoming edges)
topo_sort(Graph G)
{
list = Ø; // List initially empty
N = 0; // Reset global N
for ( each vertex v in G )
v.number = -1; // Each node un-numbered
for ( each vertex v in G )
if ( v has no incoming edges )
topo_dfs(v);
}
Topological Sort Numbering
75
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
76
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
77
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
78
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
14
Alternate Topological Sort
79
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
80
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
81
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
82
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
83
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
84
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
15
Alternate Topological Sort
85
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
86
B
FE
G
A D
C
H
I
-1
-1
-1
-1
-1
-1
-1
-1 -1
Alternate Topological Sort
87
B
FE
G
A D
C
H
I
G
-1
0
-1
-1
-1
-1
-1
-1 -1
0
Alternate Topological Sort
88
B
FE
G
A D
C
H
I
GF
-1
0
1
-1
-1
-1
-1
-1 -1
01
Alternate Topological Sort
89
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
Alternate Topological Sort
90
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
16
Alternate Topological Sort
91
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
Alternate Topological Sort
92
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
Alternate Topological Sort
93
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
Alternate Topological Sort
94
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
Alternate Topological Sort
95
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
Alternate Topological Sort
96
B
FE
G
A D
C
H
I
GFE
-1
0
1
-1
-1
2
-1
-1 -1
012
17
Alternate Topological Sort
97
B
FE
G
A D
C
H
I
GFEI
-1
0
1
-1
-1
2
-1
-1 3
0123
Alternate Topological Sort
98
B
FE
G
A D
C
H
I
GFEID
-1
0
1
4
-1
2
-1
-1 3
01234
Alternate Topological Sort
99
B
FE
G
A D
C
H
I
GFEIDC
-1
0
1
4
5
2
-1
-1 3
012345
Alternate Topological Sort
100
B
FE
G
A D
C
H
I
GFEIDC
-1
0
1
4
5
2
-1
-1 3
012345
Alternate Topological Sort
101
B
FE
G
A D
C
H
I
GFEIDCB
6
0
1
4
5
2
-1
-1 3
0123456
Alternate Topological Sort
102
B
FE
G
A D
C
H
I
GFEIDCBA
6
0
1
4
5
2
-1
7 3
01234567
18
Alternate Topological Sort
103
B
FE
G
A D
C
H
I
GFEIDCBA
6
0
1
4
5
2
-1
7 3
01234567
Alternate Topological Sort
104
B
FE
G
A D
C
H
I
GFEIDCBAH
6
0
1
4
5
2
8
7 3
012345678
Numbering
• The numbers list the vertices in reversetopological order
105
Topological Sort Complexity
• Same as DFS: O(|V| + |E|)
– For a dense graph?
– For a sparse graph?
106