2015-04-04 35 views
1

我试图搜索谷歌和stackoverflow的类似问题,但我没有找到任何成功。Java A *实现结果在两个连接节点

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

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

我的电流输出是这样的:

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

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

回答

2

如果你有For循环的评论: “//如果邻居处于封闭集合中,移动到下一个邻居”break语句将跳出for循环并继续评估邻居,即使它在封闭的集合中。

在这里设置一个布尔值,然后继续while而不是atleast将解决该问题。

+0

啊啊谢谢你,这是固定的!我没有注意到我所做的休息没有按照我的想法做! – Craig 2015-04-04 15:49:29

+0

太棒了!很高兴我能帮上忙。 – jan 2015-04-04 15:56:10