魔方的歷史
魔方並不是某個玩具公司的企劃案。它出生在一間教室裡,一開始連發明者 自己都不確定它能不能轉回原狀。
從一張上課用的模型開始
1974 年,匈牙利建築學教授 Ernő Rubik 在布達佩斯應用藝術學院教書。 他想跟學生解釋一個聽起來不複雜、做起來卻很彆扭的問題:當你把一個 立方體切成 27 個小塊,旋轉其中某一面,每個小塊跟它的鄰居之間的 關係會怎麼變?
他想做的不是玩具,是建築課的教具。為了讓那 27 個小塊在轉動時不會 散開,他花了好幾個星期設計內部的卡榫結構——一組巧妙的軸與軌道, 讓任何一面都能旋轉,而其他塊不會掉出來。模型做完那天,他把六面 各塗上一種顏色、轉了幾下,然後愣住了:他自己不知道怎麼把它轉回去。
從教具到玩具
Rubik 在 1975 年申請了匈牙利專利,但真正進入市場是 1977 年—— 當時以 “Magic Cube”(Bűvös Kocka)的名字在匈牙利國內販售。 鐵幕之內的這顆方塊在歐美的玩具圈幾乎沒人聽過,直到 1979 年 匈牙利國家貿易公司 Konsumex 在紐倫堡玩具展上把它擺出來, 美國的 Ideal Toy Corp 注意到了。
Ideal 在 1980 年取得海外授權、把名字改成 Rubik’s Cube,丟進 全球市場。結果是 1980 到 1983 三年內賣出超過一億顆——這個數字 在玩具史上是少見的等級。隔幾年它退潮、收進二手玩具箱底;又隔幾年 新一代孩子發現它,再來一輪。
第一波速解風潮
熱潮帶動了競賽。1982 年第一屆世界錦標賽在布達佩斯舉行,當時十九歲 的越裔美國學生 Minh Thai 以 22.95 秒拿下冠軍。同一時期,業餘的 解法手冊開始在學生之間流通——層先法(layer-by-layer)這類入門 套路就是在這幾年定型,成為今天大多數人學會的第一套解法。
狀態空間有多大
魔方看起來只是一顆小玩意,但它能擺出來的合法狀態多到讓人發呆。 一顆 3×3 的合法狀態總數是:
8! × 3⁷ × 12! × 2¹¹ / 2 ≈ 4.325 × 10¹⁹
把它老老實實寫出來,是 43,252,003,274,489,856,000 種——四千三百多京。 要感覺這個量級有多離譜,可以這樣比:一顆標準魔方邊長 5.7 公分, 若把所有可能的狀態各做一顆、平鋪到整個地球表面(約 5.1 億平方公里), 要疊大約 17 萬層才放得完。
反過來說:你現在隨手亂轉一顆魔方,最後落到的那個狀態,幾乎百分百 是人類歷史上沒有人轉到過的——也包括你自己一分鐘前轉到的那一顆。
上帝之數
既然狀態這麼多,自然會冒出一個問題:在最壞的情況下,要幾步才能 把任何一顆魔方還原?這個「最壞情況下的最短步數」被稱為「上帝之數」 (God’s Number)——上帝因為什麼都知道,所以祂走的一定是最短的那條。
這個數的上限被一群數學家輪流壓縮了三十年。1981 年,英國數學家 Morwen Thistlethwaite 證明任意狀態最多 52 步可解。1990 年代到 2000 年代,這個上限被一次又一次往下壓:50、29、25、22—— 每次都靠新的群論技巧加上更聰明的搜尋。
最後的一拳在 2010 年落下。Tomas Rokicki、Morley Davidson、 John Dethridge、Herbert Kociemba 借用 Google 的機房,總共燒掉 約 35 CPU-year 的算力,把所有四千三百京個狀態的對稱類別逐一檢查, 證明上限正是 20。同時他們也找出了真的需要 20 步 才能解的狀態——例如知名的 superflip 配置——證明 20 這個數字 是緊的,不能再小。
Kociemba 的兩階段演算法
知道上帝之數是 20 是一回事,怎麼在一台筆電上即時找出 20 步解又是 另一回事。1992 年,德國數學家 Herbert Kociemba 提出了一個漂亮的 兩階段策略:先用一組受限的動作把狀態降到一個比較好處理的子群 G1(角塊與邊塊的「方向」都歸位、剩下只是位置問題),再從 G1 出發 把位置湊齊。
實務上,這個演算法可以在毫秒等級內產生 20 到 25 步的解,遠遠快過 對整個狀態空間做暴力搜尋。它直到今天還是大多數魔方求解程式的 骨幹。
回到 F1 Cube
F1 Cube 的「最速解」模式背後跑的是 cubejs——Kociemba 兩階段 演算法的 JavaScript 移植。你在瀏覽器裡看到的那條 20 步左右的 路徑,其實是三十多年群論研究的直接受益者。
想接著瞭解方塊本身的結構——什麼是角塊、邊塊、中心塊, 為什麼 R 跟 U 不一樣——可以接著看 魔方入門。