撰文 BRIAN GALLAGHER
翻譯 徐付琪
審校 楊晨 張士超
1957年,普林斯頓大學博士生 Raymond Smullyan 在一位理論計算機科學創始人的指導下學習。他偶爾會去紐約玩。一次,他在那裡遇到了一位「非常迷人的女音樂家」,情場聖手 Smullyan 在他們第一次約會的步調上,可謂非常「邏輯」,撩人於無形。
他說道:「我們來做個遊戲吧。我先說一句話,如果那句話是真的,可以把你的籤名給我嗎?」
女音樂家饒有興致地回答:「當然。」
「不過如果我說的不是真的,那就不要給我籤名了。」
「好的…」
緊接著,他說:「你既不會給我籤名也不會給我一個吻。」
稍微想一下兒吧,不過你最後肯定能明白 Smullyan 的機智之處。
按照協議,如果這句話的是對的,女音樂家就要給 Smullyan 籤名;但這句話成立本身意味著「她不會給他籤名」。而如果這句話若是錯的,那麼她就要給他籤名或是吻。這就是她面臨的困境:如果這句話不成立,她就不能給籤名。這樣,Smullyan 巧妙地運用邏輯學,以一句錯誤的話贏得了一個吻。(更贏得了美好的愛情:二人後來步入了婚姻殿堂。)
Raymond Smullyan 圖片來源:mesosyn.com
Smullyan 喜歡這類邏輯遊戲,人們也因為這類邏輯遊戲而喜歡他。在休閒數學和邏輯方面,他的書《這本書的書名是什麼》(What Is the Name of This Book?)和《嘲弄一隻嘲鶇》(To Mock a Mockingbird)不僅激勵了人們投身邏輯學研究,同時也改變了數學和邏輯學的教學方式。在他近百年的人生中,96歲高齡的 Smullyan 不僅為現代邏輯學奠定了基礎,還是一名出色的鋼琴家和魔術師,甚至還寫了一些關於道教和象棋的文章。「毋庸置疑,他是邏輯謎題的大師。」他的博士生 Bruce Horowitz 這樣評論道。
至今,哲學家和邏輯學家們仍著迷於 Smullyan 留下的一項寶貴財富——「世界上最難的邏輯謎題」。這一謎題由麻省理工學院的邏輯哲學家 George Boolos 命名。Smullyan的這位同事也是箇中好手,熱愛一切邏輯學難題。他曾經自我設限,只用單音節詞做了一場哥德爾第二不完備定理的講座,而這條定理,是「現代邏輯學最重要的成果之一」。
史上最難邏輯謎題是這麼說的:
有真、偽、任性三位神,真之神只講真話,偽之神只講假話,任性之神的話或真或假,完全隨機。你要做的是,只通過三個是非問題來確定三者身份,每個問題只能問其中一位神。他們能聽懂你講話,但只會用自己的語言回答,「是」和「否」分別是「噠」和「呀」中的一個,但你不知道對應關係。
看到這道題時,樂於接受挑戰的我拿起紙筆,扎進沙發,心想這要不了兩個小時就能解這道題。似乎只要一次性提出三個問題,尋找問題對應的答案就好。例如,我向甲詢問乙是不是真,向乙詢問甲是不是真,然後再問丙自己是不是真。但是幾個小時過去了,我幾乎試遍了自己能想到的所有問題,都沒能成功,我開始理解為什麼這道題會被稱作「世上最難」了。很顯然,我的問題不足以讓這三位神告訴我他們的身份。
十分沮喪的我開始上網尋求指導,我發現攀上這一邏輯謎題高峰的大師是 Boolos,他在1996年解決了這一問題。這一問題求解的過程是我看過的最好的邏輯學課程之一。如果你想自己嘗試解決這個問題,不妨先不要下拉屏幕。如果你成功的話,我將表示祝賀,如果很不幸沒有成功,你可以接著這篇文章,看 Boolos 是怎樣解決這一問題的。(譯者註:如果只想降低難度,可以一點一點往下看。)
額滴神吶:在最難邏輯謎題中,你得判斷真、偽、任性三位大神的真實身份。
Boolos 的解法中首先聲明的一點是:不要像我上面那樣,先腦子裡想好,然後一次性拋出所有問題。你的第一個任務是想出一個問題,確定誰一定不是任性之神,或者誰只能是真之神或偽之神。這樣你就可以通過排除法確定誰是任性之神,一旦確定了任性之神的身份,剩下的問題就迎刃而解了。
為了更好地理解這種方法,Boolos 給了我們三個簡化版例子。
這個例子其實就是 Smullyan《這本書的書名是什麼?》中經典的「騎士和流氓問題」:騎士只說真話,流氓只說假話,如何只提一個是非問題,根據他們的回答確定兩人身份?
在解決這個問題之前,不妨設想這樣的場景:假設你不清楚冥王星是不是矮行星,決定向周圍的人諮詢,但又不知道對方到底是騎士還是流氓,要怎樣問才能確定冥王星是否為矮行星呢?
Boolo 解釋說,你得下個套向他們套出你想要的答案。這個套路就是用「若且唯若」的雙重條件提問。當你用若且唯若「把兩個同真或同假的句子聯繫在一起,這句話一定是真的;但是如果這兩個句子一真一假,這就是句假話。」「若且唯若」就像乘號一樣,同正或同負的兩數相乘總得到正的結果,而在兩句同真或同假的情況下你得到的答案永遠是真的。
現在這個情景下就是:「若且唯若冥王星是矮行星時,你是騎士嗎?」
(譯者註:不習慣使用「若且唯若」的同學,可以這樣理解:冥王星是矮行星,你是騎士,這兩個命題的真假相同嗎?)
聽你提問的人要麼是騎士、要麼是流氓,得到的回答共有四種可能:
如果這個人是騎士,冥王星是矮行星,那麼答覆是「是」;因為「若且唯若」聯繫的兩句話都是真的,而騎士總是說真話。
如果這個人是騎士,冥王星不是矮行星,那麼答覆是「否」;因為問題中包含一句錯話。
如果這個人是流氓,冥王星是矮行星,那麼答覆是「是」;因為流氓總說謊,正確的答案應該是「否」。
如果這個人是流氓,冥王星不是矮行星,那麼答覆是「否」,因為正確的答案是「是」。
看看我們得到了什麼結果:使用雙重條件句提問,就一定能得到我們想要的信息。如果冥王星是矮行星,得到的回答就是「是」,否則就是「否」。
但是要注意,「史上最難邏輯謎題」與「騎士和流氓」有所不同——你聽不懂他們的答覆。
在這個例子裡,你知道自己在詢問只說真話的騎士,但是他只能用「噠」或「呀」回覆你。這種情況下,你要通過怎樣一個是非問題判斷出冥王星是否為矮行星呢?
參照上一題的思路,問騎士「若且唯若冥王星是矮行星時,『噠』是『是』的意思嗎?」 正是這樣!即便我們不知道這兩個詞的含義,但如果冥王星是矮行星的話,你一定會得到「噠」的答覆;如果不是則回復為「呀」。上一個例子中,我們不必弄清這個人到底是騎士還是流氓;而在這個例子中,我們也不需要弄清「噠」和「呀」的含義。
按照 Boolos 的說法,「史上最難邏輯題」就是前兩個簡化版問題和第三個問題的組合。在解決它之前,我們先整合一下前兩個問題:
為了判斷冥王星是否為矮行星,面對一個不知是騎士還是流氓的人,而且他只會回答「噠」或「呀」,你會怎樣提問呢?如果你想的是,既然這是個複合問題,我們不妨用複合的提問方式,那你就想對了。「若且唯若冥王星是矮行星時你是騎士,若且唯若前一句為真時,『噠』的含義是『是』嗎?」這樣,不論你問的是騎士還是流氓,如果冥王星是矮行星,你得到的答覆就是「噠」;如果不是,則為「呀」。這種構思巧妙的問題是解開謎題的鑰匙。
每個問題的真假都是確定的,不存在模稜兩可的情況。
我把三張牌倒扣放在你面前,三張牌背面一樣但正面分別是兩紅一黑,你不清楚它們的順序,但是我知道。你要指著其中一張牌,問我一個是非問題以確定其中的一張紅色牌。如果你指到紅牌的話,我就會像騎士一樣說真話;如果指到黑牌,我就會效仿任性之神,可能說真話也可能說假話。那麼你會指哪裡,問什麼問題呢?
這個問題看起來似乎更複雜,但事實上完全不是。你只需要隨意指一張牌問剩下的兩張牌中的一張是否為紅色。例如你指向中間的牌,然後問它左側那張是否為紅色。不論中間的牌是不是紅色,如果我告訴你「是」的話你選左邊,「否」的話選右邊,你選的牌都一定是紅色的。為什麼呢?如果中間是張紅牌,那麼我回答「是」就說明它左邊也是紅牌;如果回答「否」,則說明右邊是紅牌。如果中間是張黑牌,那麼「是」或「否」都沒有關係,因為此時它的左右都是紅牌。所以,不論你指的是不是紅牌,只要你要猜的牌不是你所指的牌,你所得到的「是」或「否」,都能幫你確定另一張紅牌。
這種指著一張牌問另一張牌的策略也可以用在「史上最難邏輯謎題」中,找出那個回答或真或假的神。指向一張牌本身也是你提問的一部分,換成文字來說,相當於用指出某位是任性之神的斷言,代替了上個複合問題中「冥王星是不是矮行星」的事實提問。這和決定指向哪張牌其實是一樣的。誰是任性之神的答案取決於向誰提問,但是這並不重要,向三位神中的任何一位提問都能得到答案。
我們可以向甲神詢問乙神是不是任性之神:「若且唯若乙是任性之神時你是真之神,若且唯若前一句為真時『噠』才可以理解成『是』嗎?」你同樣也可以指著乙神而問甲神的身份。在第三個例子裡,不管回答如實還是隨機,你都可以根據「是」或者「非」來確定一張紅色的牌。在這裡也一樣,不論甲的身份如何,如果你得到的答案是「噠」,那麼丙就是真之神或偽之神中的一個;如果答案是「呀」,那麼乙就是真之神和偽之神中的一個。
假設答案是「呀」(回答必居其一),那麼乙就排除了是任性之神的可能,這正是我們想要的結果,因為我們知道怎麼確定這種情況下對方的身份,於是我們問他第二個問題:「若且唯若冥王星是矮行星時,『噠』才意味著『是』嗎?」,因為我們知道冥王星是矮行星,那麼乙的兩種回答就有:
1、如果乙是真之神,那麼答案就是「噠」。
2、如果乙是偽之神,那麼答案就是「呀」,因為正確的答案是「噠」,而他總是講假話。
假設答案是「噠」,那麼乙就是真之神。此時我們向他詢問最後一個問題,「若且唯若甲是任性之神時,『噠』的意思才是『是』嗎?」考慮到任性之神只可能是甲或丙中的一個,那麼:
1、如果回答是「噠」,即可說明甲是任性之神,於是丙就是偽之神。
2、如果回答是「呀」,即可說明丙是任性之神,於是甲就是偽之神。
讓我們回過頭來總結下 Boolos 的邏輯,我們判斷真、偽、任性之神的三個問題是這樣的:
1、向甲神提問:「若且唯若乙是任性之神時你是真之神,若且唯若上一句為真時『da』的意思才是『是』嗎?」(假設甲回答「呀」,那麼乙就是真之神或偽之神。)
2、向乙提問:「若且唯若冥王星是矮行星時,「噠」才意味著『是』嗎?」(假設乙回答「噠」,那麼乙就是真之神。)
3、繼續追問乙(真之神):「若且唯若甲是任性之神時,『噠』才意味著『是』嗎?」由於乙是真之神,他如果回答「噠」就意味著甲是任性之神,丙是偽之神。
問題解決!
所以「史上最難邏輯謎題」教會了我們什麼呢?按照Boolos的說法,它告訴我們邏輯學基本方法裡「排中律」的重要性。排中律的基本思想非常簡單:每句話或者是真的、或者是假的,但不可能處於中間情況。Boolos說:「如果否認排中律的作用,那麼在日常生活中,我們恐怕會完全喪失在多種可能中做判斷的能力。」這是條讓人清醒的思想。我們必須感謝Smullyan的謎題,讓我們在愉悅的思考中學到了這一課。
原文連結 :http://nautil.us/issue/30/identity/how-to-solve-the-hardest-logic-puzzle-ever
譯者註:
1、簡化版問題1的提問相當於:冥王星是矮行星,你是騎士,這兩個命題的真假相同嗎?
2、終極問題的第一問也可以這麼問:
以下三個命題是否有奇數個是對的:你是偽之神,「噠」代表是,乙是任性。
3、強迫症患者望著三位大神遠去的背影問了第四個問題:所以「噠」到底是什麼意思?
閱讀更多
內容合作請聯繫
keyanquan@huanqiukexue.com
這裡是「科學美國人」中文版《環球科學》服務科研人的微信號「科研圈」。我們:
· 關注科學進展與科研生態
· 推薦重要前沿研究
· 發布科研招聘
· 推送學術講座與會議預告。
歡迎長按二維碼關注。