查找两个节点之间的k最短路径


9

给定加权有向图和权重函数,通常可以使用Dijkstra算法获得最短路径。我感兴趣的是如何获取最短路径,最短路径,依此类推。G=V,Ed(u,v)2nd3rd

问题:

是否有一种有效的算法来获取加权图中两个节点之间的第i条最短路径?

是否有一种有效的算法来获取加权图中两个节点之间的k最短路径?

可以选择任意一个答案,尽管我想知道对第二个问题的答案是否可以比对第一个问题的答案的调用效率更高。k


2
Google在“ k条最短路径”上进行搜索时,发现了许多描述此问题的算法的参考。Wikipedia上也有关于该主题的文章:en.wikipedia.org/wiki/K_shortest_path_routing
DW

@DW给出一个简短的总结吗?
拉斐尔

Answers:


5

最短路径问题中,我们希望找到连接给定顶点对且总长度最小的路径。Eppstein [1]有一种算法以时间运行,以求出有向图中两个顶点之间的最短路径(允许循环)。使用本文的技术,还可以在同一时间范围内找到所有路径,这些路径比某个给定的阈值短。关于该主题有大量文献,Eppstein论文包含许多参考和讨论。kkO(m+nlogn+k)k

如果不允许循环,则可能需要查看Hershberger等人的算法。[2]。


[1] Eppstein,David。“找到k条最短路径。” SIAM Journal on Computing 28.2(1998):652-673。[ CiteSeerX ]

[2] Hershberger,John,Matthew Maxel和Subhash Suri。“找到k条最短的简单路径:一种新算法及其实现。” ACM算法交易(TALG)3.4(2007):45。 [ CiteSeerX ]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.