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)顯然受到了康托定理的啟發,但它與理發師悖論有很大的不同。它的假設隱蔽得多,以致當時的集合論無法察覺。當然該假設最終還是被后來的集合論徹底破解了,所以羅素悖論早已不再是悖論了。但羅素悖論極大地刺激了當時的集合論,對集合論的進步有重大的意義。
【后記】其實,像理發師悖論這樣易于破解的 " 悖論 " 可以要多少有多少,都是對康托定理的惡作劇。比如 " 恰愛那些不愛自己的人 "," 恰恨那些不恨自己的人 "," 恰表揚那些不表揚自己的人 "," 恰批評那些不批評自己的人 "," 恰修理那些不修理自己的機器人 "," 恰引用那些不引用自己的書 ",等等等等。理發作為這些 " 反身及物動詞 " 中的一個只是特別生動形象罷了。
原文地址:http://www.myzaker.com/article/632d7aab8e9f093ebd0ff4c3






川公網安備51012402001058號