Topological Sort on a DAG

Topological Sort on a DAG

Topological Sort on a DAG Yufei Tao ITEE University of Queensland COMP3506/7505, Uni of Queensland Topological Sort on a DAG As mentioned earlier, depth first search (DFS) algorithm is surprisingly powerful. Indeed, we have already used it to detect efficiently whether a directed graph contains any cycle. In this lecture, we will use it to settle another classic problem|called topological sort|in linear time. The algorithm is very elegant, and simple enough to make this lecture a very short one. COMP3506/7505, Uni of Queensland Topological Sort on a DAG Topological Order Let G = (V ; E) be a directed acyclic graph (DAG). A topological order of G is an ordering of the vertices in V such that, for any edge (u; v), it must hold that u precedes v in the ordering. COMP3506/7505, Uni of Queensland Topological Sort on a DAG Example a h g b d i f e c The following are two possible topological orders: h; a; b; c; d; g; i; f ; e. a; h; b; c; d; g; i; f ; e. An ordering that is not a topological order: a; h; d; b; c; g; i; f ; e (because of edge (c; d)). COMP3506/7505, Uni of Queensland Topological Sort on a DAG Remarks: A directed cyclic graph has no topological orders (think: why?). Every DAG has a topological order. This will be a corollary from our subsequent discussion. COMP3506/7505, Uni of Queensland Topological Sort on a DAG The Topological Sort Problem Let G = (V ; E) be a directed acyclic graph (DAG). The goal of topological sort is to produce a topological order of G. COMP3506/7505, Uni of Queensland Topological Sort on a DAG Algorithm Very simple: 1 Create an empty list L. 2 Run DFS on G. Whenever a vertex v turns black (i.e., it is popped from the stack), append it to L. 3 Output the reverse order of L. The total running time is clearly O(jV j + jEj). COMP3506/7505, Uni of Queensland Topological Sort on a DAG Example 1 a h g b d i f e c Suppose that we run DFS starting from a. The following is one possible order by which the vertices turn black: e; f ; i; g; d; c; b; a; h. Therefore, we output h; a; b; c; d; g; i; f ; e as a topological order. COMP3506/7505, Uni of Queensland Topological Sort on a DAG Example 2 a h g b d i f e c Suppose that we run DFS starting from d, then restarting from h, and then from a. The following is one possible order by which the vertices turn black: e; f ; i; g; d; h; c; b; a. Therefore, we output a; b; c; h; d; g; i; f ; e as a topological order. COMP3506/7505, Uni of Queensland Topological Sort on a DAG We will now prove that the algorithm is correct. Proof: Take any edge( u; v). We will show that u turns black after v, which will complete the proof. Consider the moment when u enters the stack. We argue that currently v cannot be in the stack. Suppose that v was in the stack. As there must be a path chaining up all the vertices in the stack bottom up, we know that there is a path from v to u. Then, adding the edge (u; v) forms a cycle, contradicting the fact that G is a DAG. Now it remains to consider: v is black at this moment: Then obviously u will turn black after v. v is white: Then by the white path theorem of DFS, we know that v will become a proper descendant of u in the DFS-forest. Therefore, u will turn back after v. COMP3506/7505, Uni of Queensland Topological Sort on a DAG The correctness of our algorithm also proves: Every DAG has a topological order. COMP3506/7505, Uni of Queensland Topological Sort on a DAG.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    11 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us