【发布时间】:2013-05-03 16:58:15
【问题描述】:
我有一个图表,其中我的所有节点之间都有一个计算出的距离。
现在,我想从我的 startNode 开始,然后找到计算值最低的路径,只要路径有 X 个唯一节点。 把它想象成一张地图:我们从巴黎开始,想去 3 个城市旅行。我想找到距离巴黎总共 3 站的路径,计算值最低。
我正在考虑实施修改后的 Dijkstra 算法,这通常会给我到最终目的地的最短距离,然后我的最终目的地是所有 X_level_out 目的地,这应该给我一个类似 O(nodes^) 的运行时间等级) 。
这有意义吗? 还有其他建议吗?
【问题讨论】:
-
没什么好说的了——修改后的 Dijkstra 应该可以正常工作。
-
看起来应该是 BFS 的简单变体
-
“我有一个图表,其中我的所有节点之间都有一个计算出的距离。” - 这是否意味着你的图是完整的(所有节点对之间的一条边)?
-
查看 Floyd-Warshall 算法
-
@LarsHoldgaard 您可以使用 BFS 查找所有 X 级别的节点。在遍历边缘时,只需保持最小距离,就像 Dijkstra 算法中的那样。 (Dijkstra 本身是 BFS 的概括,但您不必在这里“完整 Dijkstra”,因为路径长度或级别是固定的)。
标签: c# algorithm data-structures graph-theory dijkstra