HTM法,也就是人类用Thistlethwaite算法,(西斯尔思韦特,可能是这么读的...)
原文: Thislethwaite Method 识破天 整理
另一个版本: 降群法详解 - ★ 其他速解法 (Other Methods) - 魔方吧·中文魔方俱乐部
英文原文: Human Thistlethwaite Algorithm
阅读需要魔方基本公式的基础, 不需要群论基础.
Thistlethwaite Method 最初是计算机用来解魔方所用的步骤。
过程中只是在调整块与块之间的全局关系,魔方始终是乱的,没有一个面被还原,只在最后一步,寥寥几下转动,整个魔方被复原。
Thistlethwaite Method 降解子群的四个步骤:
普通解法是通过逐块还原来减少下一步剩余块的排列数,最后所有块还原。
Thistlethwaite方法(TM)则与此有本质的不同。
魔方的任何一种块排列状态与魔方群的群元素是一一对应的。
TM的思想就是逐步降解魔方所处的群到更小的子群,最后到单位子群,也即还原状态。
所以在还原的每一步实体魔方看起来还是乱的,但实际上状态数是随所处的群的减小而规则的减小的。
考虑到有些朋友不熟悉群论的语言,我就加个形象点的解释帮助理解。如果魔方通过<U,D,L,R,F,B>六个基本动作打乱,那么它的混乱状态可以达到最大,有10^20次方种。
但假如我只用<U2,D2,L2,R2,F2,B2>来打乱魔方,显然魔方没有前一种情况乱,只有60万种。
极端一点的,我只用R转动打乱魔方,那么魔方就只有四种混乱状态。
上面这个逐步降解到子群的过程,就是把魔方由最大打乱状态一步一步的变到更小的打乱状态,最后达到复原状态。
从G0到G1有个缩小因子2,048(2^11),它表示在这一步魔方状态数减少了2048倍。
楞块有2^11种朝向,这一步就是调整楞块到某一种朝向模式。
原因是,若要翻转一个楞块,必须利用到FRU三个正交转动的组合,但是经过Phase1调整后,不能有F操作(只能有F2),所有楞块方向不能再翻转。所以才有下面这个定义:
定义:如果能通过转动群<U,D,L,R,F2,B2>使得某个楞块还原,那么这个楞块朝向就是好的。反之则是错的.
Phase1就是将所有朝向错的楞块变好。
方法很简单,首先找到所有朝向错误的楞块,然后把四个朝向错的楞块通过<U,D,L,R,F2,B2>转动移到F面(或者B面)上来,做一个F转动,这四个则变为好的。
如果只有两个错的,把其中一个移到F面,做一个F转动,这个错的变为对的,F面上另三个对的变为错的。
这样就凑足了四个错的,用上述方法调正。
下面为了叙述方便,我把魔方放置为:顶层黄色,底层白色,左面蓝色,右面绿色,前面红色后面橙色。
我把黄色白色合称YW色,蓝色绿色合称BG色,红色橙色合称RO色。
说道某个面是YW色时就指这个面上可以有黄色白色两种颜色。说到某个块的贴片是YW色时就是指这个贴片可以是黄色也可以是白色。
其他类推。
注意这一步魔方已经处于G1子群了,在这一步,所有操作只能由G1群<U,D,L,R,F2,B2>生成,目的是把魔方降解到G2群<U,D,L2,R2,F2,B2>。
这一步群的大小减小3^7 *12!/(8!4!)倍。
3^7 对应于角块方向,12!/(8!4!)表示中间层楞块放到中间层楞块排列数的减少的倍数。
它的物理原因是,要想改变角块的朝向,URF这三个正交转动必须用到两个。
G2群是八个角块位置的置换群,始终保持角块的方向不变。
同理,<U,D,L2,R2,F2,B2>生成的转动不可能把上下层转到中间层。
这就是要求这一步要把中间层的楞块放回中间层。再调整角块朝向之后,U面或者D面只有黄白两种颜色。
下面说具体怎么做。
中层楞块放回中层:等价的说法就是要把YW色楞块全部放在顶底面,做两个YW色的Cross。
通过L,R转动,使得顶面有三个楞块是YW色,底面也有三个楞块的YW色朝下。
他们缺的那块转到L/R侧面,剩下两个YW色楞块必定在中间层,也转到这个侧面,做一个L/R转动,中间层楞块全部回到中间层。
此后,除非必要,便不可在用LR操作,免得移走中间层楞块。
调整角块朝向:就是使角块的YW色处于U或者D面上。把两个朝向错误的角块一个放在LUF,一个放在FDR,R’D-L2-D’R操作即可以把它们的YW色调到U/D面上。
也可以放在RUF,LFD两个位置,用操作 LD’-R2-DL’ 翻转它们的朝向。
这一步所有操作只能通过G2群的转动<U,D,L2,R2,F2,B2>生成。
上一步把U/D调整为YW色,这一步类似,要调整两个侧面为对色。
或者换一个说法,上一步已经把E层(中间层)楞块放回E层了,这一步就是把M层(M slice)上的楞块调到M层,S层(S slice)上的楞块调到S层。
显然这是G3群<U2,D2,L2,R2,F2,B2>决定的状态。但这还不够,G3群还决定了角块的相对位置。八个角块分为两组,第一组四个角块{ULB,URF,RDB,LFD}在{ULB,URF,RDB,LFD}这四个顶角位置置换,另一组四个角块{ULF,URB,LDB,RDF}在{ULF,URB,LDB,RDF}这四个顶角位置置换。
比如,如果URB角块处于URF顶角上,它的位置就是错的,要处于RDF顶角上则是对的。
这一步使状态数减少了29,400 (=[8!/(4!4!)]2 *2*3)倍,8!/(4!4!)]2对应于M层S层楞块放回M层S层,6对应于两组角块每一组的四个相对位置正确。
下面介绍怎么做到这一点。
角块调整难度大一些,要首先调整角块位置。可以直接在上面两组对角线上找,看是不是该组角块处于该组,不是则调为是。
但这样比较麻烦。简单的做法是,先黄色角块全部调到U层,同时白色角块都回到D层。这时,看U/D层各自的四个角块相对位置是不是正确。比如U层角块,有三种状态,如图:
一种侧面颜色完全匹配;第二种不匹配,有且只有一个侧面同色;第三种完全不匹配。底面同样判断。
如果U和D面都是完全匹配或者完全不匹配(一三),(操作R2F2R2可以使情况一三互相变换),那么两组角块的相对位置都正确。否则需要调整。
R'FR' - B2 - RF'R ,这个操作交换U层ULB,URB两个角块,同时交换D层DLB,DRF两个角块。
转动<U,D,L2,R2,F2,B2>使角块处于合适位置,用这个互换操作即可把两组角块相对位置调整正确。
接着处理棱块。
注意这时上下角块要处于正确的相对位置(注意这个相对,没必要浪费步数把每个角块都放到正确位置)。首先把四个RO色楞块调到U层,把四个BG色楞块调到D层。
D’-M2-D 则把M层上的两棱调到了M层,S层上的两楞块调到了S层。如果M层有一个S层的棱,当然S层也只有一个M层的棱,就先用D’-M2-D把它变为两个再用上述步骤。
群被降解到了G3.
这时只能用G3群的转动<U2,D2,L2,R2,F2,B2>。
同理,如果必要用到某个90度角转动如R,必须跟着它的逆,R{ U2,D2,L2,R2,F2,B2}R’ 。
这一步所需的技巧很简单,如果想练得话,可以把还原好的魔方用转动{U2,D2,L2,R2,F2,B2}打乱,再还原。熟练之后全凭直觉即可还原。
最直观的做法先还原上下两层,首先还原两个相邻角块,这时剩下六个角块都自动对好还原。
用公式U2M2U2对调M层上两对楞块,用公式U2R2U2R2U2R2将M层一对楞块和E层一对楞块对调。其他情形都可以变为这两种。
先定一个小目标:用群论的知识计算出魔方一共有多少种组合。
摘要:一个3×3×3、每面有同一种颜色的魔方经各层的旋转变换,可产生8!×12!× × 种不同的状态。本文应用初等群论的方法给以证明。
当我们能熟练地用群论知识计算出魔方的组合数时,我们就可以进入第二个阶段:如何用群论的知识还原魔方。
不过我自己也就停留在第一个阶段就是了。