为什么康托定理是定理,理发师悖论是悖论呢?
理发师悖论真是⼀个悖论吗?
撰⽂ | ⽂兰(中国科学院院⼠、北京⼤学数学学院教授)
1 什么是悖论
我们给悖论下⼀个“进⾏式”的定义:悖论就是导致⽭盾但原因不明的推理。根据这⼀定义,⼀旦⽭盾的原因找到了,悖论也就不再是悖论了。另外,⽭盾的原因应该⽐较难于察觉。这⼀定义可能与许多⽂献中对悖论的定义不同。笔者主张这⼀定义。
2 理发师悖论
某村有⼀理发师,恰给本村那些不给⾃⼰理发的⼈理发。请问他给不给⾃⼰理发?若他给⾃⼰理发,则他是⼀个给⾃⼰理发的⼈。按照他的原则,他应该不给⾃⼰理发。⽭盾。若他不给⾃⼰理发,则他是⼀个不给⾃⼰理发的⼈。按照他的原则,他应该给⾃⼰理发。也⽭盾。这是⼀段有名的、⾮常有趣的推理。由于找不出⽭盾的原因,这段推理就被称为“理发师悖论”。
3 理发师悖论的解决
让我们把理发师悖论再叙述⼀遍:某村存在⼀理发师,恰给本村那些不给⾃⼰理发的⼈理发。请问他给不给⾃⼰理发?若他给⾃⼰理发,则他是⼀个给⾃⼰理发的⼈。按照他的原则,他应该不给⾃⼰理发。⽭盾。若他不给⾃⼰理发,则他是⼀个不给⾃⼰理发的⼈。按照他的原则,他应该给⾃⼰理发。也⽭盾。如果这⼀次还不容易看出⽭盾的原因,请注意,第⼆次陈述时,把第⼀次陈述⾥的第三个字“有”换成了“存在”。
这样⼀换,是不是⽐较容易看出⽭盾的原因了呢?是的,应该说这样⼀换就⽐较容易看出,⽭盾的原因是假设了这样⼀个理发师的存在。因此,这⼀⽭盾⽆⾮说明,具有这种性质的理发师在本村不存在罢了。⽭盾的原因找到了,悖论也就不成其悖论了,问题也就解决了。
4 ⽂字游戏?
但⽭盾的原因是怎样找到的呢?我们把“有”换成了“存在”。这是不是⽂字游戏,是不是偷换概念,是不是改变了问题呢?当然不是。“有”就是“存在”。
把“有”换成“存在”,没有改变问题,只是⽤语更科学、更醒⽬,使⼈注意到,原来这⾥隐藏着⼀个“存在”的假设。假设,或者说前提,对推理是⾄关重要的。知道有假设,推出⽭盾就不会⼤惊⼩怪,⽆⾮说明假设不正确罢了。但若不知道有假设,推出⽭盾就会⽆法解释,就要惊呼为悖论了。因此,千万不要丢失、模糊任何假设。
5 引经据典
按说理发师悖论这样就解决了。
不过⼈们可能不太放⼼,问题破解得太容易了:只换了⼀个词“存在”,就启发、导致了答案。这个答案太平淡⽆奇了。为了让⼈彻底相信,这个答案⼀点也不平淡,问题确实出在存在性上,让我们引经据典,回顾集合论创始⼈康托的⼀个定理。为此先要回顾⼀下集合论的⼏个概念:映射、满射、⼦集的集。设X和Y为两个集。所谓⼀个从X到Y的映射f: X → Y是指⼀个法则,它对X中的每⼀x,指定Y中唯⼀⼀个元素。
这个为x指定的唯⼀元素称作x在f下的像,记为f(x)。称X为映射的定义域,Y为映射的值域。如果值域Y中的每⼀个元素都是定义域X中某个元素的像,就称f是⼀个满射。
6 康托定理
康托定理对任何集X,不存在从X到P(X)的满射。证明任取⼀个映射f: X → P(X)。要证f不是满射。为此令C={x ∈ X | x ? f(x)}。我们来证明,不存在z ∈ X,使得f(z)=C。为此⽤反证法。
假设存在z ∈ X,使得f(z)=C。那么,若z ?C,则z ∈ f(z)。但f(z)=C,故z ∈ C。⽭盾。若z ∈ C,则z ? f(z)。但f(z)=C,故z ? C。也⽭盾。这说明不存在z ∈ X,使得f(z)=C。故f不是满射,康托定理得证。康托定理是集合论最早,也最重要的定理之⼀。这个定理之优美,⼤概可以代表⼈类的智慧。
这个定理⼀般放在⼤学数学系的三年级课程《实变函数论》中讲,但它⼏乎不⽤什么基础知识,是中学⽣可以理解、欣赏的。康托定理的陈述⼀般为,“不存在从X到P(X)的⼀⼀对应”,但实际上不存在满射。不存在满射当然就更不存在⼀⼀对应。
7 康托定理与理发师悖论的⽐较
康托定理与理发师悖论有什么关系呢?我们来给康托定理⼀个“理发”的解释。⽤表示该村的⼈的集。
对每⼀村⺠x,⽤f(x)表示村⾥被x理发的那些⼈的集,即x的“顾客集”。那么康托所考虑的集合C={x ∈ X | x ? f(x)}不存在z ∈ X,使得f(z)=C。翻译成理发的语⾔就是:村⾥不存在这样的理发师,恰给本村那些不给⾃⼰理发的⼈理发。这是康托证明的⼀个深刻的事实。让我们把康托推理的过程也翻译成理发的语⾔看看:若z ?C,则z ∈ f(z)。但f(z)=C,故z ∈ C。⽭盾。
(若他给⾃⼰理发,则他是⼀个给⾃⼰理发的⼈。按照他的原则,他应该不给⾃⼰理发。⽭盾。)若z ∈ C,则z ? f(z)。但f(z)=C,故z ? C。也⽭盾。(若他不给⾃⼰理发,则他是⼀个不给⾃⼰理发的⼈。按照他的原则,他应该给⾃⼰理发。也⽭盾。)可⻅,理发师推理就是康托推理。
8 评述
那么,为什么康托定理与理发师悖论⼀个是定理,⼀个是悖论呢?康托明确写道,这样⼀个z的存在只是假设。
所以推出⽭盾毫不惊讶,⽽是⽴即做出结论:不存在这样⼀个z。理发师悖论却⽤⽇常语⾔的“有”模糊了科学语⾔的“存在”。“存在”换成“有”以后,就不知不觉从假设变成了天经地义,于是⽭盾⽆法解释,成了“悖论”。可⻅,我们在前⾯把“有”换回成“存在”,确实不是⽂字游戏。理发师悖论的问题确实出在存在性上。但说“换回”对吗?谁先谁后呢?康托定理(1895),理发师悖论(1907),康托在先。
因此,说“换回”是对的。康托深刻地证明了,不存在这样⼀个古怪的理发师。12年后,理发师悖论全盘照收了康托的推理过程,却模糊了康托的存在性假设,致使⽭盾⽆法解释,造成“悖论”。这不像个恶作剧吗?
9 关于罗素悖论
读者可能知道罗素悖论,听说过“理发师悖论是罗素悖论的通俗版”的说法。如上所述,理发师悖论⼏乎是对康托定理的⼀个恶作剧。那么罗素悖论呢?这个问题留给读者追踪、思考最好。
但急于知道答案是⼈类的优良天性,所以也简单说明⼀下:罗素悖论(1902)显然受到了康托定理的启发,但它与理发师悖论有很⼤的不同。它的假设隐蔽得多,以致当时的集合论⽆法察觉。当然该假设最终还是被后来的集合论彻底破解了,所以罗素悖论早已不再是悖论了。但罗素悖论极⼤地刺激了当时的集合论,对集合论的进步有重⼤的意义。
【后记】其实,像理发师悖论这样易于破解的“悖论”可以要多少有多少,都是对康托定理的恶作剧。⽐如“恰爱那些不爱⾃⼰的⼈”,“恰恨那些不恨⾃⼰的⼈”,“恰表扬那些不表扬⾃⼰的⼈”,“恰批评那些不批评⾃⼰的⼈”,“恰修理那些不修理⾃⼰的机器⼈”,“恰引⽤那些不引⽤⾃⼰的书”,等等等等。理发作为这些“反身及物动词”中的⼀个只是特别⽣动形象罢了。