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