独立钻石Solitaire算法求解

本文介绍了一种独立钻石Solitaire算法的求解方法,通过深度优先搜索(DFS)结合剪枝策略,实现了在有限时间和内存条件下找到解决方案。在实验环境下,程序在20秒内找到首个解,306秒内找到另一个解。文章讨论了优化技巧,如静态化数据结构以减少计算开销,并简要提及了寻找最优解的尝试和面临的挑战。
摘要由CSDN通过智能技术生成

独立钻石Solitaire算法求解

关键字
茶余饭后,休闲娱乐, 独立钻石,solitaire,DFS,剪枝。

摘要
茶余饭后,休闲娱乐。
百度略为查找,算法实现很多,但并不认为很多实现在实践中可以在有限的内存、可接受的时间内,得出结果。
在实验环境 [1]中,20s得到第一个解。内存使用2G Bytes多。
交换p1, p2顺序,306秒得到第一个解。
连跳算1步的话,在目前方法中,只找到最好20步解。

问题
棋盘如下,感谢金涬博士和我一起无聊,并赠送实物跳棋。

在这里插入图片描述

日常跳棋规则,110跳为001。
目标,从中心为0,跳到最后只剩1个子在中心。(独立钻石名称由此而来)

算法实现
DFS无可争议。先不考虑连跳,找到解时,需要31部;搜索规则为,针对当前盘面的0(空格)(搜索0和搜索1是对称的),尝试4个方向。需要保存当前盘面和当前动作,作为搜索回溯记录。

时间复杂度极高(O(n!)),需要考虑可接受时间内得到解。

剪枝,对任意盘面,根据规则不变性,如果其后续搜索无法得到解,则,当再次碰到该盘面时,无须搜索。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值