Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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-在加权图中查找两个节点之间的最短路径(也是负权重)_Java_Algorithm_Graph_Path_Bellman Ford - Fatal编程技术网

JAVA-在加权图中查找两个节点之间的最短路径(也是负权重)

JAVA-在加权图中查找两个节点之间的最短路径(也是负权重),java,algorithm,graph,path,bellman-ford,Java,Algorithm,Graph,Path,Bellman Ford,我需要一个算法来找到定义的源节点和定义的目标节点之间的最短路径 输入文件如下所示: 0 6 1.4 7 9 0 1 3.2 0 2 2.4 0 3 1.7 1 2 -2.1 2 4 1.6 3 4 1.8 4 5 1.9 4 6 1.7 5 6 -3.1 if(!results.contain(tgt)) return 0; if(results.get(tgt) <= maxWeight) return

我需要一个算法来找到定义的源节点和定义的目标节点之间的最短路径

输入文件如下所示:

0 6 1.4    

7 9       

0 1 3.2   
0 2 2.4   
0 3 1.7   
1 2 -2.1  
2 4 1.6   
3 4 1.8  
4 5 1.9  
4 6 1.7  
5 6 -3.1
if(!results.contain(tgt))
    return 0;
if(results.get(tgt) <= maxWeight)
    return 1;
  • 第一行表示:第一个数字是起始节点,第二个数字是目标节点 第三个是我可能花费的最大重量

  • 第二行表示节点和圆弧的数量

  • 其他线表示圆弧及其权重的描述 //示例:从节点0到节点1,权重为3.2

最后,如果没有成本低于1.4的路径(如第一个输入行所示),程序必须返回值0。如果可能,它必须返回1

我尝试使用Bellman-Ford算法,但是它找到了到所有目的地的最短距离


欢迎提出任何建议

您可以应用Bellman-Ford算法,并检查到目标节点的最短路径的权重是否低于或等于结果中指定的权重

Say
results
是从图上的Bellman Ford应用程序返回的列表对象,指定起始节点
src
,其中
results.get(tgt)
返回节点
src
tgt
之间的最短路径权重。 假设
maxWeight
是您希望通过最短路径获得的最大重量

你可以这样做:

0 6 1.4    

7 9       

0 1 3.2   
0 2 2.4   
0 3 1.7   
1 2 -2.1  
2 4 1.6   
3 4 1.8  
4 5 1.9  
4 6 1.7  
5 6 -3.1
if(!results.contain(tgt))
    return 0;
if(results.get(tgt) <= maxWeight)
    return 1;
if(!results.contain(tgt))
返回0;

如果(results.get)(tgt)只需使用Dijkstra的算法
,但它会找到到所有目的地的最短距离
,这就是最短路径算法的工作原理看看a*(a-star)algorithm@user3437460不,这不起作用,他的体重是负数。