Najkrótsza ścieżka w DAG

by Jerry Sky

2020-04-08



Problem

Znalezienie najkrótszej ścieżki w skierowanym grafie acyklicznym (DAG).

Input

Graf G=(V,E,c)G = (V,E,c), gdzie:

Output

Dla ustalonego wierzchołka startowego vsVv_s \in V długość najkrótszej ścieżki do wszystkich wierzchołków viVv_i \in V oznaczana przez d(vs,vi)d(v_s, v_i)

Remarks

Pseudocode

for each v in V:
  d(v_s, v) = Infinity
d(v_s, v_s) = 0

for each v in V \ {v_s} in linearized order:
  d(v_s, v) = min{ d(v_s, u) + c(u, v): (u,v) in E }

Summary

Problem obliczania najkrótszych ścieżek w DAG leży u podstawy wszystkich algorytmów stworzonych przy użyciu metodologii programowania dynamicznego, ale na ogół DAG nie jest zadany explicite i jednym z zadań jest poprawne go zdefiniowanie.