Dijkstra算法:错误的路径

时间:2014-11-30 06:58:10

标签: java algorithm dijkstra

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

正确的路径应该是

C -> B -> N -> M

但它是

A -> B -> N -> M

我使用了此代码Dijkstra Algorithm

这是我图表的图片:

public static void main

1 个答案:

答案 0 :(得分:0)

这是因为你首先为A调用函数compute然后为C调用它。像这样的字段:

public double minDistance = Double.POSITIVE_INFINITY;
public Vertex previous;

已有值,因此您需要删除A的路径计算或清除此值,您可以使用以下函数执行此操作:

public void clear() {
    minDistance = Double.POSITIVE_INFINITY;
    previous = null;
}

在这个顶点类中,并像这样调用它:

for (Vertex v : vertices) {
    v.clear();
}

之前computePaths(v2);

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

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