JGraphT有许多最短路径的实现(Dijkstra,Belman Ford等)
我需要一个未加权图的单一源最短路径。
以下是我的问题(特定于JGraphT):
首先,我假设使用Dijkstra进行未加权的图形是浪费的(使用优先级队列,其队列deque比BFS使用的常规队列慢,并且因为在未加权的图形上所有权重都是1,所以这不是真的添加任何值)。我的假设是否正确?
假设1的答案是"是",那么我假设我除了自己使用BreadthFirstIterator
之外,(单元测试,简单的BFS是,我确定我会遇到一些角落案例错误,即使Java的二进制搜索有一个整数溢出,感谢Josh Bloch自己介绍的一个错误,它不是。解决到2006年!)。但问题是,如果我编写自己的UnweightedSingleSourceShortestPaths
类,从原始BFS到实际获取单一来源最短路径仍然有一个(非常小的)步骤?或者是否有一个隐藏在JGraphT核心库中的我可以插入?
答案 0 :(得分:0)
由于我认为我找到了第二个问题的答案,我认为它也回答了第一个问题(如果JgraphT的Dijkstra对于所有权重= 1的简单情况最有效,那么为什么CDK会创建他们自己的?)
以下是#2的答案 - 是的,有一个开源(LGPL)解决方案:https://github.com/cdk/cdk/blob/master/legacy/src/main/java/org/openscience/cdk/graph/BFSShortestPath.java