【发布时间】:2013-12-31 10:06:51
【问题描述】:
我使用欧几里得启发式算法做了一个一流的实现,它可以工作,但在某些情况下会产生不必要的动作。
截图如下: http://clip2net.com/s/6v2iU4
路径从蓝色圆圈开始,理论上,它右侧的单元格的 F 较小(移动成本 + 启发式成本),因此 a-star 优先选择它,但最终构建的不是最短路径。
我该如何解决这个问题? 或者a-star应该这样工作,我不需要做任何事情?
我的代码:http://pastebin.com/02u33jY6 (h + cpp)
【问题讨论】:
-
您的代码中存在错误,或者您的启发式方法不正确(如果启发式方法高估了路径的距离,A* 可能会返回不正确的路径)。没有看到代码,我们无法说出问题所在。
-
您是否忘记更改找到更好路径的节点的父节点?
-
好的,生病继续搜索我的代码中的错误,我还添加了代码链接。是的,我(至少我认为是这样)更新父母
标签: path-finding a-star