15.082 and 6.855J
-
Upload
yeo-sexton -
Category
Documents
-
view
25 -
download
2
description
Transcript of 15.082 and 6.855J
1
15.082 and 6.855J
Topological Ordering
2
Preliminary to Topological Sorting
LEMMA. If each node has at least one arc going out, then the first inadmissible arc of a depth first search determines a directed cycle.
COROLLARY 1. If G has no directed cycle, then there is a node in G with no arcs going. And there is at least one node in G with no arcs coming in.
COROLLARY 2. If G has no directed cycle, then one can relabel the nodes so that for each arc (i,j), i < j.
1 4 6 7 3
3
Initialization
1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0.
“Next” will be the label of nodes in the topological order.
LIST
7
4
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
7
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
5
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
7
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
7
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
7
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
7
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
8
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
7
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
9
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
7
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
10
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
11
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it.
LIST
next := next +1order(i) := next;
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty.
The algorithm terminates with a topological order of the nodes
3