我需要一种在有向图中找到第二条最短路径的方法,在第二条最短路径之上不能完全包含最短路径。我知道dijkstra algoritm,但我无法弄清楚如何更改该算法以在合理的时间内给我第二条最短路径的简单方法。算法,sudo-code或c ++示例,三者中的一个将不胜感激。
答案 0 :(得分:0)
不确定以下内容是否正确且有效,但这只是一个想法......
第二条最短路径至少有一条边与最短路径不同。如果没有两次访问节点,这也意味着在最短路径中至少有一条边没有被第二条最短路径使用。
如果这是正确的,您可以先搜索最短路径。然后,对于最短路径中的每条边:将其权重设置为无穷大(即将其从图中排除),并在结果图中搜索最短路径。这些中的最短路径应该是原始图中的第二个最短路径。