Java A* 实现导致两个连接节点

Java A* Implementation results in two connecting nodes

我尝试在 google 和 Whosebug 上搜索类似问题,但没有成功找到任何问题。

我的 A* 实现有效,但是当收集从起始节点到结束节点的路径时,它只是循环通过两个相互连接的节点(我可以从节点 A 到节点 B,但也可以从节点 B 到节点 A)。

我遵循了维基百科的 A* 实现,但当我创建 Dijksta 的算法时,它使用了相同的方法,但效果很好——所以我很困惑为什么不是这样。

我当前的输出是这样的:

Node: 3093, 
Node: 3085, 
Node: 3093, 
Node: 3085, 
Node: 3093, 
Node: 3085, 
Node: 3093, 
... repeated

有谁知道为什么它不能正确存储 .from? 另外我想存储程序遍历以获得成功路线的边缘 - 有谁知道我会怎么做?我可以简单地实现一个可以添加正确边缘的存储吗?

你有带有评论的for循环: "//if the neighbor is in closed set, move to next neighbor" break 语句将跳出 for 循环并继续评估邻居,即使它在封闭集中也是如此。

在这里设置一个布尔值并继续 while 至少可以解决这个问题。