三个人工智能初学者问题:
- 为什么A*算法中的启发式函数必须是可接受的才能找到最优路径?
- 如果有障碍物,那么打结技术有什么用呢?
- 什么算法适用于在带有障碍物的网格上找到路径?(如吃豆人)
对于第一个问题,以曼哈顿距离启发式函数为基础,称之为h(x)。现在为什么A*要使用一个新的启发式函数(如8*h(x)+5)来找到非最优路径呢?就我所知,在A*算法中,决策将根据函数f(x)=g(x)+h(x)
进行,因此如果我放大h,为什么最大/最小值会改变呢?
我已经阅读了这篇文章,他们谈到了通过乘以小因子来进行打结技巧,这在我的理论中也是如此,但他们坚持认为因子应该很小。所以我不知道该怎么想。
对于第二个问题,我尝试使用链接中的技术来解决吃豆人游戏。任何曼哈顿距离启发式函数的更改都会导致扩展更多节点。我甚至“发明”了一种新的加权方案,其中我更喜欢外壳上的路径-同样的结果。后来我尝试取所有函数的最大值(也应该是可接受的),但仍然表现不佳。我错过了什么吗?
对于第三个问题没有什么可补充的了。如上所述-我找不到比曼哈顿距离更好的方法。