【发布时间】:2016-04-05 21:52:04
【问题描述】:
如果我需要找到从一个源到图中所有其他顶点的最短路径,既是有向的又是加权的,我可以使用 Dijkstras 算法还是需要使用 BellFord 算法?
【问题讨论】:
-
Ford 可以处理负权重,Dijkstra 不能。有的话就用福特
如果我需要找到从一个源到图中所有其他顶点的最短路径,既是有向的又是加权的,我可以使用 Dijkstras 算法还是需要使用 BellFord 算法?
【问题讨论】:
由于 Dijkstra 的正确实现比 Bellman-Ford 更快,因此除非图中存在负权重边,否则请使用 Dijkstra。在这种情况下,Dijkstra 可能不正确,但 Bellman-Ford 仍会返回正确答案。
请记住,如果图具有负权重循环,则最短路径定义不明确。可以修改 Bellman-Ford 以检查给定图是否具有负权重循环。
【讨论】: