【问题标题】:Best way to implement shortest path algorithm with directed graph [closed]用有向图实现最短路径算法的最佳方法
【发布时间】:2017-08-25 18:35:14
【问题描述】:

假设我有一个带边的加权无向图,并且想要找到最短路径以及我可以从起点到终点的所有可能路径,实现这一点的最佳方法是什么?广度深度搜索和 k 路径算法似乎提供了合理的解决方案,虽然我不确定哪个是最好的

【问题讨论】:

  • Dijkstra 并通过检查距离是否等于两点之间的距离差来重构路径。
  • 由于您要求“所有可能的路径”,因此您可能希望在出现循环时指定您的期望。但我认为这个问题目前是题外话。
  • 由于您要求“所有可能的路径”,请注意,这些路径的数量可能会随着输入的大小呈指数增长,因此通常的效率度量(即多项式有界运行时间)可能不适用.
  • 请注意,只要图中存在循环,“所有路径”的数量就会迅速增加到无穷大,除非您明确排除包含循环的路径。

标签: algorithm graph shortest-path


【解决方案1】:

抱歉,不能将此作为 cmets 发布...

如果您需要所有可能的路径,那么您不能比“树”遍历(例如 BFS 或 DFS)做得更好。请注意,您需要从一开始就尽可能多地考虑每个节点(“树”比原始图大得多 - 如果您的图中有循环,甚至是无限的,但假设您没有t)。

要得到最小的路径,你可以在最后的列表中寻找它;或者最好,您可以使用类似 Dijkstra 的顺序进行树遍历,因此最短路径将首先出现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多