【问题标题】:Dijkstra Algorithm: wrong path [closed]Dijkstra算法:错误的路径[关闭]
【发布时间】:2014-11-30 06:58:09
【问题描述】:

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

正确的路径应该是

C -> B -> N -> M

但它是

A -> B -> N -> M

我用这个代码Dijkstra Algorithm

这是我的图表的图片:

    

【问题讨论】:

  • 你的图表是什么?!
  • 您既没有发布实际代码,也没有发布图表。你希望别人如何帮助你?
  • 抱歉,我无法发布更多链接和更多代码,我正在编辑帖子

标签: java algorithm dijkstra


【解决方案1】:

这是因为您首先为 A 调用函数计算,然后为 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]

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多