史上最難邏輯謎題

史上最難邏輯謎題（意大利文：L'indovinello più difficile del mondo；英文：The Hardest Logic Puzzle Ever）乃美國哲學與邏輯學家  一篇文章的標題及其所載謎題的名稱。該文章於1992年先刊登在意大利《共和報》上L'indovinello più difficile del monde, La Repubblica, 16 April 1992.，到了1996年再在《哈佛哲學評論》刊登英語版George Boolos, The hardest logic puzzle ever , The Harvard Review of Philosophy, 6:62–65, 1996.。謎題乃改編自美國邏輯學家雷德蒙·斯穆里安的創作，其內容如下：

Boolos 於文中另有數點澄清：
 你可以問一位神祇多於一條問題，也可以完全不問祂問題。
 你可以根據之前其他問題的答案，來決定下一條問題的內容。
 任性之神如何作答，可以想像為祂會在腦中擲銅板，若擲得正面，則回答真話；反面，則答假話。 
 對於只有「是」或「否」兩種答案的問題，任性之神只會回答 da 或 ja。

 歷史 
Boolos 將發明此謎題的功勞歸於雷德蒙·斯穆里安，而「不知 da, ja 為何義」的變奏則歸功於程式語言 Lisp 的發明者及圖靈獎得主约翰·麦卡锡。斯穆里安創作過許多著名的「武士與無賴謎題」（Knights and Knaves puzzles），譬如在一個虛構的島上，島民若非只說真話的武士，就是只說謊的無賴，而謎題的主旨，就是問訪客如何靠詢問一些只有「是/否」兩種答案的問題，來獲取所需情報。1986年電影《魔幻迷宮》（LabyrinthLabyrinth (1986) , IMDb.）也有此等情節：有兩道門，各由一名門衛把守。一道門通向城堡，進入另一道則肯定引致死亡。門衛之中，一個說真話，一個只說謊。主角要靠問一條問題來找出通往城堡之路。最後主角問的是：「他（即另一名門衛）會否說這道門通往城堡？」

廣義來說，「史上最難邏輯謎題」可視為這類「武士與無賴謎題」的伸延。從斯穆里安的著作中，亦可找到類似的謎題。例如在《What is the Name of This Book》第149-156頁，他就描寫一個海地島嶼，當中一半住民為只說謊話的喪屍，另一半住民為只說真話的人類。儘管全體居民都諳英語，但古老的禁忌禁止他們用土話以外的語言交流。若問他們一條只有「是/否」答案的問題時，他們會回答 Bal 或 Da — 其中有一個解「是」，另一個解「否」，但島外人事前不知哪個才是「是」，哪個才是「否」。另一著作《The Riddle of Sheherazade》亦有其他相關謎題。

 Boolos 的解答 
此謎題有多個解答。Boolos 在原文中提出了其中之一（下一節將介紹另一個由 Rabern and Rabern (2008)Brian Rabern and Landon Rabern, A simple solution to the hardest logic puzzle ever, Analysis, 68(2):105-112, 2008.設計，相當簡潔易明的解答）。他的解答之中，第一條問題的目的，在於找出一位並非任性的神。這是最關鍵的一步。Boolos 在原文中詳述了這步是如何設計出來，但此處不贅。他的問題，是問 A：

上述問題用了邏輯學的術語「-{zh-hans:当且仅当;zh-hk:當且僅當;zh-tw:若且唯若;}-」，一般人可能難於理解。然而，運用真值表計算，可以證明以上問題等價於以下者：

之後兩條問題的發問對象，取決於第一條問題的答案。若 A 回答 da，餘下兩條問題將向 C 發問；若 A 回答 ja，餘下兩條問題將向 B 發問。可以證明，以此計策選出來的發問對象，必然是真實之神或虛謊之神兩者之一，而絕非任性之神。

第二條問題的目的，是在不明 da 及 ja 語義的情況之下，確認發問對象（已知為真實或虛謊兩者之一）的身份。問題內容是：

或者等價而簡單地問：

可以證明，不管 da, ja 兩者哪個指「是」，哪個指「否」，只要對方回答 da，就表示祂是真實之神；若回答 ja，則為虛謊之神。

由於第二條問題的發問對象（視乎情況，是 B 或 C）的身份已經鎖定，只要 A 的身份也能確知，餘下一神的身份亦可推得。因此，此時我們所關心的命題為

暫且不理 X 的內涵，先視它為一般命題。第三條問題的重點，是面對真實（或虛謊）之神，如何在 da, ja 語義不明的情況之下，針對任意的命題 X，設計出一條可以套出 X 真偽的複合問題 Q(X)。Boolos 所用的，是如下的複合問題——

換成一般人也能理解的問法，就是：

那麼：
若發問對象為真實之神，而祂回答 da，則 X 為真；若回答 ja，則 X 為偽。
若發問對象為虛謊之神，而祂回答 da，則 X 為偽；若回答 ja，則 X 為真。
將 X 換回具體內容「A 是任性」，第三條問題就是：

或者等價地：

因此：
若發問對象為真實之神，而祂回答 da，則 A 是任性之神，否則 A 為虛謊之神。
若發問對象為虛謊之神，而祂回答 da，則 A 乃真實之神，否則 A 為任性之神。

既知第二、三兩條問題的發問對象（視乎情況，是 B 或 C）與 A 的身份，餘下一神的身份可用消去法得知。留意謎題並無要求找出 da 及 ja 的語義，而 Boolos 提供的解答亦不能保證可解釋兩者的意思。

 Rabern and Rabern 的解答 
Rabern and Rabern (2008) 發現，只要利用一種特殊的複合問題，就可以將所謂「史上最難邏輯謎題」轉化為一道極為顯淺的謎題。

首先，對任何問題 Q，都可以定義如下的內嵌問題 (embedded question)：

Rabern and Rabern 證明了以下引理。

利用此引理，原來的謎題可以轉化成以下的簡單謎題：

這個簡化版的謎題很容易解決。譬如設定三條問題如下——
Q1: 你是 Zephyr 嗎？
Q2: 你是 Eurus 嗎？
Q3: 你是 Zephyr 嗎？ 
那麼 A, B, C 的身份可以輕易用以下策略套出：

 A答Q1     是              否                                     B答Q2       A答Q2    是      否        是      否                               A=ZephyrB=EurusC=Aeolus   A=ZephyrB=AeolusC=Eurus   B答Q3   B答Q3                是  否    是  否                                    A=EurusB=ZephyrC=Aeolus A=EurusB=AeolusC=Zephyr A=AeolusB=ZephyrC=Eurus A=AeolusB=EurusC=Zephyr

現在要將以上策略轉化回解決 Boolos 謎題的方案。首先，將「真實、虛謊、任性」三神隨意標籤為 Zephyr, Eurus, Aeolus 三者，例如 Zephyr=任性、 Eurus=真實、Aeolus=虛謊（實際上如何標籤三位神祇，並不重要），於是 Q1, Q2, Q3 變成
Q1: 你是任性之神嗎？
Q2: 你是真實之神嗎？
Q3: 你是任性之神嗎？ 
然後，從簡化版謎題的發問流程中，將「是」換成 "ja"，「否」換作 "da"  ，並將每項問題 Qi 置換成內嵌問題 E(Qi)，即可得出 Boolos 謎題的解：

 A答E(Q1)     ja              da                                     B答E(Q2)       A答E(Q2)    ja      da        ja      da                               A=任性B=真實C=虛謊   A=任性B=虛謊C=真實   B答E(Q3)   B答E(Q3)                ja  da    ja  da                                    A=真實B=任性C=虛謊 A=真實B=虛謊C=任性 A=虛謊B=任性C=真實 A=虛謊B=真實C=任性

簡化版謎題的任何其他解答，均可以如法炮製成解決 Boolos 謎題的方案。

 无法解答的问题和神祇爆掉的脑袋 
Rabern and Rabern 的解答中进一步设计了悖论式的问题，如，你会对这个问题用“否”在你的语言中对应的词来回答吗？

对于真实之神，这个问题是无法回答的，因为怎么回答都会造成矛盾。于是 Rabern and Rabern 说明了问一个神问题，实际上有三种可能性：回答 ja，回答 da，或者脑袋爆掉。在这样的设计下，Rabern and Rabern 给出了一个只需要问两个问题就能识别所有神的方案。

 附註 

 參考文獻 

Category:邏輯謎題