天秤とコイン

「可能性の分割」に着目してアルゴリズムに到達するまでの話。


問題

何枚かのコインの中に、1枚だけ偽物がまぎれこんだ。 偽物は本物とは微妙に重さが違うという。両天秤を使って 「どれが偽物で、それは本物より重いのか軽いのか」を 判定したいが、そのとき天秤を使う回数をできるだけ少なくしたい。 なお天秤にはコインしか乗せることができないものとする。分銅などは使えない。

3枚の場合

天秤を2回使えば判定できる。手順は次のとおり。

コインにA、B、Cの名前をつける。あとは次の表に従う。 「○○と△△を比べる」は、○○を天秤の左側の皿に・△△を右側の 皿に乗せて重さを比べるということ。「左」「右」「水平」は それぞれ「左の皿が下がった」「右の皿が下がった」「つりあった」場合を 意味する。

1回目 2回目 結論
まず
AとBを比べる
AとCを比べる Aが重い
ありえない
水平Bが軽い
AとCを比べる ありえない
Aが軽い
水平Bが重い
水平 AとCを比べる Cが軽い
Cが重い
水平ありえない

12枚の場合

天秤を3回使えば判定できる。その手順は次のとおり。

12枚のコインにA、B、…、Kの名前をつける。あとは以下の 表に従う。(スペースの都合で1回目の判定結果だけ横に組んでいる)

スタート: ABCDとEFGHを比べる
水平 IJとKAを比べる ABCEとDIJKを比べる ABCEとDIJKを比べる
水平 LとAを比べる 水平 FとGを比べる 水平 FとGを比べる
水平ありえない 水平Hが軽い 水平Hが重い
Lが重い Gが軽い Fが重い
Lが軽い Fが軽い Gが重い
IとJを比べる AとBを比べる DとAを比べる
水平Kが軽い 水平Cが重い 水平Eが重い
Iが重い Aが重い ありえない
Jが重い Bが重い Dが軽い
IとJを比べる DとAを比べる AとBを比べる
水平Kが重い 水平Eが軽い 水平Cが軽い
Jが軽い Dが重い Bが軽い
Iが軽い ありえない Aが軽い

N枚の場合

じっさいには問題文はコインの枚数を特定していないので、 コインが何枚のときでもうまく判定できるような一般的な手順を 答えなくては「問題を解いた」とはいえない。 とはいうものの、どこから手をつけたらいいかわからないときは 特定の小規模なケースについて考えることで 何かが見えてくることも多い。そこでしばらく12枚の場合を 考察してみよう。