数学之美不但体现在漂亮的结论和精妙的证明上,那些尚未解决的数学问题也有让人神魂颠倒的魅力。和 Goldbach 猜想、 Riemann 假设不同,有些悬而未解的问题趣味性很强,"数学性"非常弱,乍看上去并没有触及深刻的数学理论,似乎是一道可以被瞬间秒杀的数学趣题,让数学爱好者们"不找到一个巧解就不爽";但令人称奇的是,它们的困难程度却不亚于那些著名的数学猜想,这或许比各个领域中艰深的数学难题更折磨人吧。
作为一本数学趣题集, Mathematical Puzzles 一书中竟把仍未解决的数学趣题单独列为一章,可见这些问题有多么令人着迷。我从这一章里挑选了一些问题,在这里和大家分享一下。这本书是 04 年出版的,书里提到的一些"最新进展"其实已经不是最新的了;不过我也没有仔细考察每个问题当前的进展,因此本文的信息并不保证是 100% 准确的,在此向读者们表示歉意。
这篇文章很长,大家不妨用自己喜欢的方式马克一下,一天读一点。
天使和恶魔
天使和恶魔在一个无限大的棋盘上玩游戏。每一次,恶魔可以挖掉棋盘上的任意一个格子,天使则可以在棋盘上飞行 1000 步之后落地;如果天使落在了一个被挖掉的格子上,天使就输了。
问题:恶魔能否困住天使(在天使周围挖一圈厚度 1000 的坑)?
这是 Conway 大牛的又一个经典谜题。经常阅读这个 Blog 的人会发现, Conway 大牛的出镜率极高。不过这一次,Conway 真的是伤透了不少数学家的脑筋。作为一个很"正常"的组合游戏,天使与恶魔的问题竟然一直没能得到解决。目前已经有的结论是,如果天使每次只能移动一步,恶魔一定能获胜。不过,天使只要能每次飞两步,似乎就已经很无敌了。当然,魔鬼的优势也不小——它不用担心自己"走错",每多挖一个坑对于它来说都是有利的。
话说回来, Conway 本人似乎仍然相信天使能赢——他悬赏了 1000 美元征求恶魔必胜的证明,但只悬赏了 100 美元征求天使必胜的证明。一些更详细的讨论可以见这里。
Update: 网友 yllan 评论到,这个问题已经被解开了,n ≥ 2 时天使贏。 详见 这里。
3x + 1 问题
从任意一个正整数开始,重复对其进行下面的操作:如果这个数是偶数,把它除以 2 ;如果这个数是奇数,则把它扩大到原来的 3 倍后再加 1 。序列是否最终总会变成 4, 2, 1, 4, 2, 1, … 的循环?
这个问题可以说是一个"坑"——乍看之下,问题非常简单,突破口很多,于是数学家们纷纷往里面跳;殊不知进去容易出去难,不少数学家到死都没把这个问题搞出来。已经中招的数学家不计其数,这可以从 3x + 1 问题的各种别名看出来: 3x + 1 问题又叫 Collatz 猜想、 Syracuse 问题、 Kakutani 问题、 Hasse 算法、 Ulam 问题等等。后来,由于命名争议太大,干脆让谁都不沾光,直接叫做 3x + 1 问题算了。
3x + 1 问题不是一般的困难。这里举一个例子来说明数列收敛有多么没规律。从 26 开始算起, 10 步就掉入了"421 陷阱":
26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, …
但是,从 27 开始算起,数字会一路飙升到几千多,你很可能会一度认为它脱离了"421 陷阱";但是,经过上百步运算后,它还是跌了回来:
27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, …
随机 01 串的最长公共子序列
如果从数字序列 A 中删除一些数字就能得到数字序列 B ,我们就说 B 是 A 的子序列。例如, 110 是 010010 的子序列,但不是 001011 的子序列。两个序列的"公共子序列"有很多,其中最长的那个就叫做"最长公共子序列"。
随机产生两个长度为 n 的 01 序列,其中数字 1 出现的概率是 p ,数字 0 出现的概率是 1 - p 。用 Cp(n) 来表示它们的最长公共子序列的长度,用 Cp 来表示 Cp(n) / n 的极限值。
关于 Cp 的存在性,有一个非常巧妙的证明;然而,这个证明仅仅说明了 Cp 的存在性,它完全没有给计算 Cp 带来任何有用的提示。
即使是 C1/2 的值,也没人能成功算出来。 Michael Steele 猜想 C1/2 = 2/(1 + √2) ≈ 0.828427 。后来, V. Chvátal 和 D. sankoff 证明了 0.773911 < C1/2 < 0.837623 ,看上去 Michael Steele 的猜想似乎很可能是对的。 2003 年, George Lueker 证明了 0.7880 < C1/2 < 0.8263 ,推翻了 Michael Steele 的猜想。
更糟的是,"当 p 为 1/2 时 Cp 达到最小"似乎是一件很靠谱的事,但这个结论也无人能证明。
曲线的内接正方形
证明或推翻,在平面中的任意一条简单封闭曲线上,总能找到四个点,它们恰能组成一个正方形。
这样一个看上去如此基本的问题,竟然没有被解决!这个 Blog 上曾经证明过,任意凸多边形上总存在四个可以构成正方形的点;对证明方法进行改进,可以把结论扩展到凹多边形上。目前,对于充分光滑的曲线,似乎已经有了肯定的结论;但对于任意曲线来说,这仍然是一个悬而未解的问题。平面上的曲线无奇不有,说不准我们真能精心构造出一种不满足要求的怪异曲线。
环形跑道难题
有一个环形跑道,总长为 1 个单位。n 个人从跑道上的同一位置出发,沿着跑道顺时针一直跑下去。每个人的速度都是固定的,但不同人的速度不同。证明或推翻,对于每一个人,总会有一个时刻,他与其他所有人的距离都大于 1/n 。
乍看上去,这个问题无异于其它各种非常巧妙的初等组合数学问题,但不可思议的是,这个问题竟然直到现在仍没解决。目前最好的结果是,当 n ≤ 6 时,结论是成立的。直觉上,对于更大的 n ,结论也应该成立,不过尚未有人证明。
排序问题加强版
有 n 个盒子,从左至右依次编号为 1, 2, …, n 。第 1 个盒子里放两个编号为 n 的小球,第 2 个盒子里放两个编号为 n - 1的小球,以此类推,第 n 个盒子里放两个编号为 1 的小球。每一次,你可以在相邻两个盒子中各取一个小球,交换它们的位置。为了把所有小球放进正确的盒子里,最少需要几次交换?
为了说明这个问题背后的陷阱,我们不妨先拿 n = 5 的情况做个例子。首先,如果每个盒子里只有一个球,问题就变成了经典的排序问题了:只能交换相邻元素,如何最快地把 5, 4, 3, 2, 1 变成 1, 2, 3, 4, 5 ?如果一个数列中前面的某个数反而比后面的某个数大,我们就说这两个数是一个"逆序对"。显然,初始情况下所有数对都是逆序对,n = 5 时逆序对共有 10 个。我们的目的就是要把这个数目减少到 0 。而交换两个相邻的数只能消除一个逆序对,因此 10 次交换是必需的。
不过,题目里面每个盒子里有两个球,那么是不是必须要交换 20 次才行呢?错!下面这种做法可以奇迹版地在 15 步之内完成排序:
55, 44, 33, 22, 11
54, 54, 33, 22, 11
54, 43, 53, 22, 11
54, 43, 32, 52, 11
54, 43, 32, 21, 51
54, 43, 21, 32, 51
54, 31, 42, 32, 51
41, 53, 42, 32, 51
41, 32, 54, 32, 51
41, 32, 42, 53, 51
41, 32, 42, 31, 55
41, 32, 21, 43, 55
41, 21, 32, 43, 55
11, 42, 32, 43, 55
11, 22, 43, 43, 55
11, 22, 33, 44, 55
第一次看上去似乎很不可思议,但细想一下还是能想明白的:同一个盒子里能够放两个数,确实多了很多新的可能。如果左边盒子里的某个数比右边某个盒子里的数大,我们就说这两个数构成一个逆序对;但如果两个不同的数在同一个盒子里,我们就把它们视作半个逆序对。现在让我们来看看,一次交换最多能消除多少个逆序对。假设某一步交换把 ab, cd 变成了 ac, bd ,最好的情况就是 bc 这个逆序对彻底消除了,同时 ac 、 bd 两个逆序对消除了一半, ab 、 cd 两个(已经消除了一半的)逆序对也消除了一半,因此一次交换最多可以消除 3 个逆序对。由于一开始每个盒子里的两个相同的数都会在中间的某个时刻分开来,最后又会合并在一起,因此我们可以把初始时两个相同的数也当作一个逆序对。这样的话,初始时每两个数都是逆序对, n 个盒子里将产生 C(2n, 2)个逆序对。自然,我们至少需要 C(2n, 2) / 3 步才能完成排序。当 n = 5 时, C(2n, 2) / 3 = 15 ,这就说明了上面给出的 n = 5 的排序方案是最优的。
这个分析太巧妙了,实在是让人拍案叫绝。就只可惜,这个下界并不是总能达到的。当 n = 6 时,上述分析得出的下界是 22 步,但计算机穷举发现没有 23 步交换是不行的。于是,这个问题又变成了一个诱人的坑,至今仍未被填上。
多面体的展开
证明或推翻,总可以把一个凸多面体沿着棱剪开,展开成一个简单的平面多边形。
这是一个看上去很"自然"的问题,或许大家在玩弄各种纸制包装盒的时候,就已经思考过这个问题了。现在,人们已经找到了不满足条件的凹多面体,也就是说存在凹多面体使得无论怎样展开它都会不可避免地得到与自身重叠的平面多边形。同时,确实也存在一些凸多面体,按照某种方式展开它后,会得到与自身重叠的平面多边形。不过,对于某个凸多面体,任何一种方法都不能把它展开到一个平面上,这听上去似乎不大可能;然而,在数学上这一点却一直没被证明。
用平面镜拼成的多边形
证明或推翻,对于任意一个内壁全是镜面的多边形,总能在里面找到一个点,使得位于这个点的光源可以照亮整个多边形内部。
这是一个非常有创意的问题,只可惜问题最早的出处已经不得而之了。问题有趣就有趣在,"多边形"这个条件是必需的:如果允许有曲线的话,我们就能构造出一个由镜面构成的平面图形(左图),里面的每个点都不能照亮整个图形。
对于多边形的情况, 1995 年 Tokarsky 给出了一个 26 边形房间(右图),把光源放在其中一个点上,它将无法照到另一个点(假设顶点处不反射光线)。因此,问题就只剩下一个了:有没有什么多边形,任意位置的光源都无法照亮整个图形?
在与之相关的领域中,还有很多很帅的未解问题,大家可以参见这份 ppt 。
Thrackle 猜想
如果一个图中,每条边都与其它所有边相交恰好一次(顶点处相接也算相交),这个图就叫做一个 thrackle 。问,是否存在边数大于顶点数的 thrackle 图?
给你一次机会,让你猜猜这个猜想是谁提出来的!没错,又是 John Conway 。这明显又是一个坑,看到这个问题谁都想试试,然后就纷纷崩溃掉。 Conway 悬赏 1000 美元征解,可见这个问题有多么不容易。目前已知的最好的结果是,一个 thrackle 的边数不会超过顶点数的两倍减 3 。
遍历所有的"中间子集"
证明或推翻,你可以通过每次添加或者删除一个元素,遍历集合 {1, 2, …, 2n + 1} 的所有大小为 n 或 n + 1 的子集。
看完上面的这一行字,我可以想象你已经有一种克制不住的冲动,拿起铅笔、草稿纸和电脑,开始寻找 n 不大时的规律。这可以说是本文的所有问题中最大的一个坑了——这个问题极具诱惑性,每个人第一次看到这个问题时都会认为存在一种对所有 n 都适用的构造解,于是众人一个接一个地往坑里跳,拦都拦不住。
没有人认为这个猜想是错误的,简单的计算机枚举显示,随着 n 的增加,遍历这些子集的方案数不但也随之增加,而且增长得非常之快。到了某个 n ,方案数突然跌到了 0 ,这明显是一件极不可能发生的事。但是,几十年过去了,却没有人能够证明它!
关于 Venn 图
画惯了三个集合的 Venn 图,很多人都会认为,四个圈画成一朵花一样的形状就是四个集合的 Venn 图了。其实这是不对的——四个圆只能产生 14 个区域,而四个集合将会交出 16 种情况。如果把四个圆圈像中间那幅图一样排列,就少了两个区域:只属于左下角的圆和右上角的圆的区域,以及只属于左上角的圆和右下角的圆的区域。
那么,是不是四个集合的 Venn 图就没法画了呢?也不是。如果你不是一个完美主义者,你可以像右图那样,把三个集合的 Venn 图扩展到四个集合;虽然看上去非常不美观,但是站在拓扑的角度看上去,只要逻辑上正确无误,谁管它画得圆不圆呢。
大家会自然而然地想到一个问题:右边这个图是否还能继续扩展成五个集合的 Venn 图呢?更一般的,是否随便什么样的 n 个集合的 Venn 图都可以扩展到 n + 1 个集合呢?
令人难以置信的是,这个问题竟然还没被解决!事实上,对满足各种条件的 Venn 图的研究是一个经久不衰的话题,与 Venn 图相关的猜想绝不止这一个。
出现次数超过一半的元素
令 U 是一个有限集,S1 , S2 , … , Sn 都是 U 的非空子集,它们满足任意多个集合的并集仍然在这些集合里。证明,一定能找到某个元素,它出现在了至少一半的集合里。
不可思议,即使是最基本最离散的数学研究对象——有限集——里面,也有让人崩溃的未解问题。
1999 年, Piotr Wojcik 用一种非常巧妙的方法证明了,存在一个元素出现在了至少 n/log2n 的集合里。不过,这离目标还有很大一段距离。