100 人 (または偶数 2N :-) の囚人が部屋 A にいます。囚人には 1 から 100 までの番号が付けられています。
囚人1号から100号の順に1人ずつ、1から100までの100個の箱が並ぶ部屋Bに入れられます。(閉じた) ボックスの中には 1 から 100 までの数字があります (ボックスの中の数字はランダムに並べ替えられています!)。
部屋Bに入ると、各囚人は50個の箱を開けることができます(彼はどの箱を開けるかを選択します). 彼がこれらの 50 個のボックスの 1 つに割り当てられた番号を見つけた場合、囚人は部屋 C に入ることができ、次のボックスが部屋 A から部屋 B に入る前に、すべてのボックスが再び閉じられます。部屋A、B、C)が殺されます。
部屋 B に入る前に、囚人は戦略 (アルゴリズム) に同意することができます。部屋間で通信する方法はありません (部屋 B にメッセージを残すことはできません!)。
すべての囚人が生き残る確率を最大化するアルゴリズムはありますか? そのアルゴリズムが達成する確率は?
ノート:
物事をランダムに行う (「戦略なし」と呼ばれるもの) と、確かに各囚人に 1/2 の確率が与えられますが、すべての囚人が生き残る確率は 1/2^100 (非常に低い) です。もっとうまくやれる!
囚人は箱を並べ替えることはできません!
囚人が最初に自分の番号を見つけられなかった場合、すべての囚人が殺されます。しかも通信不可。
ヒント:平均して30 人以上の囚人を救うことができます。これは (50/100) * (50/99) * [...] * 1 よりもはるかに多くなります。