史上最難邏輯謎題

**史上最難邏輯謎題**（義大利文：_L'indovinello più difficile del mondo_；英文：_The Hardest Logic Puzzle Ever_）乃美國哲學與邏輯學家 George Boolos 一篇文章的標題及其所載謎題的名稱。該文章於 1992 年先刊登在義大利《共和報》上，到了 1996 年再在《哈佛哲學評論》刊登英語版。謎題乃改編自美國邏輯學家雷德蒙・斯穆里安的創作，其內容如下：

> 有代號 A, B, C 的三位神祇，只知祂們名為「真實、虛謊、任性」，但不知哪個代號屬哪個名字。真實之神只說真話，虛謊之神只說假話，而任性之神會隨意說真話或假話。你的任務是利用三條是非題，找出 A, B, C 的身份，但每次只能向一位神祇發問。神祇們都懂得你的語言，但只會用祂們的語言回答 "da" 或 "ja"。這兩種回答，一個解「是」，一個解「否」，但你不知道哪個回答是哪個意思。
> 
> 

Boolos 於文中另有數點澄清：

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

## 歷史

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

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

## Boolos 的解答

此謎題有多個解答。Boolos 在原文中提出了其中之一（下一節將介紹另一個由 Rabern and Rabern (2008) 設計，相當簡潔易明的解答）。他的解答之中，**第一條問題的目的，在於找出一位並非任性的神。**這是最關鍵的一步。Boolos 在原文中詳述了這步是如何設計出來，但此處不贅。他的問題，是問 A：

> **1)**（Da 的意思是「是」）若且唯若（（你是真實）若且唯若（B 是任性））嗎？
> 
> 

上述問題用了邏輯學的術語「若且唯若」，一般人可能難於理解。然而，運用真值表計算，可以證明以上問題等價於以下者：

> **1)** 「Da 的意思是『是』」、「你是真實」、「B 是任性」三項命題之中，是否有單數的命題為真？
> 
> 

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

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

> **2)**（Da 的意思是「是」）若且唯若（羅馬位於義大利）嗎？
> 
> 

或者等價而簡單地問：

> **2)** Da 的意思是「是」嗎？
> 
> 

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

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

> **X:** A 是任性。
> 
> 

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

> **Q(X):**（Da 的意思是「是」）若且唯若 X 嗎？
> 
> 

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

> **Q(X):** 「Da 的意思是『是』」與 X 兩個命題，是否全對或全錯？
> 
> 

那麼：

* 若發問對象為真實之神，而祂回答 da，則 X 為真；若回答 ja，則 X 為偽。
* 若發問對象為虛謊之神，而祂回答 da，則 X 為偽；若回答 ja，則 X 為真。

將 X 換回具體內容「A 是任性」，第三條問題就是：

> **3)**（Da 的意思是「是」）若且唯若（A 是任性）嗎？
> 
> 

或者等價地：

> **3)** 「Da 的意思是『是』」與「A 是任性」兩個命題，是否全對或全錯？
> 
> 

因此：

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

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

## Rabern and Rabern 的解答

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

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

> **E(Q):** 若用你此刻的心態 (mental state) 來回答 Q 這條問題，你會回答 "ja" 嗎？
> 
> 

Rabern and Rabern 證明了以下引理。

> **內嵌問題引理 (Embedded Question Lemma)：** 無論向哪一位神祇發問 E (Q)，若祂回答 ja，則表示 Q 的真正答案必為「是」；若答 da，則 Q 的真正答案必為「否」。
> 
> 

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

> 有代號 A, B, C 的三位神祇，只知祂們名為 "Zephyr, Eurus, Aeolus"，但不知哪個代號屬哪個名字。三位神祇均只說真話。你的任務是利用三條是非題，找出 A, B, C 的身份，但每次只能向一位神祇發問。神祇們都懂得你的語言，並會用你的語言作答。
> 
> 

這個簡化版的謎題很容易解決。譬如設定三條問題如下 ——

* Q1: 你是 Zephyr 嗎？
* Q2: 你是 Eurus 嗎？
* Q3: 你是 Zephyr 嗎？

那麼 A, B, C 的身份可以輕易用以下策略套出：

 

現在要將以上策略轉化回解決 Boolos 謎題的方案。首先，將「真實、虛謊、任性」三神隨意標籤為 Zephyr, Eurus, Aeolus 三者，例如 Zephyr = 任性、 Eurus = 真實、Aeolus = 虛謊（實際上如何標籤三位神祇，並不重要），於是 Q1, Q2, Q3 變成

* Q1: 你是任性之神嗎？
* Q2: 你是真實之神嗎？
* Q3: 你是任性之神嗎？

然後，從簡化版謎題的發問流程中，將「是」換成 "ja"，「否」換作 "da" ，並將每項問題 Qi 置換成內嵌問題 E (Qi)，即可得出 Boolos 謎題的解：

 

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

### 無法解答的問題和神祇爆掉的腦袋

Rabern and Rabern 的解答中進一步設計了悖論式的問題，如，你會對這個問題用「否」在你的語言中對應的詞來回答嗎？

對於真實之神，這個問題是無法回答的，因為怎麼回答都會造成矛盾。於是 Rabern and Rabern 說明了問一個神問題，實際上有三種可能性：回答 ja，回答 da，或者腦袋爆掉。在這樣的設計下，Rabern and Rabern 給出了一個只需要問兩個問題就能識別所有神的方案。

## 附註

## 參考文獻