1 / 42

Graph Algorithms: Topological Sort

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.

cora
Télécharger la présentation

Graph Algorithms: Topological Sort

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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

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

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

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

  10. Graph Algorithms: Topological Sort The topological sorting algorithm: Again, identify the subset of vertices that have no incoming edge, . . . B C A 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, . . . B C A 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. B C A 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. B C A 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. C A F B 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. C A F B 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. A F B C 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. A F B C 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. A F B C D 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. A F B C D 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. A F B C D E

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

  22. Graph Algorithms: Topological Sort The topological sorting algorithm: Time bound? B C A A F B C D E 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: ? B C A A F B C D E 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: ? B C A A F B C D E 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|) B C A A F B C D E F D E

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

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

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

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

  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 2 Total: O(|V| + |E|)

  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 2 Total: O(|V| + |E|) 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 D E F B 0 D 1 1 B 1 C 0 C 0 1 A E D F 2 E 2 2 2 D E 0

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

  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. No scan is required, so O(1). A B C D E F 0 0 1 B 0 C C 0 1 E D F 1 E 1 2 2 D Output: A E 0

  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. A B C D E F 0 0 1 B 0 C C 1 E D 1 E 1 2 2 D Output: A F E 0

  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. A B C D E F 0 0 0 C 0 E D 1 E 1 2 2 D Output: A F B E 0

  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. A B C D E F 0 0 0 0 E 0 1 1 D Output: A F B C E 0

  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. A B C D E F 0 0 0 0 0 0 Output: A F B C D E 0

  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! A B C D E F 0 0 0 0 0 Output: A F B C D E 0

  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!

More Related