乔恩·克莱因伯格(Jon Kleinberg):康奈尔大学计算机科学系教授,合著有《网络、群体与市场》(Networks, Crowds, and Markets)。
数学中的某些事实,让人们觉得它内部蕴含着一种被抑制的力量,一开始,会觉得它们温良和顺,但一旦发挥作用,它们会让人眼花缭乱。其中最引人瞩目的例子就是鸽巢原理。
以下就是鸽巢原理的内容。假设一群鸽子栖息在一片树林中,鸽子的数目超过树木。当所有的鸽子落下来时,至少有一棵树上落了一只以上的鸽子。
这个故事听起来平淡无奇,因为鸽子数目众多,所以每只鸽子不可能都独占一棵树。如果这就是故事的结尾,它就不会如此有名了。要领会鸽巢原理,必须要看它能帮助我们解决什么问题。
接下来,让我们看看一个事例,该事例有些曲折。这句话本身就耐人寻味,但更耐人寻味的是它其中蕴含的鸽巢原理。该事例的内容是:在过去4 000年的某个时间段,在你的家谱中有过两个人,我们就叫他们A和B吧。A是B的父母的祖先。你的家谱图里有个回路,从B向上有两个分支,之后一起回到了A的身上。换而言之,因为有这个相对较近的共享祖先A,所以在你的祖先中会有一组父母,他们之间是有着血缘关系的亲属。
这里值得提及几件事。第一,在前面段落中的“你”就是真正的你,亲爱的读者。实际上,这件事有趣的特点之一就是,我能断言你和你的祖先,尽管你自己也未必清楚。第二,该论述不依赖任何关于人类进化或人类历史与地理范围的假设。以下是需要的几个假设:
1.每人都有自己的亲生父母。
2.百岁以后没有孩子。
3.人类至少存在了4 000年。
4.在过去4 000年里,至多有过10 000亿人生存过。(科学家的实际最佳估算是,有史以来大约有1 000亿人口,而我提高到10 000万亿只是为了安全起见。)
我们尽可能地使这4个假设不会引起争议,但即便是这样,第1个和第2个假设中仍然存有例外的情况,而且第4个假设有些过高估计,我们只要在论证过程中做些许调整就可以了。
现在,回到你和你祖先这个话题上。我们先来建立一个可以追溯到40代以前的家谱图:你、你的父母、你父母的父母,以次类推,倒推40个层级。由于每一代最多活100年,家谱图里所有的40代人都会在过去4 000年里出现。事实上,我们几乎可以肯定只需要往回追溯1 000年或1 200年就可以包含所有40代人的存在了,但为了保险起见,将时间增加为4 000年。
我们完全可以把你的家谱图视为一种组织机构图,上面列出了一堆需要人们填满的工作或角色。这就是说,依据这张家谱图,追根溯源,需要有人是你的母亲,有人是你的父亲,有人是你母亲的父亲,以此类推。我们把每一个这样的角色称为“祖先角色”,这个“工作”存在于你的祖先辈上,我们可以先谈论一下这份“工作”,先不着急把这个空缺填补上。在你的家谱图上,第一代包括两位祖先的角色,就是你的父亲与母亲。第二代包含4位祖先角色,即你的祖父祖母与外祖父外祖母;第三代则包含8位祖先角色,即你的曾祖父母那一辈。每回溯一代,祖先角色需要填补的数量就会翻倍,当你追溯到过去40代时,你会发现有超过10 000亿位祖先角色需要填补。
说到这时,就轮到鸽巢原理出场了。你的家谱图里最近的40代都发生在过去的4 000年里,我们认为最多有10 000亿人在此期间存在过。所以,比起曾经存在过的人(最多10 000亿),有更多的祖先角色(超过10 000亿)需要填补。因为我们在前面假设过,在这过去的4 000年里,至多只有一万亿人生存过,这带来关键的一点就是,在你的祖先中至少有两个角色,必须由相同的人来担任。我们把这个人叫作A。
我们已经识别了A,现在大体上就已经完工了。从将A填入到你祖先里的两个角色开始,我们顺着家谱图而下进行追溯。这两个祖先角色由A出发,在家谱图较低的地方与另一人产生一个后代,这个位置由B来填补。由于这两者在B这个地方首次会合,一个便是由B的母亲到此,另一个是从B的父亲到此。换而言之,A是B母亲的祖先,也是B父亲的祖先,就如同我们之前推出的结论一样。
一旦你退回一步,理解一下这些逻辑论证的作用,你会领会到如下几点:
第一,在某种意义上,这更多是关于简单数学结构而不是关于人。我们正在画一幅关于你家的超大家谱图,并试图将过去4 000年人类的历史填满。但由于数量过于庞大,我们无法完成这一填满的工作,所以部分特定人必须占一个以上的位置。
第二,这就是被数学家称为非建设性方式的论证方法。它并不是真的有办法让你在家谱图中找到A和B,但它会让你笃信,一定存在A和B,事实上这种的可能性也是微乎其微的。
最后,我想我所写的就算是一个典型的小插曲吧,它存在于鸽巢原理之中,存在于散布在数学王国里无声却有力的陈述之中。它是朴素的、微不足道的事实,看似无足轻重,但时常在恰当时挺身而出,使原本凌乱的状况变得清楚明了。