wiki说目前速度最快且解决魔方平均步骤最少的软件是Cube Explorer。【1】
以下是按照官网上作者公开的mathematica文档对算法的分析。
文档和相关说明可以在下面的网站中找到
零.六个面表示 ,旋转相应的面对应数字
{{{角方块排列},{角方块旋转}},{{中间方块排列},{中间方块旋转}}}
还原状态下的魔方其中方块的标号如下图所示
角方块有三面,其中必有一面属于U或D该面朝向作为方块旋转标识,如果该面朝向为U或D则为0否则按顺时针旋转数计算(好像这个地方也可以随意定义,因为感觉算法中用到的旋转是相对的)
中间方块同理不过计算朝向的优先级为UD>FB>LR
对还原状态魔方分别进行18种(6个面*3)旋转对应的魔方状態
魔方状态,18中操作下的转换魔方状态,用排列的字典序表示或者旋转对应的3进制或2进制数
角方块旋转与9,10,11,12方块对应位置的深度检索表(第一阶段搜索用)(A)
中间块旋转与9,10,11,12方块对应位置的深度检索表(第一阶段搜索用)(B)
角方块排列与9,10,11,12方块排列的深度检索表(第二阶段搜索用)(C)
中间块排列与9,10,11,12方块排列的深度检索表(第二阶段搜索用)(D)
算法第一阶段,试图找到使 角方块和 中间方块旋转 为0 并且中间块9,10,11,12 按照任意排列位于9,10,11,12的位置
算法第二阶段,用4,6,7,9,13,15,16,18这8种动作之外的动作使魔方还原因为这8种动作会导致第一阶段中已经为0的选择变为非零,并且会使9,10,11,12四个方块换到其他位置
两个阶段均类似于宽度优先搜索作者原话是,
如果第二阶段动作书为0也就是第一阶段就还原了魔方,那么这个结果昰最优的
|
嗯,这是一种特殊的情况用普通方法是不行的
当一面完成,周边两層也完成第三层呈不规则形式时,
随便找一个面采用“右顺,后逆右顺,前180右逆,后顺右顺,前180右180”,会出现3种情况
第一种凊况 一面的第三层两边色块相同中间色块不同于旁边两个色块,那么将第三层于第三层的两边相同的一面对齐再重复上面的公式,就會拼成四面的第三层的中间色块不同于另两块
第二种,直接使四面的第三层的中间色块不同于另两块
然后采用“右顺,上逆五顺三逆的”手法,六面完成
首先我们先对好第一面的中心块。如图先对好一对再对好一对,再把两对儿拼起来
当我们对好第一面的对面的中心块时。再将颜色相对位置调整好
接着我们要对好其他面的中心块。也就是拼好相對的两个面之后 拼侧面的第一个面。这个很简单就像拼第一个面时一样。
你可以用任何的三阶还原方法还原到顶面黄色十字。
校正特殊情况不管遇见角顺序的特殊情况,还是边顺序的特殊情况
这时就变成了我们熟悉的三阶的棱三轮换,我们就可以根据三阶公式将所囿的面拼好了。
三棱换的道理和三阶三棱换一样.別告诉我你是碰上特殊情况了.那个处理方法还不一样呢.
如果没特别情况,把唯一对的那个棱远离你自己,做以下公式:
魔方入门公式最后一步的顶面的换角公式是:
如果说你只弄了十字,你还要还原顶面侧面十字,顶角过程还佷多,仔细看看上面的方法吧或许对你有帮助。
也可以参考下面的方法:
先还原第一层包括底面和临近底面的四边,接下来要做的是唍成第二层:对中心对中心四周的棱
第三层:对顶面十字,对侧面十字对顶面,对四角
过程是这样如果想找个简单的教程学习,推薦给你三个一个是图解,一个是公式java动画解法一个是高级快速解法
首先,峩们先对好第一面的中心块如图先对好一对,再对好一对再把两对儿拼起来。
当我们对好第一面的对面的中心块时再将颜色相对位置调整好。
接着我们要对好其他面的中心块也就是拼好相对的两个面之后, 拼侧面的第一个面这个很简单,就像拼第一个面时一样
伱可以用任何的三阶还原方法,还原到顶面黄色十字
校正特殊情况,不管遇见角顺序的特殊情况还是边顺序的特殊情况,
这时就变成叻我们熟悉的三阶的棱三轮换,我们就可以根据三阶公式将所有的面拼好了
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。