巷で話題の論理クイズに百匹のドラゴン問題というものがある。マイクロソフトの入社試験で出されたとか噂されているアレである。子供向けの本としてベストセラーになった、あの論理クイズの本にも載ってるらしい(昔チラッと立ち読みした)
こういうものだ。*1
【問題 P】
ある島に百匹のドラゴンが住んでいる。ドラゴンたちはみな論理的思考をする。ドラゴンには赤目のものと緑目のものしかいない。その島のドラゴンはみな緑目である。その島には、緑目のドラゴンは島を飛び立たねばならないという掟と、互いの眼の色に言及してはならないという掟と、飛び立つときは誰にも見られず、自分が緑目だと確信した日の夜 23 時に飛び立たねばならないという掟と、毎日 13 時に集会をしなければならないという掟がある。掟以外で島を飛び立つドラゴンはいない。その島には鏡も、顔が映る水面もないため、ドラゴンたちはみな自分以外のドラゴンの眼の色は見えるが、自分の眼の色は判らない。
ある日この島を人間の旅人が訪れ、ドラゴン全員が集会に集まっているところで言った。
「この中に少なくとも一匹、緑目のドラゴンがいる」
このあと何が起きるだろうか?
巷間に流布されている答えは「百日目に百匹のドラゴンが一斉に飛び立つ」というものである。
結論から言うとこれは間違いである。正しい答えは「何も起きない」だ。「島全体でドラゴンが三匹以上のとき、何も起きない」だ。今回この問題をじっくり考えて、正しい答えと、なぜこの誤答が出てきたかまで判ったので、この記事にまとめておきたい。
で、よくある誤答の解説を紹介するところから始めようかと思ったが、その前に、結論は同じ「何も起きない」だが、思考過程が間違っている誤答というものがある。先にそちらを論駁しておこう。それはこういうものである。
旅人が訪れる前の島の状態を考えると、ドラゴンたちはみな「少なくとも一匹、緑目のドラゴンがいる」ことを知っていた。一匹どころか自分以外の 99 匹が緑目であることを知っているのだ。つまり、旅人の言葉は何も新しい情報を付け加えていない。ゆえに【問題 P】の答えは「何も起きない」である。
これは私の考える正解ではない。結論は同じだが私の考える正解は別物である。次の問題を考えると判りやすいだろう。
【問題 Q】
ある島に百匹のドラゴンが住んでいる。(略)
その島のドラゴンはみな緑目である。(略)
ある日この島を人間の旅人が訪れ、ドラゴン全員が集会に集まっているところで言った。
「この中に少なくとも 99 匹、緑目のドラゴンがいる」
このあと何が起きるだろうか?
【答え】
二日目の夜に百匹のドラゴンが一斉に飛び立つ。
【解説】
ドラゴン A はこう考える。私が赤目ならば、他の 99 匹のドラゴンは、今の言葉で、彼が「少なくとも 99 匹の緑目のドラゴン」の内の一匹であることに気付くだろう。今夜飛び立つだろう。さて、A が二日目の集会に向かうと全員が出席していた。A は「自分が赤目ならば」という仮定が間違っていたことに気付く。つまり自分は緑目である。A は二日目の夜に飛び立つ。同じことを全員のドラゴンが考えるので、全員が二日目の夜に飛び立つ。
というわけで、この場合、旅人の言葉は新しい情報をもたらしているのだ。なぜこれが新しい情報になるかと言うと、"全員が自分以外の 99 匹が緑目であることを知っている" ことと、「 "全員が自分以外の 99 匹が緑目であることを知っている" ことを全員が知っている」ことは別の事態だからである。旅人は後者を暴露したのである。旅人が来る前は "全員が自分以外の 99 匹が緑目であることを知っている" が、 "全員が自分以外の 99 匹が緑目であることを知っている" ことを全員が知っている、わけでは無かった。旅人の言葉を聞いた後は、 "全員が自分以外の 99 匹が緑目であることを知っている" し、全員が知っていることを、全員が知っている状態になったのである。面倒だから「自分が緑目であるかどうか確信を持てない」状態を、単純化して「自分が赤目だと信じている」状態と呼ぶとすると、旅人が来る前は、百匹の緑目のドラゴンがみな「自分だけ赤目で、自分以外は全員緑目である」と信じていた。途轍もなく非現実的である。そういう意味では不合理な信念である。非論理的にさえ見える。しかし、どんなに論理的思考ができるものでも、情報が限られていれば、誤った不合理な信念を持つことはありうる。旅人が来る前は、この島はそういう状態だったのだ。
以上、論駁終わり。これで読者諸賢を納得させられたのか心許ないが、ここは本題じゃないのでこれきりにする。
で、世間に流通している誤答の解説を紹介する。こういうものだ。
判りやすくするためにドラゴン一匹のケースから考えよう。旅人の言葉を聞いたドラゴンは「この島には一匹しかいないから、緑目のドラゴンとは自分のことだな」と考え、その日の夜に飛び立つ。
次にドラゴン二匹のケースを考える。それぞのドラゴンをアルファ, ブラボーとすると、一日目にアルファはこう考える。「自分は赤目か緑目かのどちらかである。自分が赤目なら、ブラボーは『少なくとも一匹の緑目のドラゴン』とは自分のことなのだと気付き、今夜飛び立つだろう。自分が緑目ならブラボーは飛び立たないだろう」。アルファが二日目の集会に向かうとブラボーが来た。そこでアルファはこう考える。「つまり、自分は緑目である」。その日の夜にアルファは飛び立つ。同じことをブラボーも考えるのでブラボーも二日目に飛び立つ。
次にドラゴン三匹のケースを考える。それぞのドラゴンをアルファ, ブラボー, チャーリィとする。アルファはこう考える。自分は赤目か緑目かのどちらかである。自分が赤目ならば、ブラボー, チャーリィは自分を除外して考えるので、互いに、島全体で二匹のケースと同様に考え、二日目にブラボー, チャーリィが飛び立つ。自分が緑目ならば、ブラボー, チャーリィは二日目に飛び立たず、三日目の集会に参加する。アルファが三日目の集会に向かうとブラボー, チャーリィが来た。そこでアルファはこう考える。「つまり自分は緑目である」。その日の夜にアルファは飛び立つ。同じことをブラボー, チャーリィも考えるのでブラボー, チャーリィも三日目に飛び立つ。
以降、どんなに数を増やしても同じことが起きる。n 匹のドラゴンだと n 日目にドラゴンが一斉に飛び立つ。
ゆえに百匹のケースでは、百日目に百匹のドラゴンが一斉に飛び立つ。
どうでしょう。納得できるでしょうか。私は何か腑に落ちないものを感じた。二匹のケースは判るが三匹のケースでは成り立たないように思えるのだ。さらに四匹バージョンに拡張することはできないように思えたのだ。で、今回じっくり考えて「何も起きない」という別の答えを得た。私にはこっちが正しいとしか思えないのだが、どうでしょうか。
まず上記のよくある解説を厳密に考えてみよう。一匹のケースは明らかなので省略するとして、二匹のケースから考えよう。
【問題 R】
ある島に二匹のドラゴンが住んでいる。(略)
その島のドラゴンはみな緑目である。(略)
ある日この島を人間の旅人が訪れ、ドラゴン全員が集会に集まっているところで言った。
「この中に少なくとも一匹、緑目のドラゴンがいる」
このあと何が起きるだろうか?【答え】
二匹のドラゴンが二日目に一斉に飛び立つ【解説】
全パターンを表にする。二匹のドラゴンをそれぞれアルファ, ブラボーとする。表①
d e f g アルファ 緑 赤 緑 赤 ブラボー 緑 緑 赤 赤 (d) から (g) の四つの世界線(可能性)が全パターンである。アルファはこう考える。まず「少なくとも一匹、緑目のドラゴンがいる」と言われたので、どちらも赤目の世界線 (g) は除外する。自分から見えるブラボーの眼の色は緑なので、世界線 (f) も除外する。残る二パターンは、世界線 (d) と世界線 (e) である。
表➁
d e アルファ 緑 赤 ブラボー 緑 緑 自分がいる世界が、自分が赤目である世界線 (e) ならば、ブラボーはその日のうちに自分が「少なくとも一匹いる緑目のドラゴン」であることに気付き、その日の夜に飛び立つだろう。自分が緑目なら、それは自分もブラボーも緑目の世界線 (d) であり、ブラボーは飛び立たないだろう。アルファが二日目の集会に向かうとブラボーが来た。そこでアルファはこう考える。「自分がいるのはどちらも緑目である世界線 (d) である。つまり自分は緑目だ」。その日の夜(二日目)にアルファは飛び立つ。同じことをブラボーも考えるのでブラボーも二日目に飛び立つ。
次にドラゴン三匹のケースを考える。
【問題 S】
ある島に三匹のドラゴンが住んでいる。(略)
その島のドラゴンはみな緑目である。(略)
ある日この島を人間の旅人が訪れ、ドラゴン全員が集会に集まっているところで言った。
「この中に少なくとも一匹、緑目のドラゴンがいる」
このあと何が起きるだろうか?【答え】
三匹のドラゴンが三日目に一斉に飛び立つ【解説】
全パターンを表にする。三匹目をチャーリィとする。表③
h i j k l m n o アルファ 緑 赤 緑 緑 緑 赤 赤 赤 ブラボー 緑 緑 赤 緑 赤 緑 赤 赤 チャーリィ 緑 緑 緑 赤 赤 赤 緑 赤 (h) から (o) の八つの世界線(可能性)が全パターンである。アルファはこう考える。まず「少なくとも一匹、緑目のドラゴンがいる」と言われたので、三匹とも赤目の世界線 (o) は除外する。ここで自分が緑目である場合と赤目である場合に場合分けして考える。自分が××目なら、残る二匹はどう考えるか、を考える。自分が緑目である場合、自分は今夜に島を飛び立たねばならない(しかし、これは仮定の上での話で、確信は持てないので現実には飛び立たない)。自分が赤目である場合、それは世界線 (i), (m), (n) の場合である。
表④
i m n アルファ 赤 赤 赤 ブラボー 緑 緑 赤 チャーリィ 緑 赤 緑 ブラボー, チャーリィが、自分が緑目かどうか知りたいとき、二匹にとって既に赤目だと判っているもの(アルファ)は無関係なので除外して考えられる。
表➄
i m n ブラボー 緑 緑 赤 チャーリィ 緑 赤 緑 これは島全体で二匹のバージョンと同じである。煩雑になるが、重要なところなので、少し表現を変えて繰り返そう。(i) から (n) の三つの世界線(可能性)が全パターンである(世界線 (o) を既に除外しているので)。ここでブラボーの視点に立って、世界がどう見えるのか考える。まずブラボーの眼から見えるチャーリィの眼は緑目なので、世界線 (m) は除外する。残る二パターンが全パターンである。
表⑥
i n ブラボー 緑 赤 チャーリィ 緑 緑 ここでブラボーは、自分が赤目ならばチャーリィはどう考えるか、を考える。自分が赤目ならば、チャーリィはその日のうちに自分が「少なくとも一匹いる緑目のドラゴン」であることに気付き、その日の夜に飛び立つだろう。ということは、ブラボーは翌日の集会に行けば、自分が緑目かどうか判るだろう。
さて、ブラボーが二日目の集会に向かうとチャーリィを含む全員が出席していた。ということはブラボーの想定の「自分が赤目ならば」という仮定が間違っていたのである。ブラボーは緑目である。とブラボーは確信する。その日の夜(二日目)にブラボーは飛び立つ。同じことをチャーリィも考えるのでチャーリィも二日目に飛び立つはずだ。……《段落 A》
つまり、この仮定の中ではブラボーとチャーリィは二日目の夜に一斉に飛び立つ。さて、アルファが三日目の集会に向かうとブラボーとチャーリィは出席していた。ということは最初のアルファの「自分が赤目であるなら」という仮定が間違っていたということである。アルファは緑目である。とアルファは確信する。
そして、三匹とも置かれた条件は同じなので、ここまでの思考はブラボーもチャーリィも行っている。ということは、三匹が三日目の集会に向かうと、そこには全員が出席している。それを見て、三匹は全員が同じ思考をしたことを知っているので、全員が自分が緑目だと確信する。その日の夜(三日目)に三匹は一斉に飛び立つ。
これはドラゴンを何匹に増やしても変わらない。というわけで、ドラゴンが n 匹だと、ドラゴンたちは n 日目に一斉に飛び立つ。ゆえに【問題 P】の答えは「百日目に百匹のドラゴンが一斉に飛び立つ」である。
どうでしょう。もっともだ。何も間違ってないじゃないかと思っただろうか。
実はこの解説は二匹バージョンまでは正しい。三匹バージョンに、論理の飛躍があるのだ。正しい二匹以下バージョンと間違った三匹以上バージョンをシームレスに繋げているために、全体で間違った解説になっているのだ。具体的に言うと、ここである。
さて、ブラボーが二日目の集会に向かうと
以後、先の解説では、この「二日目の集会」を現実の集会であるかのように描いている。しかし、冷静に考えてほしいが、これはアルファの「私が赤目ならば……」という仮定の中の「二日目の集会」なのだ。アルファの想像の中の集会なので、現実の集会とは違う。想像の中の「二日目の集会」は仮説の反証には使えない。それを先の解説では、現実の集会であり、仮説の反証に使えるかのように描いている(まぁ半分以上無意識の混同だろうけど)。ここにトリックがあるのだ。
では、現実の二日目の集会では何が起きるのか。《段落 A》を書き替える形で書こう。
さて、ブラボーが二日目の集会に向かうとチャーリィを含む全員が出席していた。「ということはブラボーの想定の『自分が赤目ならば』という仮定が間違っていたのである」ということになるか。いや、ならない。なぜなら現実の集会では、ブラボーの眼からはアルファの眼の色が見え、それは緑目だからである。先の解説でブラボーが「チャーリィが出席しているから、残り一匹の自分は赤目ではない(= 緑目だ)」と確信できたのは、そもそもこのブラボーの思考全体が、アルファの「自分が赤目であるならば」という想定の中のシナリオだったからだ。アルファは赤目であるという大前提があったからだ。現実にはアルファは緑目であり、現実の集会ではブラボーはそれを知っている。アルファは赤目じゃないので除外できない。ブラボーは「残り一匹の自分」ではない。だから現実の二日目の集会でブラボーが、チャーリィの出席を確認しても、ブラボーは自分の眼の色を知ることはできない。ブラボーは自分が緑目だと確信することはできないので、二日目の夜に飛び立たたず、三日目の集会に参加する。ブラボーが三日目の集会に参加するという結果は同じだが、理由が違うので、先の解説のその後の推論も成り立たない。*2 三日目の集会でアルファがブラボーの姿を確認しても、それはアルファに新しい情報をもたらさない。
以後、何日経とうが情報は増えないので、この状態が固定される。つまり、島全体で三匹だと何も起きない。これは三匹以上の何匹に増えようが変わらない。ゆえに正しい答えはこうである。
島全体で緑目のドラゴンが一匹のとき、ドラゴンはその日の夜に飛び立つ。島全体で緑目のドラゴンが二匹のとき、ドラゴンたちは二日目に飛び立つ。島全体で緑目のドラゴンが三匹以上のとき、何も起きない。したがって、【問題 P】の答えは「何も起きない」である。
どうでしょう。納得していただけたでしょうか。……いや、正直自分でも説明が下手な気がするな。別の角度から説明しよう。完全にアルファの視点に内属したところから説明しよう。
俗説の解説がやっていることは要するにこういうことである。アルファは自分が緑目かどうか判らないので、とりあえず赤目と仮定する。そしてブラボーの視点に潜り込み、
【ブラボーが自分を赤目だと仮定した】ならば【残り一匹のチャーリィは必然的に自分が緑目だと気付き*3 、一日目に飛び立つ】
という仮説を立てる。記号化するなら
D ⇒ E
である。ここから、現実にチャーリィは一日目に飛び立たなかったという観察を得る。つまり ¬E 。そして ¬E ⇒ ¬D 。これは D ⇒ E の対偶なので、D ⇒ E と同値である。ゆえに ¬D であり、ブラボーが自分を赤目だと仮定したのは間違いだった、ブラボーは自分が緑目だと気付く、という結論を導いている。しかし、先の解説を詳しく見れば判るように D は実は単数の命題ではない。正確に書くと
【アルファが自分を赤目だと仮定し、かつ、ブラボーが自分を赤目だと仮定した】ならば【残り一匹のチャーリィは必然的に自分が緑目だと気付き、一日目に飛び立つ】
という仮説である。正確に記号化するとこうだ。
( F ∧ D ) ⇒ E
だから対偶を取るとこうなる。¬E ⇒ ¬( F ∧ D ) 。これはド=モルガンの法則を使えばこうなる。¬E ⇒ ( ¬F ∨ ¬D ) 。ここから、あの解説では【ブラボーが自分を赤目だと仮定したのは間違いだった】( ¬E ⇒ ¬D ) という結論を導いている。しかし、これから導き出せる結論はそれだけではない。【アルファが自分を赤目だと仮定したのは間違いだった】( ¬E ⇒ ¬F ) も導ける。そして、一日目にチャーリィが飛び立たなかったという事実からは、どちらの結論を引き出すべきか決定できない。ゆえに例の解説のその後の推論も成り立たない。したがって、「島全体でドラゴンが三匹のときは、何も起きない」が正解になる。
俗説の解説では、ここ
ブラボー, チャーリィが、自分が緑目かどうか知りたいとき、二匹にとって既に赤目だと判っているもの(アルファ)は無関係なので除外して考えられる。
で、赤目のアルファ(つまり F )を早々に除外することによって、( F ∧ D ) を D という単数の命題に見せかけている。ここにトリックがあったのだ。
あともう一つトリックと言えばこれですね。よくある解説はこう考えてるんですね。
一匹のケースではその日の夜にドラゴンが飛び立つ。
↓
二匹のケースでは二日目に二匹が一斉に飛び立つ。
↓
よって、n 匹のケースでは n 日目に n 匹が一斉に飛び立つ。
この単純な勘違い。上記の取り違えとこの数学的帰納法(っぽいもの)との合わせ技で、彼らは「百匹のドラゴンなら百日目に飛び立つ」が答えだと早合点したのでしょう。
おまけ
まぁでも、島全体で二匹までしか成り立たないというのは寂しいですね。こういう問題にするとミスリードできるんじゃないでしょうか。
【問題 T】
ある島に百匹のドラゴンが住んでいる。(略)
その島のドラゴンは二匹だけ緑目で、他は全員赤目である。(略)
ある日この島を人間の旅人が訪れ、ドラゴン全員が集会に集まっているところで言った。
「この中に少なくとも一匹、緑目のドラゴンがいる」
このあと何が起きるだろうか?
【答え】
二日目の夜に緑目の二匹のドラゴンが一斉に飛び立つ。
【問題 U】
ある島に三匹のドラゴンが住んでいる。(略)
その島のドラゴンはみな緑目である。(略)
ある日この島を人間の旅人が訪れ、ドラゴン全員が集会に集まっているところで言った。
「この中に少なくとも二匹、緑目のドラゴンがいる」
このあと何が起きるだろうか?
【答え】
二日目の夜に三匹のドラゴンが一斉に飛び立つ。