本文来自微信公众号:返朴 (ID:fanpu2019),作者:文兰(中国科学院院士、北京大学数学学院教授)
理发师悖论真是一个悖论吗?
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 是一个满射。如图所示:
我们还需要一个概念:子集所成的集。设 X 为一个集。用 P (X) 表示集 X 的所有子集所成的集。例如,若 X={1, 2, 3},则
6、康托定理
康托定理 对任何集 X,不存在从 X 到 P (X) 的满射。
证明 任取一个映射 f: X → P (X)。要证 f 不是满射。为此令
我们来证明,不存在 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 的“顾客集”。那么康托所考虑的集合
不存在 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)显然受到了康托定理的启发,但它与理发师悖论有很大的不同。它的假设隐蔽得多,以致当时的集合论无法察觉。当然该假设最终还是被后来的集合论彻底破解了,所以罗素悖论早已不再是悖论了。但罗素悖论极大地刺激了当时的集合论,对集合论的进步有重大的意义。
【后记】其实,像理发师悖论这样易于破解的“悖论”可以要多少有多少,都是对康托定理的恶作剧。比如“只爱那些不爱自己的人”,“只恨那些不恨自己的人”,“只表扬那些不表扬自己的人”,“只批评那些不批评自己的人”,“只修理那些不修理自己的机器人”,“只引用那些不引用自己的书”,等等等等。理发作为这些“反身及物动词”中的一个只是特别生动形象罢了。
作者简介
文兰(1946-),1969 年毕业于北京大学数学力学系,1981 年在北京大学获得硕士学位,导师为廖山涛先生。1986 年在美国西北大学获得博士学位,导师为 R. Williams 教授。1988-1990 年在北京大学从事博士后研究,后留校任教。文兰主要从事微分动力系统方面的研究,在不可逆系统 C1 封闭引理、C1 连接引理、流的稳定性猜测、星号流问题、Palis 稠密性猜测等动力系统的若干基本问题上做出重要贡献;1997 年获陈省身数学奖,1999 年当选为中国科学院院士,2005 年当选为第三世界科学院院士,2011 年获华罗庚数学奖。
本文根据文兰院士在双流棠湖中学所做公众报告整理成文。原文发表于《数学通报》2011 年第 12 期,原标题为《康托定理与理发师悖论》。