(这是一篇关于数学的科普文,我保证任何一个具有初中数学知识的人都能看懂,只是可能需要费一点脑筋。)
1.
若要比较一个班上男生女生的人数多少,最直接的办法,当然是数出男女生各自有多少人,然后比较数字即可;但也有一种间接的做法,即把男生女生一 一配对,最后哪方有剩余,就表明哪方的人多了。
这后一种方法看上去挺傻,而且引人遐想。但如果男女生各有无穷多人呢?要知道,人数为无穷多时,已无法数出各自有多少人。那这后一种方法,似乎倒成了唯一可行的方法了。
这正是19世纪的数学家康托尔所考虑的方法,他打算以这种一 一对应的方式比较两个无穷集合的大小。当时没有多少人为这个问题操心,一般的看法是:“既然已经是无穷大了,比较两个无穷的大小还有意义吗?”
但康托尔却坚信这问题是很有意义的,也正是通过他的探索,实数轴的一些惊人的性质展现了出来。
先从最简单的开始:奇数集{1,3,5,……}和偶数集{2,4,6,……},这两个集合间显然能建立起一 一对应:(1,2),(3,4),(5,6)……所以这两个无穷集合是一样大的。
那么,正整数集{1,2,3,4,……}与偶数集{2,4,6,8,……}呢?从直觉来看,偶数集是正整数集的一个部分,那么偶数集就该比正整数集小。然而,我们这里的直觉来自我们对有限集合的考察,事实上,涉及到无穷集合时,人的直觉是往往会犯错的。
由于正整数集的每个元素乘以2后就是偶数集的相应元素,所以两个集合的元素间存在一 一对应。因此,正整数集和它的子集偶数集是一样大的。
是时候引入一些严格的术语了。集合中元素的个数叫做该集合的势,两个集合一样大意味着它们是等势的集合。正整数集和偶数集有相同的势,这个势记作
ℵ₀,读作“阿列夫零”。
一切势为ℵ₀的集合,叫做“可数集”。为什么称其为“可数”呢?因为对于这样的无穷集合,你可以对其中的每个元素进行编号,标为a1,a2,a3,…an(实际上也就是建立了它和正整数集合的一 一对应)。这个无穷集合里的元素可以这样一个个地数下去,所以该集合被称为可数集。
偶数集是正整数集的一个子集,而两者是等势的。同样的,正整数集是有理数集的一个子集,两者是否是等势的呢?
可以证明结论是成立的。具体过程我就不写了,直接用网上找的一张图来说明思路:
证明一个无穷集合为可数集的关键,在于寻找一种方法来给这集合中的每个元素编号。上图中就是一种编号的方法。
先把所有有理数写成分数的形式。再按分子与分母之和的不同,把这些有理数归到不同的类。比如1/2与2/1,分子与分母之和都为3,所以它们是同一类。1/3,2/2,3/1,分子与分母之和都为4,所以它们是另一类。这样就可以给每个元素编号了:
a1=0
a2=1/1
a31=1/2,a32=2/1
a41=1/3,a42=2/2,a43=3/1
……
因为所有有理数,都可以这样被编号,所以有理数是可数集。
我们知道,有理数在实数轴上是处处稠密的,也就是说,在两个有理数之间,总还存在别的有理数,不管它们靠得多近。(这只需注意到,若a,b为有理数,则(a+b)/2也为有理数,且(a+b)/2在a和b之间。)
但整数并非处处稠密的。直觉上看,处处稠密的有理数应该比看似更加稀疏的整数更多,然而,它们却有相等的势,这是实数轴上,第一个反直觉的结论。
2.
前面论证了,偶数、整数、有理数,它们都是可数集,都有相同的势ℵ₀。那么,有理数作为实数的子集,实数是否也是可数集呢?
康托尔证明了,实数不是可数集。这就是他著名的“对角线证明”。有人说,不知道“对角线证明”相当于没有学过“实变函数”。可见其重要性。还好,这个证明本身并不难理解。
康托尔采用的是反证法(很多巧妙的证明都用的是反证法),他先假设区间(0,1)上的实数是可数的,然后构造了一个矛盾,从而推翻了原假设。具体地讲,康托尔是这么做的:
如果(0,1)上的实数是可数的,那么就存在一种给(0,1)上所有实数编号的方法,比如,在该方法下列出的所有(0,1)上的实数如下:
数1, .34538294305……
数2, .21248392843……
数3, .29483213447……
数4, .57490000000……
数5, .78759237382……
数6, .00000000100……
……
康托尔接下来打算构造一个实数,该实数位于(0,1)区间,却不在上面的队列中。于是就可以推出矛盾了。
怎么构造呢?康托尔先取出第1个数的小数点后第1位,第2个数的小数点后第2位,第3个数的小数点后第3位,……第N个数的小数点后第N位,……然后将取出来的部分相加得到一个新的数:
.314990……
再把这个新的数的小数点后每一位都加1(其实加2,加3都可以,关键是要产生不同),如果某一位是9,加1后就写成0,不用考虑进位。这样产生的最终数X为:
0.425001……
接着,康托尔声称,构造出的最终数X不在上面的数列中。这是因为,X的第1位和数列中第1个数的第1位不同,所以X和第1个数不同;同样的,X的第2位和数列中第2个数的第2位不同,所以X和第2个数不同;一般的,X的第N位和数列中第N个数的第N位不同,所以X和第N个数不同。
于是我们就证明了,X和数列中的任意一个数都不同。但最初的假设中宣称该数列中包含了(0,1)上的所有实数。
X是实数,在(0,1)上,却不包含在该数列中。于是产生矛盾。这说明最早的假设“(0,1)上的实数是可数的”是错的,所以(0,1)上的实数是不可数的。
这结论可以很方便地推广到整个实数域,即,实数是不可数的。
证明过程中,康托尔选取数的轨迹恰如一条斜向下的对角线,所以这个证明方法被称为“对角线证明”。
实数是不可数的,意味着实数的势比有理数的势更大。但具体大多少呢?
我们先考虑一个集合所拥有的子集的个数。
比如集合{0,1},它拥有空集,{0},{1},{0,1} 4 个子集。集合{0,1,2},它拥有空集,{0},{1},{2},{0,1},{0,2},{1,2},{0,1,2} 8 个子集。一般的,若一个集合含有X个元素,则它的子集个数为2^X个。同样的,若一个无穷集合的势为
ℵ₀,则它的所有子集的势为2^ℵ₀。
而下面我们要证明,实数集的势就为2^ℵ₀。
我们先把正整数一个个写出来,写成一行:
1 2 3 4 5 6 7 8 9 10 11 12…………
再写出一些(0,1)上的实数的二进制形式:
.0 0 1 1 0 0 0……
.1 0 1 0 1 0 0……
这些二进制实数可以这样理解它的含义,若第N位为1,表明选取了正整数集中的第N个元素;如果为0,则表明没有选取。所以,(0,1)上的二进制实数,它的小数点后的每一位,都对应着正整数集中各个相应元素的取舍。也就是说,它恰好对应正整数集的某个子集,即:
.0 0 1 1 0 0 0…… 对应{3,4}
.1 0 1 0 1 0 0 …… 对应{1,3,5}
于是,正整数的每个子集都可以对应到某个(0,1)上的二进制实数,同时每个(0,1)上的二进制实数都可以对应到正整数的某个子集。于是,建立起了(0,1)上的实数和正整数的子集之间的一一对应。
又因为正整数是可数集,它的势为ℵ₀,而正整数的子集的势为2^ℵ₀。所以(0,1)上的实数的势也为2^ℵ₀。
而(0,1)上的实数又可以和整个实数建立一 一对应(对这个的证明我就不写了),所以整个实数的势也为2^ℵ₀。
那2^ℵ₀比ℵ₀大多少?这个没法直接算,因为ℵ₀是个超穷数。但你可以以一个正整数为例来感受一下,比如2^35比35大多少(2^35=34 359 738 368)。
这就是实数轴第二个反直觉的地方了。我们知道在实数轴的每一个区间内,都包含着无穷多的有理数。好像有理数已经把实数轴填满了。然而,一旦我们把实数轴上的无理数抽走,只留下有理数,这就好像把整个沙漠拿走,只留下一粒沙。
3.
人们对实数的认识还在不断加深。1937年,艾伦·图灵提出了“可计算数”的概念。所谓“可计算数”,是指对于某个数,如果存在某个算法,通过该算法可以计算出这个数的任意位数,我们就称这个数是可计算的。比如圆周率π,它是无理数,也是超越数,但有算法可以计算出它的任意位数,所以它是可计算的。
与“可计算数”对应的,也就是“不可计算数”,对于“不可计算数”,就不存在某种可以将其计算到任意精度的算法。
图灵证明了每个可计算数都与一个“图灵机”相对应,而“图灵机”是可数的,所以可计算数也是可数的。
也就是说,可计算数,尽管包含了所有有理数,无理数中的所有代数数和部分超越数(如π、e),但可计算数的势仍然只是ℵ₀。在实数轴上,可计算数与有理数一样,仍然只是沙漠中的一粒沙。
实数轴,看上去平平无奇,似乎轴上的数字都是我们可以掌控的。但图灵告诉我们,这条轴上的几乎所有数字,都是无法精确计算的。这是实数轴第三个反直觉的地方。
4.
关于实数轴的这些反直觉的事实,究竟是只存在于数学观念中的怪兽,还是现实世界的某种真实写照呢?如果是后者,那么这些事实就似乎带有这样一种意味:我们的世界,表面看来充满了秩序和确定性,但在这秩序和确定性的背后,却是广阔无边的混乱和不确定性。
事实是否如此?只有等科学的发展给出答案了。