【发布时间】:2016-10-31 06:35:20
【问题描述】:
我在 LightOJ 中发现了一个问题,问题是在图中找到从节点 1 到节点 n 的第二条最短路径(图中从 1 到 n 标记有 n 个节点)。现在,问题表明我可以回溯以找到第二条最短路径。其中一个样例是这样的:
- 从节点 1 到 2 的边,成本 100。
- 从节点 2 到 3 的边,成本 300。
- 从节点 1 到 3 的边,成本 50。
对于这条路径 1->2->1->3,这个测试的答案是 150。 我知道 Dijkstra 算法。但是我找不到有关如何执行此操作的任何信息。如果这是一个老话题,我很抱歉,但是当我用谷歌搜索它时,我找不到任何东西。
更新:我读过这个问题。 Which algorithm can I use to find the next to shortest path in a graph? 我的问题与它不同,因为在这个问题中,我可以使用两次边缘。我从节点 1 到 2 一次,然后回到 1。这使用边缘 1->2 两次。
【问题讨论】:
-
在遍历图表时,您需要保留最便宜的两条路径的成本向量。
-
我看到了这个问题。但我需要一个算法来回溯@500-InternalServerError
-
你可以通过迭代加深找到两个节点之间所有可能的路径,保持它们的成本。这些成本可以排序,列表中的第二个可以返回。
-
任何伪代码或算法都会有所帮助。另外,问题出在 Dijkstra 之下。所以我正在寻找一个使用 Dijkstra 算法的解决方案
标签: c++ algorithm graph-theory shortest-path dijkstra