八数码

先简要解释一下从任何一个状态到目标状态的移动步数不可能小于所有数字当前位置与目标位置的曼哈顿距离之和

考虑一次移动,只能让一个数字的曼哈顿距离加一或者减一,而目标状态所有数字的曼哈顿距离都是0,所以得证

我们可以用普通的BFS做这道题目,由于边权是1,所以第一次搜索到的时候一定是最优情况

考虑用A*优化这个BFS

这篇博客相同的方法可以证明这个A*也满足那个引理

但是会有一点点变化,其实那篇博客的证明中,叙述不是太严谨,那篇博客写到“搜索树边权(也是后继的代价减去前驱的代价)”,其实搜索树边权不一定是后继的代价减去前驱的代价,比如这道题目搜索树边权永远都是\(1\),但是从那篇博客的证明过程可以看出,我只要前驱的代价小于等于后继的代价就满足了

这道题目,由于曼哈顿距离顶多加一减一,所以搜索树边权的\(1\)加到了已经移动的步数(也就是实际代价),而估价函数要么也加\(1\)要么就减一,无论如何后继的代价不会低于前驱,所以满足

所以第一次取出的时候一定是最小步数

posted @ 2023-11-23 16:53  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报