【发布时间】:2014-10-25 03:14:48
【问题描述】:
我正在使用 A* 算法,所以我可以用网络摄像头拍摄迷宫的照片并让程序解决它。 结果如下:
当我使用 h = 0 时,我得到了一个很好的解决方案。使用曼哈顿距离也提供了一个很好的解决方案。然而,对角线距离会做一些奇怪的事情,比如我用绿色圈出的图案。或者更奇怪的是这个,来自不同的迷宫:
我是否错误地实现了对角线距离?
public void findHeuristic()
{
int dx = Math.abs(x - MazeBot.goal.x);
int dy = Math.abs(y - MazeBot.goal.y);
h = 10 * (dx + dy) - 6 * Math.min(dx, dy); //diagonal distance
}
【问题讨论】:
-
您能解释一下为什么您采用这种方式实现对角距离吗? 10 和 6 是从哪里来的?天真地,您似乎想使用距离公式 (sqrt(dx^2 + dy^2),但也许我错过了您的情况的一个微妙之处。
-
我按照这里的指南进行操作:theory.stanford.edu/~amitp/GameProgramming/…
标签: java path-finding a-star heuristics