繁体   English   中英

比 Dijikstra 更快的算法,用于查找从一个节点开始的所有节点的最短路径

[英]Faster Algorithm than Dijikstra for finding shortest path to all nodes starting from one node

我正在寻找一种类似于 dijikstra 但速度更快的算法。 我必须解决同样的问题 - 从给定节点开始找到所有节点的最短路径。 但是我的老师告诉我,我应该找到一个更快的算法,因为 dijikstra 可能很慢。 我还想问,我是否可以使用 Floyd Marshall 的算法来完成该任务

如果所有弧都是非负的,则是此问题的解决方案,否则为 Bellmann-Ford。 获取所有最短路径:

  1. 做一个拓扑排序。
  2. 从根和更新距离的广度优先搜索。 完毕。

仅从一个节点 v开始,从v开始,而不是您的根。 在最坏的情况下,您的节点v无论如何都是根。 所以时间复杂度仍然 = O(|V|+|E|)

Dijkstra 是找到从节点到 rest 的最短路径的最佳算法,如果它不是一个特定的图形,总是因为弧权为正,否则您需要使用 Bellmann-Ford 算法。 在您的情况下,它是一个 DAG,这是一个特殊的图,它没有循环,您永远不会回到以前的 state,因此,从任何节点到另一个节点都有一条唯一路径(或没有)。 因此,即使弧为负, BFSDFS等算法也适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM