graph algorithms: topological sort
DESCRIPTION
Graph Algorithms: Topological Sort. The topological sorting problem: given a directed, acyclic graph G = ( V , E ) , find a linear ordering of the vertices such that for all ( v , w ) E , v precedes w in the ordering. B. C. A. F. D. E. - PowerPoint PPT PresentationTRANSCRIPT
Graph Algorithms: Topological Sort
The topological sorting problem: given a directed, acyclic graph G = (V, E) , find a linear ordering of the vertices such that for all (v, w) E, v precedes w in the ordering.
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting problem: given a directed, acyclic graph G = (V, E) , find a linear ordering of the vertices such that for all (v, w) E, v precedes w in the ordering.
A
BC
F
D
EA D
E
FB C
Graph Algorithms: Topological Sort
The topological sorting problem: given a directed, acyclic graph G = (V, E) , find a linear ordering of the vertices such that for all (v, w) E, v precedes w in the ordering.
A
BC
F
D
EA D
E
FB C
Any linear ordering in whichall the arrows go to the right.
Graph Algorithms: Topological Sort
The topological sorting problem: given a directed, acyclic graph G = (V, E) , find a linear ordering of the vertices such that for all (v, w) E, v precedes w in the ordering.
A
BC
F
D
FA D
E
EB C
Any linear ordering in whichall the arrows go to the right.
This is not a topological ordering.
Graph Algorithms: Topological Sort
The topological sorting algorithm: Identify the subset of vertices that have no incoming edge.
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Identify the subset of vertices that have no incoming edge. (In general, this subset must be nonempty—why?)
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Identify the subset of vertices that have no incoming edge. (In general, this subset must be nonempty—because the graph is acyclic.)
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Identify the subset of vertices that have no incoming edge. Select one of them.
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Remove it, and its outgoing edges, and add it to the output.
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, . . .
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, . . .
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A B
C
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A B
C
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A B CF
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A B CF
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A B CF D
E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A B CF D
E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them, remove it and any outgoing edges, and put it in the output.
A B CF D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: finished!
A B CF D EA
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound?
A B CF D EA
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound: Break down into total time to:
Find vertices with no predecessors: ?Remove edges: ?Place vertices in output: ?
A B CF D EA
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound: Break down into total time to:
Find vertices with no predecessors: ?Remove edges: O(|E|)Place vertices in output: ?
A B CF D EA
BC
F
D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound: Break down into total time to:
Find vertices with no predecessors: ?Remove edges: O(|E|)Place vertices in output: O(|V|)
A B CF D EA
BC
F
D E
Graph Algorithms: Topological Sort
Find vertices with no predecessors: ?
A
BC
F
D E
A
B
C
D
E
F
B D
E
ED
C
Assume an adjacency list representation:
Graph Algorithms: Topological Sort
The topological sorting algorithm:
…and initialize and maintain for each vertex its no. of predecessors.
A
BC
F
D E
A
B
C
D
E
F
B D
E
ED
C00
1
2
1
2
0
1
0
2
2
1
Graph Algorithms: Topological Sort
Find vertices with no predecessors: ?
A
BC
F
D E
Time for each vertex: O(|V|)
A
B
C
D
E
F
B D
E
ED
C
0
1
0
2
2
1
Graph Algorithms: Topological Sort
Find vertices with no predecessors: ?
A
BC
F
D E
Total time: O(|V| )2
A
B
C
D
E
F
B D
E
ED
C
0
1
0
2
2
1
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound: Break down into total time to:
Find vertices with no predecessors: O(|V| )Remove edges: O(|E|)Place vertices in output: O(|V|)
2
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound: Break down into total time to:
Find vertices with no predecessors: O(|V| )Remove edges: O(|E|)Place vertices in output: O(|V|)
2
Total: O(|V| + |E|)2
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound: Break down into total time to:
Find vertices with no predecessors: O(|V| )Remove edges: O(|E|)Place vertices in output: O(|V|)
2
Total: O(|V| + |E|)2
Too much!
Graph Algorithms: Topological Sort
The topological sorting algorithm:We need a faster way to do this step: Find vertices with no predecessors.
Graph Algorithms: Topological Sort
The topological sorting algorithm:Key idea: initialize and maintain a queue (or stack)holding pointers to the vertices with 0 predecessors
A
BC
F
D E
A
B
C
D
E
F
B D
E
ED
C00
1
2
1
2
0
1
0
2
2
1
Graph Algorithms: Topological Sort
The topological sorting algorithm:As each vertex is removed, update the predecessorcounts, and for any vertex whose count has becomezero, put it in the queue.
A
BC
F
D E
A
B
C
D
E
F
B D
E
ED
C00
1
2
1
2
0
1
0
2
2
1
Graph Algorithms: Topological Sort
The topological sorting algorithm:As each vertex is removed, update the predecessorcounts, and for any vertex whose count has becomezero, put it in the queue.
BC
D E
A
B
C
D
E
F
E
ED
C
0
0
1
1
2
0
0
0
1
2
1
F
Output: A
No scan is required, so O(1).
Graph Algorithms: Topological Sort
The topological sorting algorithm:As each vertex is removed, update the predecessorcounts, and for any vertex whose count has becomezero, put it in the queue.
BC
D E
A
B
C
D
E
F
E
ED
C0
1
1
2
0
0
0
1
2
1
Output: A F
Graph Algorithms: Topological Sort
The topological sorting algorithm:As each vertex is removed, update the predecessorcounts, and for any vertex whose count has becomezero, put it in the queue.
C
D E
A
B
C
D
E
F
E
ED
1
0
2
0
0
0
1
2
0
Output: A F B
Graph Algorithms: Topological Sort
The topological sorting algorithm:As each vertex is removed, update the predecessorcounts, and for any vertex whose count has becomezero, put it in the queue.
D E
A
B
C
D
E
F
E0 1
0
0
0
0
1
0
Output: A F B C
Graph Algorithms: Topological Sort
The topological sorting algorithm:As each vertex is removed, update the predecessorcounts, and for any vertex whose count has becomezero, put it in the queue.
E
A
B
C
D
E
F
0
0
0
0
0
0
0
Output: A F B C D
Graph Algorithms: Topological Sort
The topological sorting algorithm:As each vertex is removed, update the predecessorcounts, and for any vertex whose count has becomezero, put it in the queue.
Finished!
A
B
C
D
E
F
0
0
0
0
0
0
Output: A F B C D E
Graph Algorithms: Topological Sort
The topological sorting algorithm: Time bound: Now the time for each part is
Find vertices with no predecessors: O(|V|)Remove edges: O(|E|)Place vertices in output: O(|V|)
Total: O(|V|+|E|)
Linear in |V|+|E|.Much better!