k-最短(可选)路径算法,java实现

k-最短(可选)路径算法,java实现,java,algorithm,graph,mathematical-optimization,shortest-path,Java,Algorithm,Graph,Mathematical Optimization,Shortest Path,你能推荐任何实现k-最短算法->搜索替代方法的java库,而不是定向多重图中唯一的最短方法吗 我只找到了JGraphT,但实际上有一个bug(我提交了),但修复它需要很多时间,我想,还有其他可用的实现吗?除了JGraphT,我发现只有一个人的小项目:/ 或者很难修改Disjktra最短路径alg来显示替代路径 谢谢以前也有类似的请求,但正在StackOverflow上查找所有路径。 希望这有帮助,答案是肯定的,但不是确切的解决方案,而是更多的指南2个可能的选项: 备选案文1。来自的类Kshor

你能推荐任何实现k-最短算法->搜索替代方法的java库,而不是定向多重图中唯一的最短方法吗

我只找到了JGraphT,但实际上有一个bug(我提交了),但修复它需要很多时间,我想,还有其他可用的实现吗?除了JGraphT,我发现只有一个人的小项目:/

或者很难修改Disjktra最短路径alg来显示替代路径


谢谢

以前也有类似的请求,但正在StackOverflow上查找所有路径。

希望这有帮助,答案是肯定的,但不是确切的解决方案,而是更多的指南

2个可能的选项:

备选案文1。来自的
类KshortestPath
对于k-最短路径的Java实现是一个很好的选择

备选案文2。您也可以从中尝试此功能 这似乎是一个人的努力,但好的是算法是共享的:严的排名-细节在这里。()

注意:在给定图中查找所有节点对之间的最短路径是另一个问题。看到这个问题了吗

还要注意的是,富图的
k-最短路径
往往是(Dijkstra)最短路径的微小变化,即最短路径上顶点之间的替代路径,成本稍高

我知道OP要求Java实现,但如果人们有选择,R是一个选项,那么来自CRAN的
kbestshortestpath
也是一个非常好的选项


希望这会有所帮助。

寻找k-最短路径是相关的,但与备选路径的问题并不完全相同。好的替代路径更加复杂。如果概述了其他类似方法:

  • k-最短路径
  • 帕累托最优
  • 平台法
  • 惩罚方法
平台法有一点说明

如果您可以阅读德语,则:

  • e、 g.关于时间或距离的优化=>问题:缺少有趣的备选方案
  • dijunct路径=>同样的问题
  • k-最短路径=>问题:真正的备选路径可能不在前1000条路径之下
第5页

所以直觉告诉我们:一个替代方案应该有几乎相同的距离或时间。但应该是显著不同的。因此,第一个想法是:找到一条能缩小长度和相似性的路径。问题:可能会有地方绕道

第6页


我们引入第三个标准:局部最优:每个短子路径都必须是最短路径。

您对
k
最短边不相交或节点不相交路径感兴趣吗?首先,看看最小成本最大流量算法。我刚刚尝试了选项2:日元的算法,效果非常好!一个有400个节点、1000个链接的图的执行时间从3000毫秒(对于JGrapht的实现)下降到了0.3毫秒(对于Yen的算法实现)。是的,3000->0.3。这不是打字错误。