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
欢迎提出任何建议您可以应用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不,这不起作用,他的体重是负数。