假设我们得到的有向图G = (V, E)
的边长可能为正和负,但没有负循环。假设s ∈ V
为给定来源
顶点。如果从s到任何其他顶点的最短路径最多花费O(k(|V | + |E|))
,如何设计在时间k edges
上运行的单源最短路径问题的算法?
答案 0 :(得分:1)
这里的O(k(| V | + | E |))方法:
因为任何s-u最短路径最多为k条边,所以我们可以在k条边上进行k次迭代后结束算法
伪代码:
对于顶点中的每个顶点v:
D [v]:= + ooD [s] = 0
重复k次:
对于每个边(u,v),边上的权重为w:
如果D [u] + wD [v] = D [u] + w