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 negativeweight edges, no negativeweight 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 TopicAllPairs Shortest Paths
