Single Source Shortest Path in a directed Acyclic GraphsBy relaxing the edges of a weighted DAG (Directed Acyclic Graph) G = (V, E) according to a topological sort of its vertices, we can figure out shortest paths from a single source in ∅(V+E) time. Shortest paths are always well described in a dag, since even if there are negative-weight edges, no negative-weight cycles can exist. DAG - SHORTEST - PATHS (G, w, s) 1. Topologically sort the vertices of G. 2. INITIALIZE - SINGLE- SOURCE (G, s) 3. for each vertex u taken in topologically sorted order 4. do for each vertex v ∈ Adj [u] 5. do RELAX (u, v, w) The running time of this data is determined by line 1 and by the for loop of lines 3 - 5. The topological sort can be implemented in ∅ (V + E) time. In the for loop of lines 3 - 5, as in Dijkstra's algorithm, there is one repetition per vertex. For each vertex, the edges that leave the vertex are each examined exactly once. Unlike Dijkstra's algorithm, we use only O (1) time per edge. The running time is thus ∅ (V + E), which is linear in the size of an adjacency list depiction of the graph. Example: ![]() Step1: To topologically sort vertices apply DFS (Depth First Search) and then arrange vertices in linear order by decreasing order of finish time. ![]() ![]() Now, take each vertex in topologically sorted order and relax each edge. ![]() ![]() ![]() ![]() ![]() Thus the Shortest Path is:
Next TopicAll-Pairs Shortest Paths
|