八数码

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

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

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

考虑用A*优化这个BFS

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

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

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

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

posted @   最爱丁珰  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示