Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JGraphT中无权图的单源最短路径_Java_Algorithm_Graph_Shortest Path_Jgrapht - Fatal编程技术网

Java JGraphT中无权图的单源最短路径

Java JGraphT中无权图的单源最短路径,java,algorithm,graph,shortest-path,jgrapht,Java,Algorithm,Graph,Shortest Path,Jgrapht,有许多最短路径的实现(Dijkstra、Belman Ford等) 我需要一个未加权图的单源最短路径 以下是我的问题(针对JGraphT): 首先,我假设对未加权图使用Dijkstra是浪费的(使用优先级队列,该队列的队列deque比BFS使用的常规队列慢,并且由于在未加权图上所有权重都是1,因此这实际上并没有增加任何值)。我的假设正确吗 假设1的答案是“是”,那么我假设我将使用breadthfirsterator而不是滚动我自己的(经过单元测试,而且像简单的BFS一样,我肯定我会有一些小错误,

有许多最短路径的实现(Dijkstra、Belman Ford等)

我需要一个未加权图的单源最短路径

以下是我的问题(针对JGraphT):

  • 首先,我假设对未加权图使用Dijkstra是浪费的(使用优先级队列,该队列的队列deque比BFS使用的常规队列慢,并且由于在未加权图上所有权重都是1,因此这实际上并没有增加任何值)。我的假设正确吗

  • 假设1的答案是“是”,那么我假设我将使用
    breadthfirsterator
    而不是滚动我自己的(经过单元测试,而且像简单的BFS一样,我肯定我会有一些小错误,甚至Java的二进制搜索也有整数溢出,这要感谢Josh Bloch自己引入的错误,直到2006年才解决!)。但问题是,从原始BFS到实际获取单源最短路径还有一个(非常小的)步骤,我是否应该编写自己的
    unweightedsinglesourceshortestpath
    类?或者JGraphT核心库中是否隐藏了一个我可以直接插入的库


  • 因为我认为我找到了第二个问题的答案,我认为它也回答了第一个问题(如果JgraphT的Dijkstra对于所有权重=1的简单情况是最有效的,那么为什么CDK会创建自己的呢?)


    这里是#2的答案-是的,有一个开源(LGPL)解决方案:

    对于未加权图,所有边都具有相同的权重,因此优先级队列将不相关,在这种情况下,Dijkstra将是图上的简单BFS。是的,但是如果Dijkstra使用堆优先级队列,队列和出列是O(LogN)否?所以,如果我对一个未加权图做Dijgstra,而BFS做同样的图,BFS会更快吗?(虽然他们都会给我相同的结果…)