[UVA10181]十五数码解题报告

这篇博客详细介绍了如何利用ID-A*算法解决十五数码问题,探讨了估价函数的选择,并提供了无解状态的严谨证明。作者通过分析不同操作对逆序对数的影响,证明了在不同情况下,数码是否可达到与逆序对数的奇偶性有关。此外,还讨论了如何将解题策略推广到更高维度的立体数码问题。
摘要由CSDN通过智能技术生成

对于有解的情况,只需ID-A*即可。
首先谈一谈估价函数,估价函数表示的应该是对期望步数的下界。我一开始想的是用所有数现在的位置到应该在的位置的曼哈顿距离和,考虑到一次交换最多令其减少2,所以还要把它除以2。后来看了题解发现所有题解都是用的所有非0数的现在的位置到目标位置的曼哈顿距离和,这样的话一次交换最多令其减少1,这样应该是比较合适的。。
我一开始写的A*,(因为没有看懂ID-A*)A*需要面对map判重、heap维护,空间复杂度与时间复杂度相同,且挂了log的常数,时间空间都不占优。
后来终于看懂了ID-A*,ID-A*为什么不用判重?是因为我们考虑搜索树中的一个节点,如果它(假设我们做一个简单的剪枝、拒绝反着走到达当前状态的最后一步)被再次搜到,就意味着它至少又转了四下。也就是说一个点至多被搜 50413 ,即其常数约为13!也就是说这其实是比用平衡树判重快得多的。但是ID-A*是不能像A*一样每次取出预估最优的状态的,它只能通过调整上下来解决这个问题;这跟DFS与ID-DFS的区别还不一样,因为在一个预估较劣的状态可能会达到一个预估较优的状态。所以实际上ID-A*与A*的区别还是很大的,它实际上并不是A*的简单优化;它也并不一定比A*跑得更快,如果你的估价函数不是很准的话。。

其实这个题更有意思的地方,在于对于无解的判断。
我在网上并没有找到关于15数码的完整证明,不过有8数码的,但是我似乎并不能把它推广到15数码甚至是N*M数码。但是我前前后后研究了差不多有4个月,在这里将会给出一个严谨的证明。
命题:
在一个N*M( N>1,M>2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值