大家通过阅读 八数码游戏分析——启发式搜索(一) 应该对解决八数码的启发式搜索算法有了一个大致的印象了,那么我就开始介绍基于 八数码游戏分析——启发式搜索(一)的一种改进的算法。
改进的启发式搜索策略:八数码的下一个格局中每个棋子移动到正确位置所需要的步数要少于当前格局中每个棋子移动到正确位置所需要的步数。
首先来解释一下什么是棋子移动到正确位置的步数。
我们在 八数码游戏分析——启发式搜索(一) 中提到每个数码的位置与最终格局的对比,如果位置相同,则说明此数码在正确位置。
还是拿那个图来说明:
图2.1
假设图2.1右边的格局是最终状态,那么可以看出左边格局中正确位置的数码就是红色字体标识的数码,分别是3,4,5,7。
我们把初始数码中的每个未移动到正确位置的数码拿出来单独分析
我们拿数码2来分析,如下图:
图2.2
可以看出数码2移动到正确位置需要一步,我们再拿数码8来分析:
图2.3
从图2.3可以看出,数码8移动到正确位置为两步
因此,一次可以得出数码1和数码6移动到正确位置都为一步,所以当前状态的每个棋子移动到正确位置的步数总和为:5步
那么当前状态的下一状态如下图所示:
图2.4
图2.4中,红色字体标识的是在正确位置的数码,八数码旁边的(n)表示当前数码格局中每个棋子移动到正确位置的步数总和为n步。
由此可以看出图2.4的左下方格局满足条件(一共要4步),所以左下方的格局为下一步格局。可能现在大家还没有看出此算法相对于前一个算法的优越性,
好,我们再向后继续推: