眠り姫問題のプログラム
|
このうち問2と問3が「眠り姫問題」であるという。この答えには、二つの流派がある。問2 の答えに 1/2 と答える派と、1/3 と答える派である。
問2に 1/2 と答える派はたいてい、問3に 2/3 と答える。問2 に 1/3 と答える派はたいてい、問3 に 1/2 と答える。
それぞれの派について、その考えに基づくシミュレーションをして数え上げるプログラムを Perl で記述してみよう……というのが本稿である。
■ |
1/2 派
|
our $TRIALS = 10000; # 試行数 MAIN: { my $Mon_A = 0; my $Trial2 = 0; my $Trial3 = 0; for (my $i = 0; $i < $TRIALS; $i++) { my $A_or_B = (rand(1) < 0.5)? "A" : "B"; my $Mon_or_Tue = (rand(1) < 0.5)? "Mon" : "Tue"; if ($A_or_B eq "A") { $Trial2++; $Trial3++; $Mon_A++; } elsif ($A_or_B eq "B" && $Mon_or_Tue eq "Mon") { $Trial2++; $Trial3++; } elsif ($A_or_B eq "B" && $Mon_or_Tue eq "Tue") { $Trial2++; } } printf("result 2 = %g\n", $Mon_A / $Trial2); printf("result 3 = %g\n", $Mon_A / $Trial3); }
実行すると次のようになる。
$ perl sleeping_beauty_h.pl result 2 = 0.5044 result 3 = 0.671548
上で result 2 が問2 の確率、result 3 が問3 の確率になる。
1/2 派の考え方のキモは、場合 B において 問2 や 問3 が問われるとき、月曜と火曜のどちらか一方でしか尋ねられず、おそらく等確率で月曜か火曜に問われることが決まると考えるところだろう。問3 については、火曜に問われると決まったときは、「今は月曜日である」のところを「今は火曜日である」と変えたものが問われると考えるとなる。
上掲書の三浦(など)は多数回実験が繰り返される場合は、1/3 派になるようなことを述べるが、上のプログラムのように多数回でも 1/2 派の数え方は可能であると私は考えた。
場合 A で月曜である事象を MonA、場合 B で月曜の事象を MonB、場合 B で火曜の事象を TueB と表すと、P(MonA) = 1/2、P(MonB) = 1/4、P(TueB) = 1/4 となる。月曜日であると告げられる事象を Mon と表すと、P(MonA|Mon) は次のように求まる。
P(MonA|Mon) = P(MonA)P(Mon|MonA) / (P(MonA)P(Mon|MonA) + P(MonB)P(Mon|MonB) + P(TueB)P(Mon|TueB)) = (1/2)(1) / ((1/2)(1) + (1/4)(1) + (1/4)(0)) = 2/3
これは上の実験結果と一致する。
■ |
1/3 派
|
our $TRIALS = 10000; # 試行数 MAIN: { my $Mon_A = 0; my $Trial2 = 0; my $Trial3 = 0; for (my $i = 0; $i < $TRIALS; $i++) { my $A_or_B = (rand(1) < 0.5)? "A" : "B"; if ($A_or_B eq "A") { $Trial2++; $Trial3++; $Mon_A++; } elsif ($A_or_B eq "B") { # Mon $Trial2++; $Trial3++; # Tue $Trial2++; } } printf("result 2 = %g\n", $Mon_A / $Trial2); printf("result 3 = %g\n", $Mon_A / $Trial3); }
実行すると次のようになる。
$ perl sleeping_beauty_t.pl result 2 = 0.334223 result 3 = 0.501
上で result 2 が問2 の確率、result 3 が問3 の確率になる。
1/3 派の考え方のキモは、試行数の数え方をコインを投げた回数ではなく、目覚めた回数で数えることだろう。1/2 派と違って「月曜か火曜に」ではなく「月曜も火曜も」同様のインタビューを受けると考えるとする。
事象 MonA、MonB、TueB を 1/2 派の場合と同じ事象を表すとすると、P(MonA) = 1/3、P(MonB) = 1/3、P(TueB) = 1/3 となる。P(MonA|Mon) は次のように求まる。
P(MonA|Mon) = P(MonA)P(Mon|MonA) / (P(MonA)P(Mon|MonA) + P(MonB)P(Mon|MonB) + P(TueB)P(Mon|TueB)) = (1/3)(1) / ((1/3)(1) + (1/3)(1) + (1/3)(0)) = 1/2
これは上の実験結果と一致する。
■ |
1/3 派その2
|
基本、上の 1/2 派の考え方に立ちながら、結果、問2 に 1/3 の答えが出るような数え方もある。それをプログラミングしてみる。sleeping_beauty_t2.pl がそれであるが、大事な部分を次に抜き出す。
our $TRIALS = 10000; # 試行数 MAIN: { my $Mon_A = 0; my $Trial2 = 0; my $Trial3 = 0; for (my $i = 0; $i < $TRIALS; $i++) { my $A_or_B = (rand(1) < 0.5)? "A" : "B"; my $Mon_or_Tue = (rand(1) < 0.5)? "Mon" : "Tue"; if ($A_or_B eq "A" && $Mon_or_Tue eq "Mon") { $Trial2++; $Trial3++; $Mon_A++; } elsif ($A_or_B eq "A" && $Mon_or_Tue eq "Tue") { # do nothing. } elsif ($A_or_B eq "B" && $Mon_or_Tue eq "Mon") { $Trial2++; $Trial3++; } elsif ($A_or_B eq "B" && $Mon_or_Tue eq "Tue") { $Trial2++; } } printf("result 2 = %g\n", $Mon_A / $Trial2); printf("result 3 = %g\n", $Mon_A / $Trial3); }
実行すると次のようになる。
$ perl sleeping_beauty_t2.pl result 2 = 0.331815 result 3 = 0.49829
上で result 2 が問2 の確率、result 3 が問3 の確率になる。
1/2 派の考え方のキモとして、月曜と火曜のどちらか一方でしか尋ねられず、等確率で月曜か火曜に問われることが決まると考えることを挙げた。場合 Aのとき「火曜」と決まったら、上の 1/2 派のプログラムにおいては、強制的に「月曜」と解釈して数えたが、こちらのプログラムでは、その試行は「なかったこと」にすることにした。すると、1/3 派と同じ答えが得られるようだ。場合 A で 火曜 と決まったときは、実験条件にあわないので、問2 においても数えないことに注意して欲しい。
事象 MonA、MonB、TueB をこれまでと同じで、さらに場合 A で火曜である事象 TueA も考える。P(MonA) = 1/4、P(TueA) = 1/4、P(MonB) = 1/4、P(TueB) = 1/4 となる。今回はまず実験条件に合うという事象 Q について先に考えないといけない。問 2 の答えは P(MonA|Q) になるが、それは次のように計算する。
P(MonA|Q) = P(MonA)P(Q|MonA) / (P(MonA)P(Q|MonA) + P(TueA)P(Q|TueA) + P(MonB)P(Q|MonB) + P(TueB)P(Q|TueB)) = (1/4)(1) / ((1/4)(1) + (1/4)(0) + (1/4)(1) + (1/4)(1)) = 1/3
問3 の答え P(MonA|QかつMon) は次のように求まる。
P(MonA|QかつMon) = P(MonA)P(QかつMon|MonA) / (P(MonA)P(QかつMon|MonA) + P(TueA)P(QかつMon|TueA) + P(MonB)P(QかつMon|MonB) + P(TueB)P(QかつMon|TueB)) = (1/4)(1) / ((1/4)(1) + (1/4)(0) + (1/4)(1) + (1/4)(0)) = 1/2
これらは上の実験結果と一致する。
■ |
ニック・ボストロムの考え方
|
モンティ・ホール問題で、司会者が一つのドアを開示したあとプレイヤーこと「観測者」にとってドアごとに確率が異なることになる。しかし、その経過を知らずに突然、その場に現れた者がいたとしたら、その者にとって、ドアの確率は等しいと仮定せざるを得ない。観測によって可能世界の形が変形を受ける……ということはありえる。それを「観測選択効果」と呼ぶかどうかはわからないが……。
情報が与えられているか否かで、確率の評価は変わりうる。情報を与えられるごとに確率は変わりうる。
上掲書の「眠り姫問題」の拡張を論じるところ(p.259)で、ニック・ボストロムが、上の問2 と問3 に相当する問題について確率が共に 1/2 だと答えるのは、私には必ずしもおかしいとは思えない。それは上掲書にあるようなボストロムの反論に納得するからではなく、情報の与えられ方の問題だと考えるからだ。
つまり、私は、問2と問3で共に 1/2 と答える流儀もあるという考え方を認める。それは、問2 の段階では曜日が大事であるという認識はなかったため、1/2 派の観方をしていたが、問3 の段階で曜日が大事であるという情報が手に入ったため 1/3 派のフレームで問題をとらえなおした……ということはありうるからである。
上掲書ではさらに、コインの「先投げ」「後投げ」で観方が変わるという論をとっている。プログラムでは「先投げ」をしているが、「後投げ」に変えるとなると 1/2 派のプログラムではうまく適合せず、1/3 派か 1/3派 その2をベースに使うことになるだろう。つまり、「後投げ」ならば 問2 には 1/3 と答えるしかなくなる。ただし、「先投げ」「後投げ」に関して語られる「眠り姫問題」と「終末論法」との関係は私にはよくわからなかった。
■ |
グルジェフ版眠り姫問題
|
上掲書に載っている「グルジェフ版眠り姫問題」は「眠り姫問題」を次のように変えた問題である。
|
この t = 0 の場合が、「グルジェフ版眠り姫問題」のようだ。
上掲書が「グルジェフ版眠り姫問題」については、1/3 派でしかないということに異論はない。なぜなら、1/2 派のプログラムでしたような月曜か火曜かをランダムに決めるという要素がないと確実に言えるからである。
上の記述にしたがってプログラムで書こうとすると、t をランダムにすることが考えられる。そうすると t = 0 となるのはほとんど不可能になるが、ごくまれにそれは起こりうるかもしれない。その場合が起こったとして特別な確率を考える……というのは何か意味がありそうにも思えるが、この問題の設定であれば、ごく簡単な結論しかない。上で述べたように、場合 A の確率は 1/3 と数えるということでしかない。
上掲書ではこの問題の説明の際に、明晰さや覚醒に関していろいろ述べているが、私にはよくわからなかった。
■ |
参考
|
更新: | 2017-02-11--2017-02-13 |
初公開: | 2017年02月11日 19:24:13 |
最新版: | 2017年02月13日 05:06:20 |
2017-02-11 19:24:07 (JST) in Perl シミュレーション | 固定リンク | コメント (1) | トラックバック (0)
コメント
投稿: JRF | 2017-02-12 12:08:37 (JST)