Java Dijkstra算法:错误路径

Java Dijkstra算法:错误路径,java,algorithm,dijkstra,Java,Algorithm,Dijkstra,当我再次将路径计算为顶点C到M 正确的路径应该是 C -> B -> N -> M 但事实确实如此 A -> B -> N -> M 我用了这个密码 这是我的图表的图片: 这是因为您首先调用函数compute for A,然后调用函数compute for C。某些字段如下: public double minDistance = Double.POSITIVE_INFINITY; public Vertex previous; for (Vertex

当我再次将路径计算为顶点
C到M

正确的路径应该是

C -> B -> N -> M
但事实确实如此

A -> B -> N -> M
我用了这个密码

这是我的图表的图片:


这是因为您首先调用函数compute for A,然后调用函数compute for C。某些字段如下:

public double minDistance = Double.POSITIVE_INFINITY;
public Vertex previous;
for (Vertex v : vertices) {
    v.clear();
}
已经有一个值,因此您需要删除a的PathCalculation或清除此值,您可以使用以下函数执行此操作:

public void clear() {
    minDistance = Double.POSITIVE_INFINITY;
    previous = null;
}
在这个Vertex类中,并像这样调用它:

public double minDistance = Double.POSITIVE_INFINITY;
public Vertex previous;
for (Vertex v : vertices) {
    v.clear();
}
computePaths之前(v2)

是代码的在线版本,您可以看到输出为:

Distance to B: 1.0
Path: [A, B]
Distance to M: 5.0
Path: [C, B, N, M]

你的图表是什么?!您既没有发布实际代码,也没有发布图表。你希望有什么人能帮助你?对不起,我不能发布更多的链接和代码