こんにちは。今回はとある論理パズルを紹介します。
アコナール入りボトルを特定せよ
問題. とある星には「アコナール」と呼ばれる物質がある。アコナールをその星の住人が摂取すると、摂取から1時間後に、普段は白い体が赤くなることが知られている。特にそれ以外に健康に影響はなく、赤くなった体も数時間後には元に戻る。
アコナールのイメージ この星で水の入ったボトル1000本が倉庫から見つかった。このうち1本にのみアコナールが含まれることが分かっている。このアコナール入りのボトルをうまく特定したい。
そこで特定のための試飲会を開き、試飲係を何人か雇うことにした。試飲は以下の手順で行う。
- すべての試飲係に一つずつコップを配り、それぞれに1000本のボトルのいずれかから水を注ぐ。このとき一つのコップに複数のボトルの水を注いで混ぜてもよいし、同じボトルの水を複数のコップに注いでもよい。
- すべてのコップに注ぎ終わったら、試飲係全員に合図を送る。各試飲係は合図と同時に持っているコップの水をすべて飲む。
- 合図から1時間後の各試飲係の色(赤か白か)を確認したら、給料を渡して解散。
この試飲会でアコナール入りボトルを確実に特定するには、最低何人の試飲係を雇う必要があるだろうか?
この問題自体はとても有名なもので、ググると割とすぐに解法を見つけることができると思います*1。
以下に解答を書きます。自分で考えたい人は一度読むのをストップしてください。
↓
↓
↓
↓
↓
↓
↓
↓
【答え】10人
【解説】
試飲係の人数を とおきます。試飲会の最終盤、各試飲係の色はそれぞれ赤または白なので、結果のパターンは
通りあります。一方で、1000本のボトルのうちどれがアコナール入りかについては、当然
通りあります。したがって、試飲の結果からアコナール入りのボトルを確実に特定するには、少なくとも
を満たす必要があります。
なので、最低でも
を満たす必要があります。
逆に試飲係 10 人で実際に特定する方法を与えます。試飲係を仮に A, B, C, D, E, F, G, H, I, J としましょう。さらに各ボトルにも 1 ~ 1000 の番号を振っておきます。1 ~ 1000 の数を二進法で表示すると、以下の通り10桁以下の数で表示できます。
これをもとにして、以下の手順でコップに注ぐようにします。
番目のボトルを手に取る。
を10桁の二進法で表示し、各桁を左から A, B, ..., J に対応させ、1となった試飲係のコップにこのボトルの水を注ぐ。
- 以上を
のすべてで順に行う。
さて、この注ぎ方をしたあと、試飲係に飲んでもらいます。1時間後、例えば A, B, ..., J の色が以下のパターンになったとしましょう。
アコナール入りボトルを特定せよ(強化版)
ではこの問題をさらに難しくしてみましょう。
問題. アコナール入りのボトルが1000本中2本の場合、アコナール入りボトルをすべて確実に特定するには、最低何人の試飲係を雇う必要があるか?
実は本数を2本にするだけで途端に難しい問題となり、実は私もまだ解けていません。ですが、問題を言い換えているうちに面白い数学っぽい問題が生えたので、それを紹介したいと思います。
1000であることに深い意味はないので、一般化しておきます。
問題. アコナール入りのボトルが
本中2本のとき、
人の試飲係でアコナール入りボトルをすべて確実に特定することは可能か?
通常版の問題でやったように、各ボトル に対して、各試飲係
に飲ませるかどうかを 0 or 1 で表すことにします。これを
とでも置いてみましょう。添え字が2つあるので、行列にしてみます。
さて、もしボトル とボトル
がアコナール入りだったらどうなるか考えてみます。試飲会の最後に赤くなるのは、
が 1 または
が 1 となる
さんです。ここで
さて、試飲係たちの色の組み合わせによって、アコナール入りのボトルを確実に特定するためには、どのような条件が必要でしょうか?それは以下のように書くことができます。
問題.
を自然数とし、
とする。等式
が成立するような は存在するか?
以下は、この問題について数値的に探索した結果です。〇は が存在、×は
が存在しないことを表し、?は不明です。
| ↓ |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 〇 | × | × | × | × | × | × | × | × |
| 2 | 〇 | 〇 | × | × | × | × | × | × | × |
| 3 | 〇 | 〇 | 〇 | × | × | × | × | × | × |
| 4 | 〇 | 〇 | 〇 | 〇 | × | × | × | × | × |
| 5 | 〇 | 〇 | 〇 | 〇 | 〇 | × | × | × | × |
| 6 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | × | × |
| 7 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | ? |
以下は数値計算によらずとも示すことができます。
- 上の表のあるマスが〇なら、そのすぐ下も〇 (一部の試飲係をサボらせればOK)
- 上の表のあるマスが×なら、そのすぐ右も× (判定できない状態でボトルを増やすともっと無理)
なら〇 (実際、
なら単位行列、
なら単位行列の右に 0 の列を追加したもの、
なら単位行列の下に 0 の行を追加したものが条件を満たす)
なら× (
となるため)
もちろんすべての について数値的に求めることはできないので、具体的に構成できた例を眺めながら、なにかしら一般法則を見いだせないかなぁと考えているのが現在の状況です。
もし「解けたよ」という方や「答えを知っているぞ」という方がいれば、こっそり教えてください。
ではまた。
*1:元ネタは毒入りのワインを特定する問題です。ちょっとだけマイルドな状況にしてみました。
