Banach-Tarski悖论指出,你可以把一个三维球体分割成有限多份,然后拼合成两个和原来一模一样的球体。这个构造是Stefan Banach和Alfred Tarski在1924年发表的论文中给出的,不过我还从来没有完整地瞻仰过这个牛B的构造过程。今天我看到了一个Banach-Tarski悖论的弱化版,但它的反直觉性绝对不亚于Banach-Tarski悖论。通过这个弱化的结论,你或许会对Banach和Tarski的构造方法有了更多的理解。
下面我将会给出这样一个神奇的构造:取出[0,2]的一个子集S,把它分割为可数个不相交的点集,对每个点集各自进行适当的平移后,可以让它们的并集变为全体实数集。
集合
证明集合可数的简便方法
在集合论中,一个重要的概念就是集合的可数性。我们说一个集合是可数的,如果这个集合内的元素能够与自然数集N建立一一对应的关系。换句话说,我们能够给这个集合里的所有元素按次序排好,能够以某种顺序为所有元素进行编号。在这里,我们看到了两个重要的结论:全体有理数集合是可数的,以及全体实数集合是不可数的。在证明全体有理数可数时,我们用到的方法通常是当年Cantor所用的对角线方法。不过,事实上我们还有一个更简便的方法。在证明一个集合可数时,我们只需要建立一个映射到自然数集N的函数,使得每个自然数的原像都只有有限个即可。这样的话,我们便可以从小到大考虑自然数集中的每个元素,列举出它所对应的原像,从而得到原集合的一种编号次序。
例如,欲证明全体整数是可数的,只需要考虑函数f(x)=|x|,这是一个从全体整数到自然数的函数,并且每个自然数最多只有两个原像。这样的话,我们便可以立即说明全体整数是可数的。类似地,为了说明全体有理数也是可数的,只需要令函数f(p/q)=|p|+|q|。显然分子分母的绝对值和为某一指定自然数的只有有限多种情况。
趣题:对全体正整数红蓝二着色使之不含单色无穷等差数列
你认为,是否有可能把全体正整数染成红蓝二色,使得不存在无穷等差数列,数列中的所有数都是一种颜色?如果你认为存在这样的染色方案,请给出一个构造方法;如果你认为不存在,证明之。在看下面的答案之前,不妨先仔细思考一下。
事实上,满足题意的染色方案是存在的,构造方法非常简单,非常直接,非常暴力。显然,无穷等差数列只有可数个,不妨把它们分别叫做A_1, A_2, A_3, …。现在,如果我们能够构造两个数列r_1, r_2, r_3, …和b_1, b_2, b_3…,使得对于每一个i,r_i和b_i都在数列A_i中,并且r数列中的每个数都和b数列中的所有数都不相同。这样,把r数列中的所有数染成红色,把b数列中的所有数染成蓝色(其它未出现的数随意染色),就能保证每个无穷等差数列都包含了至少两种颜色。
而这样的r数列和b数列显然存在,因为每一次选择新的r_i和b_i时,无穷数列A_i中都只有有限个数不能选,因此r_i和b_i永远都有选的。
Update: 地基层网友给出了一个更巧妙、更简单的构造方法:对全体正整数倍长间隔染色,即把1染成红色,2和3染成蓝色,4到7染成红色,8到15染成蓝色……。显然,当染色区间的长度大于公差时,等差数列最终都将一截一截地落在不同的染色区间中。
经典证明:素数无穷多的拓扑学证明
去年就看过Proofs from THE BOOK第一章中的素数无穷多的拓扑学证明,不过当时似乎并没有看懂。今天看到cut-the-knot的一篇新文章,又把Proofs from THE BOOK拿出来翻了一下,终于看明白了,果然是一个令人拍案叫绝的经典证明,可谓又一神来之笔。
定义N(a,b) = {a + nb| n∈Z},例如N(1,3)就等于{…, -5, -2, 1, 4, 7, …}。每一个N(a,b)实质上都是一个以b为公差的“双向无限等差数列”。我们说整数集Z上的一个子集S是开的,如果集合S为空,或者对于任意一个a∈S,总能找到一个b>0使得N(a,b)⊆S。形象地说,开集的意思就是,集合中的每一个元素都能在集合内扩展出一个无限长的双向等差数列。我们又称一个集合S是闭的,如果它是某个开集的补集。
显然,有限个开集的并集仍然是开集。
假设S_1和S_2都是开集,如果a∈S_1∩S_2,并且N(a,b1)⊆S_1,N(a,b2)⊆S_2,那么S_1∩S_2中有一个公差为b1*b2的含a的双向无限等差数列,也即a∈N(a, b1*b2)⊆S_1∩S_2。这说明,有限个开集的交集仍然是开集。
再假设C_1和C_2都是闭集。由De Morgan定律,C_1和C_2的并集就相等于它们各自的补集相交后再取补集,由定义可知它们的补集都是开集,而由上面的结论可知开集的交集仍是开集。于是,C_1和C_2的并集是某个开集的补集,这说明闭集的并仍然是闭集。类似地,闭集的交集相当于补集的并集的补集,它也仍然是闭的。
还有两点值得引起我们注意:
1. 任意非空开集都是无穷的。这由定义可以直接看出来。
2. 任一双向无限等差数列N(a,b)既是开集又是闭集。由定义可知N(a,b)是开集,而同时N(a,b)又可以看作是N(a+1,b)∪N(a+2,b)∪N(a+3,b)∪…∪N(a+b-1,b)的补集,这是有限个开集的并集的补集,说明N(a,b)也是闭集。
再谈稠密性:令人吃惊的稠密集及其交集
对于数轴上的一个点集,如果说在集合中任意两点之间都能够找到该集合中的另一个点,我们就说该点集处处稠密。例如,全体有理数集合就是稠密的,任意接近的两个有理数之间都存在其它的有理数(比如它们的算术平均值)。这样看来,两个处处稠密的点集似乎是不能共存的,但实际情况并非如此。我们将会看到越来越牛B的例子,它们将让我们对稠密性有一个全新的认识。
1. 在数轴上找出两个处处稠密的点集,它们互不相交。
很简单。全体有理数和全体无理数就是满足条件的两个集合。
2. 在数轴上找出两个处处稠密的不可数点集,它们互不相交。
很狡猾。集合A取全体正有理数和全体负无理数的并集,集合B取全体正无理数和全体负有理数的并集,这两个集合即可满足条件。
3. 在数轴上找出无穷多个处处稠密的点集,它们两两不相交。
令P_i表示第i个素数。则集合S_i := { √P_i + r| r为有理数 }满足条件。为了证明它们两两不相交,假设r_1 + √P_m = r_2 + √P_n,于是(r_1 – r_2)^2 = (√P_n – √P_m)^2,可得√P_m * P_n = ( P_m + P_n – ((r_1 – r_2)^2) )/2。两个素数的乘积的平方根是一个有理数,这显然是荒谬的(很多证明根号2是无理数的方法都可以证实这一点,例如这里的证法http://www.matrix67.com/blog/archives/206)。