八数码
先简要解释一下从任何一个状态到目标状态的移动步数不可能小于所有数字当前位置与目标位置的曼哈顿距离之和
考虑一次移动,只能让一个数字的曼哈顿距离加一或者减一,而目标状态所有数字的曼哈顿距离都是0,所以得证
我们可以用普通的BFS做这道题目,由于边权是1,所以第一次搜索到的时候一定是最优情况
考虑用A*优化这个BFS
用这篇博客相同的方法可以证明这个A*也满足那个引理
但是会有一点点变化,其实那篇博客的证明中,叙述不是太严谨,那篇博客写到“搜索树边权(也是后继的代价减去前驱的代价)”,其实搜索树边权不一定是后继的代价减去前驱的代价,比如这道题目搜索树边权永远都是
这道题目,由于曼哈顿距离顶多加一减一,所以搜索树边权的
所以第一次取出的时候一定是最小步数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构