悖论

理发师悖论——只给不自己刮胡子的人刮胡子

理发师悖论——只给不自己刮胡子的人刮胡子

大家好,我是 Senko。 本文将解读“理发师悖论”

某个村子里只有一位理发师,他按“给所有不自己刮胡子的人刮,凡是自己刮的人一个也不给刮”这条规矩营业。那么这位理发师自己的胡子,该由谁来刮呢?刮也好不刮也好,都会违反这条规矩。它作为把罗素悖论换成日常话语的版本很有名,可两者其实有一处决定性的差别。

图解

村里只有一位理发师

先把设定仔细过一遍。

某个村子里只有一位理发师。这位理发师的营业规矩如下:

村民当中,凡是不自己刮胡子的人,一律由这位理发师来刮。 村民当中,凡是自己刮胡子的人,这位理发师一概不刮。

换句话说,村民恰好分成两组:自己刮的人,和请理发师刮的人,既不重叠也无遗漏。

到这里听着还是再普通不过的生意,实际上就村民而言也确实没有任何问题。

出问题的地方,是在你想起理发师本人也是村民之一的时候。

刮也违规,不刮也违规

关于理发师的胡子,可能性只有两种。

先设“理发师自己刮自己的胡子”。那么他属于自己刮的那一组;可按规矩的后半句,自己刮的人理发师一概不刮。既然是理发师在刮,那就等于没有自己刮

再设“理发师不自己刮”。那么他属于不自己刮的那一组;可按规矩的前半句,不自己刮的人一律由理发师来刮。也就是理发师给理发师自己刮,结果还是等于自己刮了

两种情形里,假设的内容都原封不动地被否定着弹回来,没有退路。

找漏洞找得越欢,越是绕开了要害

听完这个故事,人一般都想去戳设定的漏洞,而漏洞确实想得出来好几个。

  • “理发师是女性的话”:没有胡子所以不在对象之内,矛盾不会发生
  • “理发师不长胡子的话”:同样脱离对象
  • “理发师不是村民的话”:规矩只适用于村民
  • “有两位理发师的话”:互相刮就成立了

这些确实都回避了矛盾,可回避得掉这件事本身,正是它们绕开了问题要害的证据。

这些漏洞无一例外,都是靠让“理发师本人不被包含在对象之内”来成立的。把自指切开矛盾自然消失,那不过是换个说法重述了这个问题究竟在戳什么。

反过来说,在对象必定包含自身的场面里,这条退路就用不了了

集合论正是这样的状况。考虑“所有不包含自身的集合”时,这个集合体本身也是集合,没法把它挪到对象之外去,等于用不了“从村外请个理发师来”这种解法。

当成谜题时找漏洞是很有趣的,可要是不看看漏洞被堵死的那一刻会发生什么,就没法往下一节走。

罗素传开的通俗版

把这个故事传向世间的是伯特兰·罗素,他在1918年的讲义录《逻辑原子主义哲学》里作了介绍。

罗素本人于1901年发现的罗素悖论,是用集合论的语言写的:考虑“把所有不以自身为元素的集合聚起来的集合”,这个集合是否包含自身都会导出矛盾。

对不熟悉“集合”这个词的人来说不好体会,于是换成了理发师的故事。结构完全一样,刮胡子这层关系对应着被包含于集合这层关系

顺带一提,罗素说理发师这个比方并非自己的原创,而是从别人那里听来的,确切的想出者已不可考。

其实它算不上真正的悖论

要紧的地方从这里开始。理发师的故事常被与罗素悖论等量齐观,可在逻辑上的严重程度完全不同

理发师这边,出现矛盾时我们该下的结论清清楚楚,就是“这样的理发师并不存在”而已。

把互相矛盾的条件罗列出来,满足它们的东西不存在是理所当然的。这与“比1大又比0小的数”不存在是一回事,没什么可为难的。理发师的故事与其说是悖论,不如说是这种理发师不存在的证明

罗素本人也明确指出过这一点,说理发师的故事并非真正的矛盾。

罗素那边为何更严重

那么集合论那边,为什么不能照样打发掉呢。

当时的集合论有一条叫朴素概括公理的前提,约定是“只要写下某个条件,满足该条件者的全体所构成的集合就必定存在”。

在这个前提下,写下“不包含自身”这个条件的那一刻,对应集合的存在就被自动担保了,没法用“它不存在”来了事

所以理发师那边可以用“不存在”收场,集合那边却成了“本该存在却自相矛盾”。看着形状一样,落脚点却全然不同。

弄懂这处差别之后,我对这个比方的看法就变了。它是那种为了好懂,把问题里最要紧的部分给掉了的例子。

能不能说“不存在”,决定了价值

理发师的论证本身以“这种东西不存在”收场。可同样形状的论证,在某些领域里会成为极其重要的定理。

分水岭在于存在是否被担保

对象是否存在能这样判定的理由
只给不自己刮的人刮的理发师不存在只是罗列了互相矛盾的条件
比1大又比0小的数不存在同上
不包含自身的集合之集合在朴素集合论里本该存在概括公理把存在担保掉了
判定一切程序是否停机的程序不存在同样的反证法,可结论的分量不同

只有第三行是特殊的。公理事先就把存在许诺出去了,所以逃不到“它不存在”那边去,只能反过来改写公理。

同一套论法成为定理的情形

第四行的停机问题,与理发师的搭法完全一样。

先假设存在“对任何程序都能判定它是否停机的程序”。用这个程序造一个专唱反调的程序:“判定结果为停机就死循环,为不停机就停下来”。

让这个唱反调的程序判定它自己,就会陷入停机则不停、不停则停机的矛盾。因此这样的判定程序并不存在。

在理发师那里听着理所当然的结论,到这里成了划定计算界限的重要定理。图灵1936年给出的这个结果,是计算机科学的基石之一。

差别在于,理发师的存在本来就没人指望;而“万能的判定程序”,许多人以为是造得出来的。同样的论法,因否定的对象不同,价值也就不同了。

数学的地基是怎样重砌的

既然弄清了矛盾的根源在朴素概括公理,数学家们就把那里换掉了。

现代标准的集合论 ZFC 公理系统舍弃了“写下条件就有集合”这个约定,改用所谓的分离公理,只允许从已经存在的集合当中,取出满足条件的那一部分

无中生有、仅凭条件造集合是不行的。托这条限制的福,成问题的那个集合打一开始就造不出来,矛盾也就不再发生。

罗素本人走的是另一条路,他给对象分配层级、禁止自指,做出了类型论。两种方针在“限制谈论自身”这一点上是相通的。

与自指有关的悖论

一想谈论自身,意义就定不下来——下面是与此相关的悖论。

结语

本文解读了“理发师悖论”。

刮也矛盾不刮也矛盾,乍看无计可施;可答案是这样的理发师打一开始就不存在。既然只是罗列了互相矛盾的条件,说理所当然也确实理所当然。

我个人觉得有意思的是,结构相同,集合论那边却用不了同一种脱身办法。好懂的比方,有时会把最要紧的那点难处干干净净地削掉。我觉得这也是这个题材里带着的一条教训。

想返回悖论列表的读者请点击下方链接。

我们下一篇文章见。

世界经典悖论大全——哲学、数学、物理、经济学著名悖论完全解读zh.senkohome.com/paradox-list/