对于一些自同够(感觉叫同构合理些),例如对称棋盘的状态,不管怎么用旋转,镜像,取逆,都是它本身,这样就是在压缩后还是占1种状态。而对于一些不具有对称性的状态,96种可以压缩到一种。
实际操作起来应该很复杂。
这点在OLL,PLL中也能够体现出来。 我不是很懂优化,但我会以打乱步骤表示状态。
实战经验
我的魔方还原软件用了6个Int32来表示,每个Int32表示一个面:每个面有8个可动的块,每个色块可以有6种颜色,因此4位表示一个色块的颜色。这样都是半字节,处理起来很快速,所以我用穷举能够非常快速地搜索。http://www.telossoft.com.cn/OtherRubikCube.aspx
对于4阶魔方我也考虑过了,可以用6个Int64表示,同样每个色块半字节。
4阶魔方旋转估计需要通过查表处理,3阶我通过位运算在处理。
回复 13# 的帖子
是否考虑过预处理?另外你的非常快速。。有多快?
熵的概念
单纯讨论最少多少位能记录魔方的所有状态是没有任何意义, 关于熵信息论有全套的计算公式 看不懂啊...我还以为讨论魔方的最少状态呢回复 15# 的帖子
请教楼上,你说的你的软件计算速度极快,有多快,每秒可以搜索到多少个状态?回17楼
去我网站上下一个跑下就晓得了,PC机上可以搜索到千万级别,你也可以下载源代码,设置为.net 4.0性能又可以提高50%,如果平台设为Intel 64能够搜索更多节点。通常得到的解在30步以内,三分钟以内搜到,和参数设置相关,单纯追求快速,可以在数秒内得到解,只是这时质量比较差,50步左右
页:
1
[2]