上個(gè)月,00后女孩陳諾在中國(guó)兒童青少年魔方挑戰(zhàn)賽上,“0秒”還原魔方,引起廣泛關(guān)注。網(wǎng)友們紛紛稱贊:禁止在麻瓜面前施展魔法。
還原魔方,應(yīng)該是很多人童年的“小小夢(mèng)想“。
然而魔方卻并不只是代表童年回憶的玩具,其實(shí)它蘊(yùn)含著深厚的數(shù)學(xué)知識(shí),特別是作為“群論”應(yīng)用的一個(gè)極佳例子,得到了許多研究。
接下來(lái),就讓我們一起走進(jìn)童年回憶的背后,挖掘兒時(shí)未見(jiàn)的深度吧!
魔方的歷史和當(dāng)下
魔方(Rubic cube)是由一名匈牙利教授Ern Rubik發(fā)明的,最初他發(fā)明魔方,是作為一種教學(xué)用具,希望通過(guò)魔方的空間結(jié)構(gòu)和操作特點(diǎn)來(lái)提高學(xué)生們的空間想象能力。
據(jù)說(shuō)是世界上最早的魔方
1974年,魔方一經(jīng)問(wèn)世,迅速受到世人的喜愛(ài),并得到了蓬勃發(fā)展。從最初的三階魔方,發(fā)展到四階、五階乃至更高階,此外還出現(xiàn)許多異形魔方,比如鏡面魔方、金字塔魔方、五魔方等等。
各種不同的衍生魔方
如今,在世界魔方協(xié)會(huì)WCA(World Cube Association)的賽事中,目前三階魔方的單次還原世界紀(jì)錄由8歲的中國(guó)小將耿暄一創(chuàng)造,他在2025年沈陽(yáng)春季魔方賽中以3.05s的成績(jī)打破世界紀(jì)錄,成為新的世界紀(jì)錄保持者。
三階魔方單次還原世界紀(jì)錄歷史
魔方的組成
經(jīng)典3×3×3三階魔方是由54個(gè)小面組成的正方形,每個(gè)側(cè)面分成9個(gè)小面,總體由26個(gè)“小立方體“組成,分別包括6個(gè)中心塊、12個(gè)棱塊和8個(gè)角塊。
其內(nèi)部構(gòu)建十分精巧,各個(gè)構(gòu)件之間互相嵌合,中心塊與中心軸架通過(guò)轉(zhuǎn)動(dòng)副連接,轉(zhuǎn)動(dòng)每一層時(shí),每一層的子塊之間通過(guò)互相約束而自鎖,成為一個(gè)構(gòu)件,由組合轉(zhuǎn)動(dòng)副和組合移動(dòng)副共同實(shí)現(xiàn)每層的轉(zhuǎn)動(dòng)。
三階魔方的內(nèi)部構(gòu)造和運(yùn)動(dòng)副
四階魔方,看似只是多加了一階,實(shí)際復(fù)雜度卻大大增加。其由24個(gè)相同的中心塊、8個(gè)相同的角塊、24個(gè)相同的邊塊、T形連接件、D形連接件等130多個(gè)零件組成。中心連接件、T形連接件和D形連接件共同構(gòu)成的中心球為核心轉(zhuǎn)動(dòng)件,魔方子塊鑲嵌在中心球表面,與三階魔方相同的是,轉(zhuǎn)動(dòng)一層時(shí),每一層的子塊之間通過(guò)互相約束而自鎖。
四階魔方內(nèi)部構(gòu)造圖
按國(guó)際慣例,魔方著色是按照:上面黃色、底面白色、左邊藍(lán)色、右面綠色、前面紅色、后面橙色來(lái)的,意味著白色和黃色相對(duì)面,藍(lán)色和綠色相對(duì)面,紅色和橙色相對(duì)面。
三階魔方的中心塊被固定在中心對(duì)稱十字架上,中心塊的顏色對(duì)應(yīng)并不會(huì)隨著擰動(dòng)魔方而改變;但四階魔方不同,中心塊的相對(duì)位置可以任意改變,但受到棱塊、角塊顏色固定的影響,必須旋轉(zhuǎn)到滿足慣例的中心塊排布才能復(fù)原。
三階魔方總的狀態(tài)數(shù)有多少?這可以通過(guò)排列組合計(jì)算出來(lái)。
在魔方中,角塊只能被旋轉(zhuǎn)到角塊的位置,棱塊只能被旋轉(zhuǎn)到棱塊的位置。對(duì)于8個(gè)角塊,第一個(gè)角塊可以選擇的位置有8種,第二個(gè)角塊可以選擇的位置有7種,以此類推;每個(gè)角塊在每個(gè)位置可以有3種顏色方向,當(dāng)有7個(gè)角塊的位置和方向確定后,最后一個(gè)角塊的位置和方向也被確定(因?yàn)椴荒軉为?dú)翻轉(zhuǎn)一個(gè)角塊),因此角塊的狀態(tài)數(shù)量為
對(duì)12個(gè)棱塊而言,類似的,第一個(gè)棱塊可以選擇的位置有12種,第二個(gè)棱塊可以選擇的位置有11種,以此類推;每個(gè)棱塊在每個(gè)位置可以有2種顏色方向,當(dāng)有11個(gè)棱塊的位置和方向確定后,最后一個(gè)棱塊的位置和方向也被確定(因?yàn)椴荒軉为?dú)翻轉(zhuǎn)一個(gè)棱塊),因此棱塊的狀態(tài)數(shù)量為
除了以上這些狀態(tài)以外,在魔方的實(shí)際扭動(dòng)中,還有一半的可能性是不會(huì)在魔方的正常旋轉(zhuǎn)中達(dá)到的,因此還需要將以上狀態(tài)數(shù)除以2。
這樣,就得到了上式中三階魔方的總狀態(tài)數(shù)。
對(duì)于N階魔方,我們也可以使用類似的方法(即先討論角塊和棱塊的所有狀態(tài),再排除不可能被旋轉(zhuǎn)出的情況)去討論其所有可能的狀態(tài)數(shù),這里我們直接跳過(guò)冗長(zhǎng)的證明,直接給出N階魔方狀態(tài)數(shù)的通解吧:
奇數(shù)階魔方狀態(tài)總數(shù):
偶數(shù)階魔方狀態(tài)總數(shù):
魔方的復(fù)原
經(jīng)過(guò)半個(gè)世紀(jì)的歷史,三階魔方的復(fù)原發(fā)展出角先、CFOP、橋式等方法,而隨著時(shí)代進(jìn)步和魔方復(fù)原機(jī)器人的興起,人擰和機(jī)器復(fù)原也朝著各自具有優(yōu)勢(shì)的方向延伸出不同的體系,這里我們先簡(jiǎn)單介紹手?jǐn)Q的復(fù)原方法。
01
角先法(Corners First)
最早被魔方的發(fā)明者Rubik所使用的復(fù)原方法,需要記憶的公式較少,也很直觀,但步驟很多,且需要敏銳的觀察能力和反應(yīng)能力。其包括底面及頂面角塊歸位、底面及頂面棱塊歸位、中心層棱塊歸位、檢查顏色方向幾步,雖然發(fā)明較早,但與如今的盲擰思路比較類似。
02
層先法(Layer by layer)
1979年,層先法由大衛(wèi)·辛格馬斯特首次提出,這是大多數(shù)新手玩家所必學(xué)的方法,比較符合人對(duì)魔方復(fù)原的認(rèn)知——一層一層復(fù)原。
03
CFOP解法
這是目前最為主流的速擰解法,在WCA大賽中非常受歡迎。其由捷克的Jessica Fridrich等人在1981年左右提出。方法涉及到119個(gè)公式,由Cross底層十字、F2L(First 2 Layer)還原下兩層、OLL(Orientation of Last Layer)調(diào)整上層棱塊和角塊的方向、PLL(Permutation of Last Layer)完成上層所有塊的位置排列組成。可以理解為層先法的精華迅速版。
CFOP四個(gè)階段的目標(biāo)狀態(tài)
魔方中的群論
在開(kāi)始聊群論之前,我們先需要了解一套對(duì)于魔方愛(ài)好者非常熟悉的一套“語(yǔ)言“,即魔方轉(zhuǎn)動(dòng)的符號(hào)描述,也是魔方公式的通用表達(dá)。
魔方的轉(zhuǎn)動(dòng)以魔方面的英文縮寫(xiě)來(lái)表示,手持魔方時(shí),魔方的六個(gè)面分別為U(up)R(Right)F(Front)D(Down)L(Left)B(Back),用每個(gè)方向的大寫(xiě)首字母來(lái)表示“將該面順時(shí)針旋轉(zhuǎn)90度”,具體的表示如下圖所示。
在數(shù)學(xué)中,我們暫時(shí)忽略中間層和兩層一起的轉(zhuǎn)動(dòng),因?yàn)樗鼈兌伎梢杂眠@六種轉(zhuǎn)動(dòng)的疊加實(shí)現(xiàn)。
而這6個(gè)轉(zhuǎn)動(dòng),構(gòu)成了魔方所有轉(zhuǎn)動(dòng)生成的集合
群論,是研究“群“這一代數(shù)結(jié)構(gòu)的學(xué)科,群(Group)是一種規(guī)定了特殊乘法的集合。我們利用群的定義,可以證明上述的6個(gè)轉(zhuǎn)動(dòng)構(gòu)成了“魔方群”。
當(dāng)規(guī)定了元素的“乘積”法則之后,元素的集合G若滿足下面四個(gè)條件,則稱其為群G:
①集合對(duì)乘積的封閉性:
②乘積滿足結(jié)合律:
③集合中存在左恒元,用它左乘集合中的任意元素,保持該元素不變:
④任意元素的左逆元存在于集合中,滿足:
即每個(gè)元素都存在一個(gè)與它運(yùn)算后等于左恒元的元素
首先我們定義魔方群中的“乘法”法則,規(guī)定魔方的轉(zhuǎn)動(dòng)合成運(yùn)算是從左向右的,即
M1M2表示先轉(zhuǎn)動(dòng)M1再轉(zhuǎn)動(dòng)M2,比如RU表示先轉(zhuǎn)右面,再轉(zhuǎn)上面。用c表示魔方狀態(tài),即各塊和小面的方位,用M(c)表示魔方在狀態(tài)c下經(jīng)M轉(zhuǎn)動(dòng)后所生成的新?tīng)顟B(tài)。
設(shè)G是魔方所有轉(zhuǎn)動(dòng)生成的集合,那么它能夠滿足:
1.封閉性:G中任意元素都可以表示成一系列轉(zhuǎn)動(dòng)的合成,則G中任意兩個(gè)元素的合成同樣是一系列轉(zhuǎn)動(dòng)的合成。
2.結(jié)合律:用c表示任意魔方狀態(tài),則
3.存在左恒元:魔方不進(jìn)行轉(zhuǎn)動(dòng),或是由轉(zhuǎn)動(dòng)組合而成原狀態(tài)時(shí),為單位轉(zhuǎn)動(dòng),所以存在左恒元。
4.存在左逆元:若一轉(zhuǎn)動(dòng)表示為,
, , 則
故逆元存在。
即證明,由魔方所有轉(zhuǎn)動(dòng)生成的集合,以合成作為運(yùn)算,構(gòu)成一個(gè)群,稱為魔方群。
我們這里建立的魔方群,表示的是魔方的轉(zhuǎn)動(dòng)的描述,那有沒(méi)有辦法描述出魔方的狀態(tài)呢?
三階魔方的狀態(tài),由以下四個(gè)條件共同決定:
角塊的位置
角塊的方向
棱塊的位置
棱塊的方向
在這四個(gè)條件中,1和3比較方便定義的。因?yàn)榻菈K和棱塊在旋轉(zhuǎn)過(guò)程中只會(huì)一直呆在角塊和棱塊位置,所以我們可以用置換群來(lái)定義:
置換群是指n個(gè)客體排列次序的變換,n個(gè)客體的n!個(gè)置換的集合滿足群的四個(gè)條件,構(gòu)成群,稱為n個(gè)客體置換群,記作Sn。
G是魔方群,SV是角塊在G作用下的置換群,SE是棱塊在G作用下的置換群。定義與g相對(duì)應(yīng)的角塊置換σ和棱塊置換τ如下
這樣,角塊的位置可以用S8中的元素表示,棱塊的位置可以用S12中的元素表示。
要表述角塊和棱塊的方向,我們還要約定一種指向特定面的字母表示法。用小寫(xiě)的u, d, f, b, l, r表示各面;用兩個(gè)方位字母確認(rèn)棱塊,排在首位的字母為指向的面,如db表示d(下)面b(后)方位的小面;用三個(gè)方位字母確認(rèn)角塊,如ufl表示u(上)面fl(前左)方位的小面。
從角塊開(kāi)始,在每個(gè)角塊朝上/下的一面上標(biāo)記一個(gè)數(shù)字:
在u面上的ufl小面上標(biāo)記1
在u面上的urf小面上標(biāo)記2
在u面上的ubr小面上標(biāo)記3
在u面上的ulb小面上標(biāo)記4
在d面上的dbl小面上標(biāo)記5
在d面上的dlf小面上標(biāo)記6
在d面上的dfr小面上標(biāo)記7
在d面上的drb小面上標(biāo)記8
在這一步被標(biāo)記的小面稱為標(biāo)準(zhǔn)面,用以決定角塊的方向。下一步,在標(biāo)有序號(hào)的這些小面上再標(biāo)記0,然后順時(shí)針旋轉(zhuǎn),在角塊的另外兩面上依次標(biāo)記1和2 。
在以上標(biāo)記下,就可以定義角塊的方向了,用ν=(ν1,ν2,...,ν8)表示角塊的方向,其中νi表示第i個(gè)角塊標(biāo)準(zhǔn)面上的數(shù)字,也可以認(rèn)為是順時(shí)針旋轉(zhuǎn)該角塊,使其標(biāo)記為0的面與標(biāo)準(zhǔn)面重合所需要的次數(shù),ν滿足
類似地,可以定義棱塊的方向,在每個(gè)棱塊朝上/下/前/后的一面上標(biāo)記一個(gè)數(shù)字:
在u面上的ub小面上標(biāo)記1
在u面上的ur小面上標(biāo)記2
在u面上的uf小面上標(biāo)記3
在u面上的ul小面上標(biāo)記4
在b面上的bl小面上標(biāo)記5
在b面上的br小面上標(biāo)記6
在f面上的fr小面上標(biāo)記7
在f面上的fl小面上標(biāo)記8
在d面上的db小面上標(biāo)記9
在d面上的dr小面上標(biāo)記10
在d面上的df小面上標(biāo)記11
在d面上的dl小面上標(biāo)記12
在標(biāo)記有序號(hào)的這些小面上再標(biāo)記0,然后在棱塊的另一面上標(biāo)記1。
用ω=(ω1,ω2,...,ω12)表示邊塊的方向,其中ωj表示第j個(gè)邊塊標(biāo)準(zhǔn)面上的數(shù)字,ω滿足
設(shè)ν(g)和ω(g)分別表示g作用后的角塊方向和邊塊方向,舉例而言,對(duì)于R即右面轉(zhuǎn)動(dòng)90度,左面的角塊沒(méi)有發(fā)生變化,因此ν1=0,ν4=0,ν5=0,ν6=0;右邊的角塊發(fā)生了變化,有ν2=1,ν3=2,ν7=2,ν8=1,于是ν(R)=(0,1,2,0,0,0,2,1),即表示出了角塊的方向。
經(jīng)過(guò)上面的定義,任何魔方的狀態(tài)就可以用這四個(gè)量來(lái)確定了。
角塊的位置:σ ∈ S8
角塊的方向:ν=(ν1,ν2,...,ν8)
棱塊的位置:τ ∈ S12
棱塊的方向:ω=(ω1,ω2,...,ω12)
即魔方群
當(dāng)然,表述魔方群的方法遠(yuǎn)遠(yuǎn)不止這一種,期待著大家用更多的方法更巧妙地將魔方納入數(shù)學(xué)體系中~
魔方機(jī)器人的復(fù)原
當(dāng)我們已經(jīng)了解了如何用群論表達(dá)魔方之后,我們?cè)倩貋?lái)看看機(jī)器人——它是怎么復(fù)原魔方的?
在前面列舉的復(fù)原魔方方法,都是根據(jù)人的直觀感覺(jué)來(lái)進(jìn)行策略,而機(jī)器人策略則完全不符合人的直覺(jué),對(duì)他們而言,步驟更少的方法才是最佳選擇。
01
TM算法(Thislethwaite Method)
TM算法的策略是通過(guò)逐步降低魔方所處的群到更小的子群,使得魔方的狀態(tài)數(shù)減小,直到最后的單位子群,就復(fù)原了魔方。所以利用TM算法復(fù)原魔方的每一步來(lái)看,魔方都是很亂的,但魔方的狀態(tài)數(shù)是隨著群的減小而在逐漸減小的。
TM算法對(duì)于公式的記憶和判斷要求非常高,人手利用TM算法復(fù)原魔方是非常困難的,但計(jì)算機(jī)強(qiáng)大的運(yùn)算能力使TM算法成為可能,對(duì)于計(jì)算機(jī)而言它也是步驟更少的優(yōu)選。
TM算法降解子群的四個(gè)步驟
TM算法每個(gè)步驟的魔方狀態(tài)
02
Kociemba算法(二階段算法)
這是當(dāng)前最主流的計(jì)算機(jī)解魔方算法,該算法平均可以在幾毫秒的時(shí)間內(nèi)得到一個(gè)不超過(guò)20步的解法。
該方法將魔方的復(fù)原過(guò)程分成了兩個(gè)階段,第一個(gè)階段是將亂序魔方轉(zhuǎn)動(dòng)成一個(gè)子群內(nèi)的狀態(tài),這個(gè)子群表示為G1=;第二階段則是復(fù)原這個(gè)子群G1中的魔方。算法將會(huì)搜索這兩個(gè)階段分別需要的步數(shù)和總步數(shù),并輸出最短總步數(shù)的解進(jìn)行復(fù)原。
Kociemba算法解上述魔方的過(guò)程
計(jì)算機(jī)的解魔方方法,大大降低了還原的步驟。
計(jì)算機(jī)解魔方時(shí)間對(duì)比
半個(gè)世紀(jì)過(guò)去,魔方已從Rubik手中的教具,變成了世界各地孩子、長(zhǎng)不大的孩子、計(jì)算機(jī)幼體的探索和快樂(lè)。
如果你還未學(xué)會(huì)復(fù)原,何不嘗試著趁現(xiàn)在重拾童心呢?
如果你已經(jīng)是大佬了,何不嘗試著提升一下sub呢
參考資料
[1] https://zhuanlan.zhihu.com/p/348865035
[2] https://www.worldcubeassociation.org/
[3] https://zhuanlan.zhihu.com/p/35339755
[4] https://www.jaapsch.net/puzzles/
[5] https://zhuanlan.zhihu.com/p/138559685
[6] http://www.rubik.com.cn/notation.htm
[7]梁小龍.解魔方算法的研究和系統(tǒng)實(shí)現(xiàn)[D].東北大學(xué),2013.
[8]李文超.面向多階魔方的智能還原機(jī)器人算法設(shè)計(jì)與實(shí)驗(yàn)研究[D].燕山大學(xué),2023.
[9]向臘.魔方機(jī)器人控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].湖南大學(xué),2016.
[10]喻騰飛.魔方群的研究[D].中國(guó)科學(xué)技術(shù)大學(xué),2014.
[11]朱磊.群論在魔方中的應(yīng)用[D].蘇州大學(xué),2008.
[12]譚水生.解三階魔方智能機(jī)器人系統(tǒng)的設(shè)計(jì)與研究[D].五邑大學(xué),2020.
[13]https://people.math.harvard.edu/~jjchen/docs/Group%20Theory%20and%20the%20Rubik%27s%20Cube.pdf
編輯:花卷
1.2.
3.
4.
5.
6.
7.
8.
9.
10.
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.