Presentation is loading. Please wait.

Presentation is loading. Please wait.

Graph Algorithms: Topological Sort The topological sorting problem: given a directed, acyclic graph G = (V, E), find a linear ordering of the vertices.

Similar presentations


Presentation on theme: "Graph Algorithms: Topological Sort The topological sorting problem: given a directed, acyclic graph G = (V, E), find a linear ordering of the vertices."— Presentation transcript:

1 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 B C F D E

2 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 B C F D EAD E F BC

3 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 B C F D EAD E F BC Any linear ordering in which all the arrows go to the right.

4 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 B C F D FAD E E BC Any linear ordering in which all the arrows go to the right. This is not a topological ordering.

5 Graph Algorithms: Topological Sort The topological sorting algorithm: Identify the subset of vertices that have no incoming edge. A B C F D E

6 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 B C F D E

7 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 B C F D E

8 Graph Algorithms: Topological Sort The topological sorting algorithm: Identify the subset of vertices that have no incoming edge. Select one of them. A B C F D E

9 Graph Algorithms: Topological Sort The topological sorting algorithm: Remove it, and its outgoing edges, and add it to the output. A B C F D E

10 Graph Algorithms: Topological Sort The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge,... A B C F D E

11 Graph Algorithms: Topological Sort The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, select one of them,... A B C F D E

12 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

13 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

14 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. AB C F D E

15 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. AB C F D E

16 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. ABCF D E

17 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. ABCF D E

18 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. ABCFD E

19 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. ABCFD E

20 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. ABCFDE

21 Graph Algorithms: Topological Sort The topological sorting algorithm: finished! ABCFDE A B C F D E

22 Graph Algorithms: Topological Sort The topological sorting algorithm: Time bound? ABCFDE A B C F D E

23 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: ? ABCFDE A B C F D E

24 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: ? ABCFDE A B C F D E

25 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|) ABCFDE A B C F D E

26 Graph Algorithms: Topological Sort Find vertices with no predecessors: ? A B C F D E ABCDEFABCDEF B D E E D C Assume an adjacency list representation:

27 Graph Algorithms: Topological Sort The topological sorting algorithm: …and initialize and maintain for each vertex its no. of predecessors. A B C F D E ABCDEFABCDEF B D E E D C 0 0 1 2 1 2 0 1 0 2 2 1

28 Graph Algorithms: Topological Sort Find vertices with no predecessors: ? A B C F D E Time for each vertex: O(|V|) ABCDEFABCDEF B D E E D C 0 1 0 2 2 1

29 Graph Algorithms: Topological Sort Find vertices with no predecessors: ? A B C F D E Total time: O(|V| ) 2 ABCDEFABCDEF B D E E D C 0 1 0 2 2 1

30 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

31 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

32 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!

33 Graph Algorithms: Topological Sort The topological sorting algorithm: We need a faster way to do this step: Find vertices with no predecessors.

34 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 B C F D E ABCDEFABCDEF B D E E D C 0 0 1 2 1 2 0 1 0 2 2 1

35 Graph Algorithms: Topological Sort The topological sorting algorithm: As each vertex is removed, update the predecessor counts, and for any vertex whose count has become zero, put it in the queue. A B C F D E ABCDEFABCDEF B D E E D C 0 0 1 2 1 2 0 1 0 2 2 1

36 Graph Algorithms: Topological Sort The topological sorting algorithm: As each vertex is removed, update the predecessor counts, and for any vertex whose count has become zero, put it in the queue. B C D E ABCDEFABCDEF E E D C 0 0 1 1 2 0 0 0 1 2 1 F Output: A No scan is required, so O(1).

37 Graph Algorithms: Topological Sort The topological sorting algorithm: As each vertex is removed, update the predecessor counts, and for any vertex whose count has become zero, put it in the queue. B C D E ABCDEFABCDEF E E D C 0 1 1 2 0 0 0 1 2 1 Output: A F

38 Graph Algorithms: Topological Sort The topological sorting algorithm: As each vertex is removed, update the predecessor counts, and for any vertex whose count has become zero, put it in the queue. C D E ABCDEFABCDEF E E D 1 0 2 0 0 0 1 2 0 Output: A F B

39 Graph Algorithms: Topological Sort The topological sorting algorithm: As each vertex is removed, update the predecessor counts, and for any vertex whose count has become zero, put it in the queue. D E ABCDEFABCDEF E 0 1 0 0 0 0 1 0 Output: A F B C

40 Graph Algorithms: Topological Sort The topological sorting algorithm: As each vertex is removed, update the predecessor counts, and for any vertex whose count has become zero, put it in the queue. E ABCDEFABCDEF 0 0 0 0 0 0 0 Output: A F B C D

41 Graph Algorithms: Topological Sort The topological sorting algorithm: As each vertex is removed, update the predecessor counts, and for any vertex whose count has become zero, put it in the queue. Finished! ABCDEFABCDEF 0 0 0 0 0 0 Output: A F B C D E

42 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!


Download ppt "Graph Algorithms: Topological Sort The topological sorting problem: given a directed, acyclic graph G = (V, E), find a linear ordering of the vertices."

Similar presentations


Ads by Google