百科问答小站 logo
百科问答小站 font logo



如何利用群论的知识解决三阶魔方? 第1页

  

user avatar    网友的相关建议: 
      

HTM法,也就是人类用Thistlethwaite算法,(西斯尔思韦特,可能是这么读的...)

原文: Thislethwaite Method 识破天 整理

另一个版本: 降群法详解 - ★ 其他速解法 (Other Methods) - 魔方吧·中文魔方俱乐部

英文原文: Human Thistlethwaite Algorithm

阅读需要魔方基本公式的基础, 不需要群论基础.


Thistlethwaite Method 最初是计算机用来解魔方所用的步骤。

过程中只是在调整块与块之间的全局关系,魔方始终是乱的,没有一个面被还原,只在最后一步,寥寥几下转动,整个魔方被复原。

Thistlethwaite Method 降解子群的四个步骤:

  • G0=<U,D,L,R,F,B> ,
  • G1=<U,D,L,R,F2,B2>,
  • G2=<U,D,L2,R2,F2,B2>,
  • G3=<U2,D2,L2,R2,F2,B2>,
  • G4=<I> (还原态)

普通解法是通过逐块还原来减少下一步剩余块的排列数,最后所有块还原。

Thistlethwaite方法(TM)则与此有本质的不同。

魔方的任何一种块排列状态与魔方群的群元素是一一对应的。

TM的思想就是逐步降解魔方所处的群到更小的子群,最后到单位子群,也即还原状态。

所以在还原的每一步实体魔方看起来还是乱的,但实际上状态数是随所处的群的减小而规则的减小的。

考虑到有些朋友不熟悉群论的语言,我就加个形象点的解释帮助理解。如果魔方通过<U,D,L,R,F,B>六个基本动作打乱,那么它的混乱状态可以达到最大,有10^20次方种。

但假如我只用<U2,D2,L2,R2,F2,B2>来打乱魔方,显然魔方没有前一种情况乱,只有60万种。

极端一点的,我只用R转动打乱魔方,那么魔方就只有四种混乱状态。

上面这个逐步降解到子群的过程,就是把魔方由最大打乱状态一步一步的变到更小的打乱状态,最后达到复原状态。


Phase 1 对好所有楞块方向

从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色时就是指这个贴片可以是黄色也可以是白色。

其他类推。


Phase 2 将中间层楞块放到中间层,并调整好角块朝向

注意这一步魔方已经处于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’ 翻转它们的朝向。


Phase 3 调整F/B面为RO色,L/R面为BG色,并调整角块相对位置

这一步所有操作只能通过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.


Phase 4 一步还原所有角块楞块

这时只能用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层一对楞块对调。其他情形都可以变为这两种。


user avatar   liang-zi-se-dong-li-xue 网友的相关建议: 
      

先定一个小目标:用群论的知识计算出魔方一共有多少种组合。

魔方旋转变换群的阶_图文_百度文库

摘要:一个3×3×3、每面有同一种颜色的魔方经各层的旋转变换,可产生8!×12!× × 种不同的状态。本文应用初等群论的方法给以证明。

当我们能熟练地用群论知识计算出魔方的组合数时,我们就可以进入第二个阶段:如何用群论的知识还原魔方。

不过我自己也就停留在第一个阶段就是了。




  

相关话题

  我国数学教材中的「勾股定理」是否应该改成「毕达哥拉斯定理(Pythagoras theorem)」? 
  现代理论物理的新成果中,有没有因为使用不严格的数学最后被证明因此导致错误结果的案例? 
  剩余类环的所有理想怎么求? 
  你见过最恶心的函数是什么? 
  路径积分、重整化在数学上目前并没有严格的定义,为什么在物理学中却相当有效? 
  这个数学分析的问题该如何求解? 
  数学史上有哪些比较著名的猜想因为有反例的存在而没有成为定理? 
  有哪些玩游戏时能使用的高等数学知识? 
  为何生命科学、心理学领域的学术丑闻比数学、物理、天文领域的多那么多? 
  递归的本质是什么? 

前一个讨论
是否存在一个级数的∑an使得任何其他级数,只要通项大于它的都发散,小于的都收敛?
下一个讨论
方程 cos(x) = x 的唯一实数解是不是超越数?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利