"100人の囚人問題"とか"100人の囚人と50個の箱"と呼ばれる数学のパズルがある。英語では"100 prisoners problem"、"The locker puzzle"、"100 lockers puzzle"などと言わるようである。大変有名な問題なので、web上探せばいくつも解説ページが出てくる。
これはある課題を達成するための良い戦略を考える問題である。後述するように、直観では不可能にも思える課題であるにも関わらず、驚くべき戦略が存在する。
一連の記事で、解答として一般に提示される戦略が、単に良いだけではなく最善であることに関してコメントする。その証明はRef.[1]に書かれている。数学的な証明というよりは解説文的な感じなので、大変平易に書いてある。が、それでも、自分にはちょっとわかりにくいところがあった。また、英語のWikipediaに100 prisoners problemのページ(Ref.[4])があり、その記事のoptimality(最良性)の項目を読んだのだが、いまいち解説が的を射てないように思う。さらに日本語の解説ページも見つけられなかったので、ここに記しておくことにした。
一つの記事にまとめると長くなるので、前座である本記事と、最善の証明を解説した次の記事に分けた。本記事"その1"ではまず、問題の提示と、ある程度詳しい解答を書いておく。これは長ったらしいので(他のサイトと同じだと面白くないと思い...)、短いのがお好みな方は例えばRef.[2]を参照されたい。最善の証明に関しては次の記事"その2"で解説する。すでに問題と解答を知っている方は、"その2"から読んでいただければと思う。
100人の囚人問題は、通常100人の囚人と50個の箱が出てくるが、ここではRef.[1]にならい、ロッカーを使った形で書いておく。
ある部屋に100人集められている。別の部屋に100個のロッカーがあり、それぞれのロッカーには100人のうち1人の名前が書かれた紙が入れてある。違うロッカーには違う名前の紙が入っている。
順番を決め、1人がロッカーの部屋に入り、50個のロッカーを開ける。その中に自分の名前があれば、ロッカーを元の状態に戻し、次の人がロッカー部屋に入り、50個のロッカーを開ける。これを繰り返し、100人が皆自分の名前を見つけられたらゲームは成功。1人でも名前が見つけられなければゲームは失敗である。
100人はゲームを始める前に議論し戦略を決めることができる。ただしゲームが始まったらお互いに話すこと・情報を伝えることはできない。
このゲームにおいて、30%以上の確率で成功する戦略を考えよ。
皆ランダムにロッカーを開けるとしたら、成功する確率は
この問題の解答として、"pointer following"(以下p.f.と称する)とか"pointer chasing"と呼ばれる以下の戦略が存在する:
人とロッカーに番号をふる。
もう少し数学的にマシな言い方に変えると以下のようになる。
人とロッカーが
は
この時、p.f.は以下の戦略である:
を開ける。
問題では50個のロッカーを開けるが、以下自分の名前を見つけるまでロッカーを開け続けることとし、開けたロッカーの個数が皆50個以下なら成功ということにしよう。これは元のゲームと等価である。
このゲームにおいて、以下が成り立つ:
を満たす。
この時
これは次のようにしてわかる:
である。よって
であり、かつ
である。
以上の準備でp.f.における成功率を求めることができる。この確率は
ランダムに状態
である。
これを計算するため、ランダムな
である。
である。ただし
また、
以上から、長さ
である。
である。
ゲームの成功率は長さ51以上のループが存在する確率を1から引いたものなので、
と書ける。ここで、
以上より、このゲームに成功する確率は
である。確かに成功率は30%を超えている。
ちなみに、
であり、かつこの右辺は
である。すなわち、どんなに人とロッカーが増えても、成功率は3割を超えることがわかる。厳密には、上記のマクローリン展開の収束半径は1であり、
問題および解答の解説は以上である。私が最初にこの問題を知ったのは、togetterの"あなたは解けるか?面接合格をかけた超難問論理パズル"(Ref.[3])という記事による。最初の方にも書いた通り、みんながランダムにロッカーを開ければ成功率は
(注)「最初の値」を
具体的に
このとき
の2通り存在。
一方
の2通り存在。
しかし[1a]と[2a]はどちらも「1のロッカーに2, 2のロッカーに3、3のロッカーに1の番号が入っている」という、同じロッカーの状態に対応する。[2a]で
[1b]と[2b]も「1のロッカーに3, 2のロッカーに1、3のロッカーに2の番号が入っている」という同じ状態。[2b]で