大家好,我是 Senko。 本文将解读“理发师悖论”。
某个村子里只有一位理发师,他按“给所有不自己刮胡子的人刮,凡是自己刮的人一个也不给刮”这条规矩营业。那么这位理发师自己的胡子,该由谁来刮呢?刮也好不刮也好,都会违反这条规矩。它作为把罗素悖论换成日常话语的版本很有名,可两者其实有一处决定性的差别。
村里只有一位理发师
先把设定仔细过一遍。
某个村子里只有一位理发师。这位理发师的营业规矩如下:
村民当中,凡是不自己刮胡子的人,一律由这位理发师来刮。 村民当中,凡是自己刮胡子的人,这位理发师一概不刮。
换句话说,村民恰好分成两组:自己刮的人,和请理发师刮的人,既不重叠也无遗漏。
到这里听着还是再普通不过的生意,实际上就村民而言也确实没有任何问题。
出问题的地方,是在你想起理发师本人也是村民之一的时候。
刮也违规,不刮也违规
关于理发师的胡子,可能性只有两种。
先设“理发师自己刮自己的胡子”。那么他属于自己刮的那一组;可按规矩的后半句,自己刮的人理发师一概不刮。既然是理发师在刮,那就等于没有自己刮。
再设“理发师不自己刮”。那么他属于不自己刮的那一组;可按规矩的前半句,不自己刮的人一律由理发师来刮。也就是理发师给理发师自己刮,结果还是等于自己刮了。
两种情形里,假设的内容都原封不动地被否定着弹回来,没有退路。
找漏洞找得越欢,越是绕开了要害
听完这个故事,人一般都想去戳设定的漏洞,而漏洞确实想得出来好几个。
- “理发师是女性的话”:没有胡子所以不在对象之内,矛盾不会发生
- “理发师不长胡子的话”:同样脱离对象
- “理发师不是村民的话”:规矩只适用于村民
- “有两位理发师的话”:互相刮就成立了
这些确实都回避了矛盾,可回避得掉这件事本身,正是它们绕开了问题要害的证据。
这些漏洞无一例外,都是靠让“理发师本人不被包含在对象之内”来成立的。把自指切开矛盾自然消失,那不过是换个说法重述了这个问题究竟在戳什么。
反过来说,在对象必定包含自身的场面里,这条退路就用不了了。
集合论正是这样的状况。考虑“所有不包含自身的集合”时,这个集合体本身也是集合,没法把它挪到对象之外去,等于用不了“从村外请个理发师来”这种解法。
当成谜题时找漏洞是很有趣的,可要是不看看漏洞被堵死的那一刻会发生什么,就没法往下一节走。
罗素传开的通俗版
把这个故事传向世间的是伯特兰·罗素,他在1918年的讲义录《逻辑原子主义哲学》里作了介绍。
罗素本人于1901年发现的罗素悖论,是用集合论的语言写的:考虑“把所有不以自身为元素的集合聚起来的集合”,这个集合是否包含自身都会导出矛盾。
对不熟悉“集合”这个词的人来说不好体会,于是换成了理发师的故事。结构完全一样,刮胡子这层关系对应着被包含于集合这层关系。
顺带一提,罗素说理发师这个比方并非自己的原创,而是从别人那里听来的,确切的想出者已不可考。
其实它算不上真正的悖论
要紧的地方从这里开始。理发师的故事常被与罗素悖论等量齐观,可在逻辑上的严重程度完全不同。
理发师这边,出现矛盾时我们该下的结论清清楚楚,就是“这样的理发师并不存在”而已。
把互相矛盾的条件罗列出来,满足它们的东西不存在是理所当然的。这与“比1大又比0小的数”不存在是一回事,没什么可为难的。理发师的故事与其说是悖论,不如说是这种理发师不存在的证明。
罗素本人也明确指出过这一点,说理发师的故事并非真正的矛盾。
罗素那边为何更严重
那么集合论那边,为什么不能照样打发掉呢。
当时的集合论有一条叫朴素概括公理的前提,约定是“只要写下某个条件,满足该条件者的全体所构成的集合就必定存在”。
在这个前提下,写下“不包含自身”这个条件的那一刻,对应集合的存在就被自动担保了,没法用“它不存在”来了事。
所以理发师那边可以用“不存在”收场,集合那边却成了“本该存在却自相矛盾”。看着形状一样,落脚点却全然不同。
弄懂这处差别之后,我对这个比方的看法就变了。它是那种为了好懂,把问题里最要紧的部分给掉了的例子。
能不能说“不存在”,决定了价值
理发师的论证本身以“这种东西不存在”收场。可同样形状的论证,在某些领域里会成为极其重要的定理。
分水岭在于存在是否被担保
| 对象 | 是否存在 | 能这样判定的理由 |
|---|---|---|
| 只给不自己刮的人刮的理发师 | 不存在 | 只是罗列了互相矛盾的条件 |
| 比1大又比0小的数 | 不存在 | 同上 |
| 不包含自身的集合之集合 | 在朴素集合论里本该存在 | 概括公理把存在担保掉了 |
| 判定一切程序是否停机的程序 | 不存在 | 同样的反证法,可结论的分量不同 |
只有第三行是特殊的。公理事先就把存在许诺出去了,所以逃不到“它不存在”那边去,只能反过来改写公理。
同一套论法成为定理的情形
第四行的停机问题,与理发师的搭法完全一样。
先假设存在“对任何程序都能判定它是否停机的程序”。用这个程序造一个专唱反调的程序:“判定结果为停机就死循环,为不停机就停下来”。
让这个唱反调的程序判定它自己,就会陷入停机则不停、不停则停机的矛盾。因此这样的判定程序并不存在。
在理发师那里听着理所当然的结论,到这里成了划定计算界限的重要定理。图灵1936年给出的这个结果,是计算机科学的基石之一。
差别在于,理发师的存在本来就没人指望;而“万能的判定程序”,许多人以为是造得出来的。同样的论法,因否定的对象不同,价值也就不同了。
数学的地基是怎样重砌的
既然弄清了矛盾的根源在朴素概括公理,数学家们就把那里换掉了。
现代标准的集合论 ZFC 公理系统舍弃了“写下条件就有集合”这个约定,改用所谓的分离公理,只允许从已经存在的集合当中,取出满足条件的那一部分。
无中生有、仅凭条件造集合是不行的。托这条限制的福,成问题的那个集合打一开始就造不出来,矛盾也就不再发生。
罗素本人走的是另一条路,他给对象分配层级、禁止自指,做出了类型论。两种方针在“限制谈论自身”这一点上是相通的。
与自指有关的悖论
一想谈论自身,意义就定不下来——下面是与此相关的悖论。
结语
本文解读了“理发师悖论”。
刮也矛盾不刮也矛盾,乍看无计可施;可答案是这样的理发师打一开始就不存在。既然只是罗列了互相矛盾的条件,说理所当然也确实理所当然。
我个人觉得有意思的是,结构相同,集合论那边却用不了同一种脱身办法。好懂的比方,有时会把最要紧的那点难处干干净净地削掉。我觉得这也是这个题材里带着的一条教训。
想返回悖论列表的读者请点击下方链接。
我们下一篇文章见。
📚 系列:世界经典悖论(25/81)
读者也常看这些



