有谁知道如何编写一个编程图算法(C ++代码会很棒),它找到循环图中给定节点和边的一组Kth最短路径?
例如,最短路径(可由Dijkstra或Bellman Ford找到)被认为是第1条最短路径。现在第二条最短路径是第一条最短路径之后的最短路径。现在我希望算法找到第K个最短路径。 您将获得节点数,边数和边集数,如下所示:
节点数:5
边数:6
边:
0 1
0 2
1 2
2 3
3 1
1 4
源节点:0
目标节点:4
“请注意,此图表包含一个循环” 谢谢。
答案 0 :(得分:5)
使用uniform cost search算法。如果维基百科说“返回解决方案”,请不要退出并return
,但要将结果附加到某个列表,直到该列表包含 k 路径。列表的 k '元素(从1开始计算)将是 k '最短路径。
不要保持“关闭”/“探索”设置,否则此算法将无法正常工作。