メインコンテンツへスキップ
スマリヤンの論理パズルの形式化と対称性の美しさ

スマリヤンの論理パズルの形式化と対称性の美しさ

·
論理学 パズル 数学 形式化 スマリヤン
KONDO Kenji
著者
KONDO Kenji
目次

スマリヤンの 『哲学ファンタジー』 にある 美しい対称性を持つ問題 について、問題を形式化してその構造の美しさを際立たせる。

問題
#

問題 1
#

二人の兄弟のうち一人はジョンである。二人のうち一人は常に嘘をつき、他の一人は常に本当のことしか発言しないが、ジョンが正直か嘘つきかわからない。あなたはこの二人と出会い、どちらがジョンか知りたいとしよう。あなたは、一人だけに向かって、三単語の質問をすることができるが、何と尋ねればよいだろう?

問題 2
#

問題 1 の状況で、今度は、どちらがジョンであるかではなく、ジョンが正直か嘘つきかを知りたいとしよう。どんな三単語の質問で、これがわかるだろうか?

問題 3
#

同じ状況で、2 つの質問を考える。第一の質問をすれば、第二の質問に対する正しい答えを知ることができ、第二の質問をすれば、第一の質問に対する正しい答えを知ることができる。これらの三単語の質問とは何だろう?

回答
#

問題 1 は “Is John truthful?” という質問をすればよい。この質問ならば、聞いた相手が正直でも嘘つきでも、その人が John である限り常に “Yes” と答えるし、 John でなければ常に ”No” と答える。

問題 2 は “Are you John?” という質問をすればよい。もしその答えが “Yes” ならば、聞いた相手が John でありかつ正直ものであるか、John でなくかつ嘘つきである場合のいずれかである。どちらの場合も「John が正直である」ということがわかる。“No” という回答であった場合も同様に考えれば「John が嘘つきである」ということがわかる。

問題 3 は、第一の質問として “Is John truthful?” を、第二の質問として “Are you John?” を用いればよい。

問題 3 は非常に面白い。目の前にいる相手がジョンかどうかを知りたいときには「ジョンは正直ものか?」を問えば答えがわかり、ジョンが正直ものかどうかを知りたいときには「君はジョンか?」と問えば答えがわかるという、美しい対称性を持つ構造になっている。

形式化
#

上だけでも十分面白いが、これを形式化して、何が起きているかをより明らかにしたい。

$J(y)$ を「$y$ はジョンである」という命題とする。
$T(y)$ を「$y$ は正直ものである」という命題とする。

「ジョンは正直ものである」を論理記号を用いて表現しようとすると

$$\forall y (J(y) \Leftrightarrow T(y))$$

ということになる。つまり、ある人物がジョンである場合にはその人物が正直ものである、ということが常に成り立ち、同時にその人がジョンでないならば、その人物も正直者ではない(嘘つきである)ということである。

ここで $y$ の候補は二人の兄弟しかおらず、かつ一人がジョンならばもう一人はジョンではないので、$y$ を目の前の聞き手と解釈すれば、

$$J(y) \Leftrightarrow T(y)$$

としても意味は変わらない。

また「あなたはジョンである」は、上の記号を用いれば

$$J(y)$$

となる。

これで問題 1, 2 の質問をそれぞれ言い換えると、以下のようになる。

問題 1 の質問
$P_1$:「ジョンは正直ものか?」すなわち $T(y) \Leftrightarrow J(y)$ の真偽は?

問題 2 の質問
$P_2$:「あなたはジョンか?」すなわち $J(y)$ の真偽は?

さて、$y$ への質問と回答を形式化したい。$y$ に命題を与えると、その真偽に関する回答を返すことから、$y$ への質問とその回答は命題関数 $D(\cdot)$ を用いて表現できる。

$D$ の形を考える。$A$ を任意の命題とする。$y$ が正直ものならば $D(A)$ は $A$ の真偽と同じになる。$y$ が嘘つきならば $D(A)$ は $\neg A$ の真偽と同じになる。これを一つで書けば

$$D(A) = T(y) \Leftrightarrow A$$

となる。これは以下のように真理値表を書いてみると、確かにその通りであることがわかる。

$T(y)$$A$$T(y) \Leftrightarrow A$
TTT
TFF
FTF
FFT

さて、$y$ に問題 1 の質問「ジョンは正直ものか?」をする。これは上で定義した記号を用いると、

$$D(T(y) \Leftrightarrow J(y)) = T(y) \Leftrightarrow (T(y) \Leftrightarrow J(y))$$

ということになる。ここで一般に

$$A \Leftrightarrow (A \Leftrightarrow B) = B$$

ということが成立する。これは以下のように真理値表を書いてみればよくわかる。

$A$$B$$A \Leftrightarrow B$$A \Leftrightarrow (A \Leftrightarrow B)$
TTTT
TFFF
FTFT
FFTF

ということで、$D(T(y) \Leftrightarrow J(y)) = J(y)$ となる。言い換えれば

$$D(P_1) = P_2$$

である。

そして問題 2 の質問を考える。これは

$$D(J(y)) = T(y) \Leftrightarrow J(y)$$

なので、

$$D(P_2) = P_1$$

が成立する。

これで、$P_1$ と $P_2$ は $D$ に対して対称性を持つことがわかった。

ちなみに問題 3 は

$$D^2 (P_1) = P_1$$

であり

$$D^2 (P_2) = P_2$$

が成立することを言っている。

追加の考察
#

この問題では「誰がジョンであるか」を知る方法を考えたが、「誰が正直ものであるか」を知りたいときはどうすればよいだろうか?

これには $D$ の定義を変える必要がある。$D$ の定義を変更した $D’$ を考える:

$$D’(A) = J(y) \Leftrightarrow A$$

これはすなわち、聞いた相手がジョンならば $A$ の真偽を正確に答え、聞いた相手がジョンでない場合は $A$ の真偽の逆を答える、ということである。非常に人工的な定義であり、聞いた相手はトリッキーな判断をすることになる。

これならば、先程の議論を繰り返せば、「あなたが正直ものであるか」を確かめるために「ジョンは正直ものであるか」を聞けばよいことになる。

すると、

$$D’(J(y) \Leftrightarrow T(y)) = J(y) \Leftrightarrow (J(y) \Leftrightarrow T(y)) = T(y)$$

となるため、聞いた相手が正直ものかどうかがわかる。

しかし、これはどうもおかしい。

そもそも $D’$ の定義を見ると、これは正直ものをジョンと言い換えただけにすぎない。まるで正直ものの代名詞としてジョンと表現しているかのようだ。$D$ も $D’$ も、どちらも正直ものか嘘つきかという点で本質は変わらない。

ここからも面白い性質を見いだせる。

ある人物が「ジョンであるか」や「正直者であるか」というのは、単にその人物が持つ属性であるように見える。しかしながら、この問題は属性の中でも 論理的に 性質が異なるものがあることを示唆している。つまり、「正直者であるか否か」という属性は「ジョンか否か」という属性ではカバーできない、何か特有の性質を秘めているということだ。これが何なのか、まだ特定できていない。

関連記事

AND と OR だけで NOT を表現できない理由
数学 論理学 証明
Jカーブをちゃんと計算するとわかること
数学 ビジネス 分析 Jカーブ
『エントロピーと多様性の数理』をちょっと読んだ
数学 エントロピー 多様性 読書メモ