可接受启发式曼哈顿距离

我最近开始了一门人工智能的入门课程,并且我已经被赋予了一个任务,在Python中实现一个可接受的启发式函数,通过A *搜索解决15-Puzzle。

我实施了曼哈顿距离以及其他一些启发式。 Python代码工作得很好,算法实际上解决了这个问题,但是我对曼哈顿距离启发式是否适用于这个特定问题有一些疑问。

根据理论,如果启发式不会 高估实现目标的成本,那么启发式算法是可以接受的。 这意味着启发式是乐观的,它返回的成本永远不会比实际成本高。

初始状态如下(0表示空插槽):

1  2  3  4
0  6  7  8
5  9  10 12
13 14 11 15

我的程序通过5次移动解决了这个问题,但是每个错位瓷砖的曼哈顿距离的总和等于10,这是实际成本的两倍。 所以实际成本远低于估算成本。 这是否意味着启发式是不可接受的或者我的逻辑有问题吗?

我考虑过只计算空白区块的曼哈顿距离,但当空白区块位于正确位置但其他区块放错位置时,会导致状态的估计成本为零。


曼哈顿距离启发式算法是可以接受的,因为它可以独立地考虑每个瓦片(实际上瓦片彼此干扰)。 所以这是乐观的。

在你的例子中,所有瓦片的目标位置距离总和为5(瓦片5,9,10,11,15每个需要移动一次)。

链接地址: http://www.djcxy.com/p/65571.html

上一篇: Admissible Heuristic Manhattan Distance

下一篇: A* Algorithm with Manhattan Distance Heuristic