魔表是WCA的官方比赛项目,比较冷门,参与人数不多,但是学习起来却非常容易,即便是初学者也能在很短的时间学会复原。目前针对魔表的研究并不多,即便是高手使用的复原方法基本上也只是在初级方法的基础上做了一些小的调整而已。本文通过建立数学模型来对魔表进行求解,并据此对魔表的复原方法进行探索。
首先,我们对魔表的指针、立柱和转动表示方法进行说明。
魔表一共有2个面(这里称之为F面和B面),4个立柱,18个指针,其中角上的指针都是互相关联的,因此实际上我们只需要关注14个指针的变动,这14个指针的名字见下图。
本文将抬起立柱对应的外轮称之为F轮,按下立柱对应的外轮称之为B轮。
转动表示法参考“李老豆”在魔表预算法教程中的方法——A(f, b)。其中f表示F轮的转动点数,b表示B轮的转动点数;数字是正数则表示顺时针,负数则表示逆时针。A表示立柱的状态,共16种,分别为:
(01)UR:ur立柱抬起,其他三个按下;
(02)DR:dr立柱抬起,其他三个按下;
(03)DL:dl立柱抬起,其他三个按下;
(04)UL:ul立柱抬起,其他三个按下;
(05)U:ul、ur立柱抬起,其他两个按下;
(06)R:ur、dr立柱抬起,其他两个按下;
(07)D:dr、dl立柱抬起,其他两个按下;
(08)L:dl、ul立柱抬起,其他两个按下;
(09)UR-DL:ur、dl立柱抬起,其他两个按下;
(10)UL-DR:ul、dr立柱抬起,其他两个按下;
(11)ur:ur立柱按下,其他三个抬起;
(12)dr:dr立柱按下,其他三个抬起;
(13)dl:dl立柱按下,其他三个抬起;
(14)ul:ul立柱按下,其他三个抬起;
(15)ALL:四个立柱都抬起;
(16)all:四个立柱都按下。
附件: [图1 魔表构件示意图] img_0326 - 副本.png (2021-3-15 20:33:09, 84.07 KB) / 下载次数 29016种立柱状态中,除了all只有B轮、ALL只有F轮以外,其他14种状态都同时存在F轮和B轮,因此外轮一共有30种转动方法。在下表中我列出了这30种转动方法对需要调整的14个指针的影响,其中“1”、“-1”、“0”分别表示指针的转动与外轮转动方向相同、相反、无关。
魔表一共有14个指针需要调整,在没有跳步的情况下,一次拨动只能调整1个指针,因此需要拨动14次才能完全复原。我们假设某一指针打乱后的初始点数为β,14次转动对该指针的影响分别为a1,a2,a3,…,a14,14次转动的点数分别为x1,x2,x3,…,x14,则我们可以得到如下关系式:
以此类推,对于全部14个指针都能列出类似的关系式,我们将得到如下的方程组:
上述方程组可以表示成的Ax+β=12N形式,其中
我们称A为变换矩阵,x为操作向量,β为初始状态向量(14个分量按表从上到下的顺序排列)。
令N=0,则方程简化为Ax+β=0,可解得
至此,魔表的复原便简化为一个14阶线性非齐次方程组的求解。|A|=0时方程无解,|A|≠0时方程有唯一解。
如果你对数学原理不感兴趣,那么可以直接跳到第5节,那里有本文探索出的新方法。
附件: 算式8.png (2021-3-15 20:47:49, 698 Bytes) / 下载次数 290
附件: 算式7.png (2021-3-15 22:53:22, 2.4 KB) / 下载次数 329
附件: 算式6.png (2021-3-15 20:46:30, 1.44 KB) / 下载次数 261
附件: 算式5.png (2021-3-15 20:46:30, 1.38 KB) / 下载次数 282
附件: 算式4.png (2021-3-15 20:43:43, 2.69 KB) / 下载次数 257
附件: 算式2.png (2021-3-15 20:43:43, 5.77 KB) / 下载次数 293
附件: 算式1.png (2021-3-15 20:41:53, 1.69 KB) / 下载次数 289
附件: 各转动方法对指针的影响.png (2021-3-15 20:39:52, 26.87 KB) / 下载次数 250初学者复原魔表的步骤一般为
(1)将一面的四个棱指针与中心指针对齐;
(2)将中心指针和四个棱指针调整至零点;
(3)翻面后,将这一面的四个棱指针与中心指针对齐;
(4)将所有指针对齐;
(5)将所有指针调整至零点。
我们将翻面后的面定为F面,翻面前的定为B面,则以上步骤对应的操作分别为:
第1步:U(0,x1)、R(0,x2)、D(0,x3)、L(0,x4);
第2步:all(x5);
第3步:U(x6,0)、R(x7,0)、D(x8,0)、L(x9,0);
第4步:ur(x10,0)、dr(x11,0)、dl(x12,0)、ul(x13,0);
第5步:ALL(x14)。
我们从表1中将以上14个操作对应的变换列抽取出来组成变换矩阵:
求其负逆矩阵得
将负逆矩阵和初始状态向量代入方程的解即可求得操作向量x,再将x的各个分量转换成转动表示法的形式,即可得到魔表的解法。
例打乱公式:UR0+ DR2- DL2+ UL4+ U2+ R5- D4-L5+ ALL5+ y2 U4- R2- D1+ L5- ALL5+ UR UL
由图可知,初始状态向量
附件: 算式8.png (2021-3-15 20:56:52, 698 Bytes) / 下载次数 299
附件: 算式13.png (2021-3-15 20:56:52, 1.79 KB) / 下载次数 287
附件: 算式12.png (2021-3-15 20:56:51, 1.97 KB) / 下载次数 265
附件: 算式11.png (2021-3-15 20:56:51, 2.01 KB) / 下载次数 290
附件: img_0326.png (2021-3-15 20:54:27, 71.97 KB) / 下载次数 287
附件: 算式10.png (2021-3-15 20:52:50, 12.94 KB) / 下载次数 257
附件: 算式9.png (2021-3-15 20:52:49, 7.19 KB) / 下载次数 275为了改进现在的复原方法,我们可以从3个方面着手——转动次数、立柱状态变换次数和翻面。减少转动次数目前只能寄希望于跳步,尽管已经证明魔表的上帝之数是12,但是目前我们还没有在12次转动之内复原魔表的能力。那么我们就只能从减少立柱状态变换次数和不翻面这两个方面来探索了。
想要做不翻面,难度没有想象的那么大,能够盲拧一个十字其实就可以做到不翻面,但这是有风险的,很容易DNF。
由于魔表的操作满足交换律,因此将同样立柱状态的复原步骤合并,就可以减少立柱状态变换次数。以上一节所述的初级方法为例,第1步和第3步的复原步骤中,立柱状态完全一样,那么我们就可以将解法合并为——U(4,-4)R(2,5) D(-1,6) L(5,-1) all(1) ur(2,0) dr(0,0) dl(-4,0) ul(-2,0) ALL(-1)。这样一来,立柱状态变换次数由14次减少到了10次。(这其实就是“李老豆”的“魔表预算法”。)
还能不能再合并下去呢?至少上面的这个方法不能了,剩下的6个立柱状态都不一样。
16种立柱状态中,除了all只有B轮、ALL只有F轮以外,其他14种状态都同时存在F轮和B轮。那么我们可不可以从这14种状态中,选择7种状态,每种状态下都转动F轮和B轮,完成魔表的复原呢?如果可以,那么我们就将立柱状态变换次数由14次减少到了7次。
从14种状态中选择7种状态,一共有3432种组合,但并不是每种组合都能复原魔表。第2节中的结论告诉我们,当变换矩阵A是奇异矩阵时,这种组合是不能复原魔表的。除此之外,魔表又是高度对称的(上下对称、左右对称、前后对称、两个斜对称、中心对称),剩下的那些满足条件的组合中还可以排除对称情况。笔者精力有限,没有对这3432种状况进行逐一分析,希望能有数学和编程方面高手能助我一臂之力。
在此我就只介绍我发现的一种组合——L、R、UL、DR、ur、dl、UL-DR,从表1中将这7个立柱状态的14个操作对应的变换列抽取出来组成变换矩阵。
求其负逆矩阵得
还以上一节中的打乱为例,将负逆矩阵与初始状态向量代入中
将其整理成复原步骤——L(1,5) R(3,-3) UL(4,-1) DR(-1,6) ur(-4,6) dl(0,-4) UL-DR(2,-2),操作一下你会发现魔表复原了。这说明这一节的思路是可行的。
笔者在此只验证了其中一种组合的情况,剩下的三千多种组合中或许还能找到与此组合不同构的可解组合。
附件: 算式8.png (2021-3-15 21:02:17, 698 Bytes) / 下载次数 318
附件: 算式16.png (2021-3-15 21:01:29, 1.92 KB) / 下载次数 263
附件: 算式15.png (2021-3-15 21:01:28, 12.55 KB) / 下载次数 284
附件: 算式14.png (2021-3-15 21:01:28, 7 KB) / 下载次数 278
附件: 算式19.png (2021-3-15 22:30:24, 37.99 KB) / 下载次数 279
附件: 算式18.png (2021-3-15 21:06:36, 1.6 KB) / 下载次数 265
附件: 算式17.png (2021-3-15 21:06:36, 14.92 KB) / 下载次数 252本文通过建立数学模型得出了用矩阵计算魔表解法的方法,并介绍了根据此方法找到的一种复原方法,该方法大大提升了魔表的操作效率。但本文只验证了3432种组合形式中的一种,在那些还未验证的方案中或许还有更好的组合形式等待发掘。希望能有数学和编程方面的高手来继续我未完成的工作,也希望能有魔表的玩家尝试一下这种方法,或许这种方法能在魔表速拧上起到很大的作用,使魔表的成绩有飞速的提升。
蓝十 2013ZHAN41
2021年3月14日


| 欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs.mf8-china.com/) | Powered by Discuz! X2 |