什么是上帝之数?——隐藏在魔方后面的秘密
魔方被发明以来,人们一直在探求如何更快地解开魔方的方法。三阶魔方吸引人的地方在于他可以被随意打乱,而且打乱的颜色组合数量非常惊人,虽然魔方只有6个面,每个面9个色块,但却可以打乱成多达4325亿亿种组合。这是个什么概念?如果一个人不眠不休地想要尝试所有的组合,假设每秒钟可以转出10种与其他完全不一样的组合(which is impossible by the way...),也要花大概1380亿年才能转完(据天文学家估算,整个宇宙的年龄大约是136~138亿年)。
也正是魔方的变化组合极其丰富,勾引起人们把它解开的好奇心。魔方的爱好者们通过举办世界大赛去寻找最快还原的选手,并不停地刷新世界纪录。截止至本文编辑时,世界纪录为 POPS 2016魔方公开赛上由澳大利亚选手 Feliks Zemdegs 创造,单次最快时间为 4.73秒。

打乱:U’ L2 U B2 U’ L2 D L’ D’ R’ U F B’ R’ F2 D2 R D R’
[
他解开的方法为 CFOP 解法:
观察:y’ z
Corss:U’ R F R’ D
F2L (1&2):U’ L’ U2 L2 U’ L’
F2L (3):U R’ U R R’ U R U R’ U’ R
OLL:F R U’ R’ U’ R U R’ F’
PLL:R U’ R U R U R U’ R’ U’ R2 U
平均步数43步/4.737s = 9.077 步 / 秒
]
大神们双手灵巧且解魔方的速度令我们震惊之余甚至开始怀疑人生,但我们也由此发现大神们的平均步数需要40+步,是采用更易于人脑记忆和手部动作形成条件反射的CFOP算法;那么除了CFOP以外,是否有更少步数的解呢?到底最少转多少步才能还原任意一个魔方呢?这个问题引起很多魔方爱好者的关注,特别是数学家们。
可是 4325亿亿 毕竟是个令人生畏的天文数字,我们即便是用上现代强大的超级计算机来穷举所有的组合的最少步数解法,估计终其一生也没有机会看到结果。数学家们称这个最少的转动次数为 “上帝之数” (God's Number);因为只有无所不知的上帝才能知道这天文数字级别的答案。事实上,科学家们为了寻求这个答案,足足花了数十年的时间。
对于这么个庞大的组合,明显靠穷举法是走不通的,我们必须要通过更巧妙的方法来达到目标。对此,我们求助于强大的数学工具——群伦(Group theory)。他可以充分地对付魔方的对称性。我们提到魔方可以产生 4325 亿亿种组合,但其实实际上,由于魔方具有对称性,当中很多种组合实际上是完全相同的,仅仅是通过不同的角度去观察,因此我们可以通过此法来降低组合数量。这些对称相同的状态,大概占据了接近99%的比例,因此仅通过对称性的研究,就可以把魔方的组合数目降低两个数量级。但是由于基数过于庞大,即使后面减掉2个0,仍然有数十亿亿种组合,依然是天文数字级别的壮举。
寻找上帝之数大事记
1981年7月,当时在伦敦南岸大学的数学家 Morwen Thistlethwaite 提出了一种将魔方分割成4个步骤还原的方法,被称为Thistlethwaite 算法 证明了任意一个颜色组合的三阶魔方,最多不超过 52 步即可还原。
1990年12月,Hans Kloosterman 将这个数字降低至42步。
1992年5月,Michael Reid 证明39步已足够了。
1992年5月,第二天,Dik Winter 将这个数字降低至37步。
1995年1月,Michael Reid 研究 Kociemba 的 Two-Phase algorithm 后,提出29步即可还原所有魔方。同时,他证明了一种叫 “superflip” 的状态(角块的位置全对,棱块的位置也对但刚好反转的状态),需要至少20步才能还原。由此,他们开始猜想上帝之数是不是刚好就是20呢?

2005年12月,Silviu Radu 表示 28步即可对付所有情况。
2006年4月, Silviu Radu 将他的结果继续推进到27步。
2007年5月,Dan Kunkle 和 Gene Cooperman 证明 26步足以。
2008年3月,Tomas Rokicki 将上限继续砍到25步。
2008年4月,Tomas Rokicki 和 John Welborn 一起将这个数字降低到23步。
2008年8月,Tomas Rokicki 和 John Welborn 继续将这个数字压榨至22步。
2010年7月,Tomas Rokicki, Herbert Kociemba, Morley Davidson, 和John Dethridge 最终证明,这个上帝之数正好就是20。
43,252,003,274,489,856,000 种组合如何被解开?
他们首先把全部组合分解为 2,217,093,120个集合,每个集合包含19,508,428,800种状态。
通过对称性和集合覆盖,他们将集合的数量降低至55,882,296个。
他们并没有找到每种状态下的最少步数,但是他们找到每个状态对应的≤20步的解法。
他们为此写了一个大约20秒可以解决一个集合的程序。
最终由Google捐赠出空闲的计算机集群资源帮助团队实现解算,大约花了 35个CPU年(现实中数周的时间),解开了 55,882,296个集合。
Google并没有给出他们的电脑系统的详细信息,但是作为比较,他们给出了如果用当年比较好配置的个人PC(Intel Nehalem, 四核, 2.8GHz),大概需要35年才能完成这个计算量。





