じぶん更新日記

1997年5月6日開設
Y.Hasegawa

連載インデックスに戻る

3月11日(木)

【思ったこと】
990311(木)[一般]3にまつわる手品・パズル(1)

 倉庫代わりに借りた古家への荷物を移動している最中、本棚の奥から、昔買ったパズルや手品の本がいっぱい出てきた。たいがいは、古本屋の100円均一で買ったものだが、ちょっとした頭の体操には好都合だ。先日来「だんご3兄弟」の歌にかこつけて「3」について取り上げてきたので、ここでは「3」にまつわるパズル・手品をいくつかご紹介したいと思う。なお、これらの手品やパズルは複数の本に紹介されていてすでにパブリックな情報となっていると考えられるので、ここではいちいち出典は掲げなかった。もし著作権上の問題があればご指摘いただきたい。

 まずは、トランプを3つの山に分ける手品。
  1. 相手の人に、トランプを同じ枚数ずつ3つの山に分けてもらう。何枚ずつ分けるかは相手の自由で私には教えない。但し最低3枚以上とする。
  2. 左右の山からそれぞれ3枚ずつ真ん中の山に移動してもらう。
  3. 左または右の山に残ったカードと同じ枚数分だけ真ん中の山から取り除いてもらう。
  4. 真ん中に残った枚数を私が当てる。
ちょっと考えればすぐに分かることだが、真ん中には常に9枚が残る。子供相手には受けるかも。

 次に3つのコップの手品。
  • あらかじめ、3つのコップを、上、下、上向きに置いておく。
  • この上下の向きを一度に2個ずつ反転させ、3回の操作で全部のコップを下向きにできることを私が実演する。
  • 次に相手に、おなじことをやってもらう。但し、コップの向きは、こっそりと、下、上、下向きにしておく。
  • 相手は何度試みても、全部のコップを3回の操作で下向きにすることができない。
これも子供相手には最適。上のトランプの手品と合わせて、どうしてそうなるかを自分で考えるようになればしめたものだ。

 次は3つの円についてのパズル。3つの円をお互いに重なるように(集合のベン図になるように)描く。それぞれの領域に1から9までの数字を書き込み、それぞれの円に含まれる4つの数字の合計が16になるようにするにはどうしたらよいか。これは有名な問題らしい。

 最後は碁石の移動問題。碁盤に白3個、黒2個の碁石が下のように並んでいる。

   ○●○●○

これを、隣り合った2個ずつを左右の位置を変えないように移動し3回の操作で下のように並び替えるにはどうしたらよいか。

   ●●○○○

 ただし、移動先は碁盤の同じ線上の空いた場所でなければならず、また完成状態の時、碁石の間に隙間があってはならない。

 ここで突然思い出したが、3回の操作で完成させる問題の女王と言えば、やはり、天秤でニセ金貨を見つけだす問題だろうか。これは
  1. n枚の金貨から何枚かをとって天秤で3回だけ計ることが許されている(天秤は2つの皿の重さが同じか違うかという情報だけを返す)。
  2. これらの金貨の中にはニセ金貨が1枚入っているかもしれないし、入っていないかもしれない。
  3. ニセ金貨がある場合は本物と重さが異なるが、本物より重いか軽いかは事前には分からない。
  4. ニセ金貨の有無を判定し、ニセ金貨が有る場合はそれがどれで本物より重いか軽いかを確定せよ。
 もう少し易しいバリエーションとして、「ニセ金貨が必ず1枚入っている」という条件をつけたものもある。問題は、「ニセ金貨があるかどうか分からない」場合と「必ずある場合」それぞれで、nの数は最大いくつまで可能かということだ。前者の場合はn=12まで可能、後者はn=13であったように記憶しているが、詳しいことは次回以降に。
【思ったこと】
990312(金)[一般]3にまつわる手品・パズル(2):偽金貨検出問題

[Image]  初めに昨日の3つの円の問題にミスがあったので訂正させていただく。当初「1から9までの数字を書き込み、それぞれの円に含まれる4つの数字の合計が16になるようにするにはどうしたらよいか。」と書いたあと、夕刻に領域が7個しかないことに気づき「1から7まで」と修正したが、これは「1から9まで」のままで良かった。左の図が正解。但しそれぞれの円の中の合計を等しくするだけだったら「1から7まで」でも左図右側のように配置することが可能だ。要するに、2つの集合の共通部分に入れる数値が1つずつ異なるので(ここでは1、2、3)、その増減とバランスをとるように、1個の集合だけに含まれる領域の数(ここでは5、6、7)を1個ずつずらせばよい。3集合の共通集合部分はどんな数でも関係ない。

 次に碁石の移動問題。これは、
○●○●○
○・・●○●○
○○●●・・○
・・●●○○○


というように3回の操作で可能だ。

[Image] [Image]
 、最後の、天秤でニセ金貨を見つけだす問題だが、「ニセ金貨があるかどうか分からない」場合はn=12個まで、「ニセ金貨が必ずある場合」はn=13個まで検出ができるはずだ。とりあえず「ニセ金貨があるかどうか分からない」というn=12個の場合について考察する。いずれも私のオリジナルの考察であるため、とんでもないミスをおかしている恐れがある。ご指摘いただければ幸いだ。

 まず第1回目は12個のうちの8個を2つに分けて計量する。

 第1回目の計量で重さが違う場合は「ニセ金貨が必ずある」ことが確定する。ここでは、1回目の計量で重いほうをA、B、C、D、軽いほうをE、F、G、Hと呼ぶことにする。なお1回目に計量で重さが違っていた場合は、残りの金貨は本物であることが確定するのでそれ以上は区別せずすべて「T(rue)」と呼ぶことにする。

 左上の図は2回目で、(A、B、E、F)を1つの皿に、DとHおよびすでに本物であることが確定しているT2枚をもう1つの皿に載せて計る方法。ここで
  • (ABEF)>(DHTT)の場合は、3回目でAとBの重さを比べ、重い方が偽物。A、Bが同じ時はHが偽物で本物より軽いことが確定。
  • (ABEF)<(DHTT)の場合は、3回目でEとFの重さを比べ、軽い方が偽物。E、Fが同じ時はDが偽物で本物より重いことが確定。
  • (ABEF)=(DHTT)の場合は、3回目でCとTの重さを比べ、異なればCは偽物。C=Tであれば、Gが偽物

 右上の別解は、2回目で(A、B、E)と(C、D、H)を比較する。
  • (ABE)>(CDH)の時は、3回目でAとBの重さを比べ、重い方が偽物。A、Bが同じ時はHが偽物で本物より軽いことが確定。
  • (ABE)<(CDH)の時は、3回目でCとDの重さを比べ、重い方が偽物。C、Dが同じ時はEが偽物で本物より軽いことが確定。
  • (ABE)=(CDH)の場合は、3回目でFとGを比べ、軽い方が偽物。

 いっぽう、第1回目の計量で重さが同じであった時は、1回目に天秤に載せた金貨はすべて本物であることが確定する。そこで2回目は、残されたうちの3個を、1回目で本物であることが確定した3個と比較する。
  • その3個が本物よりも重ければ、3回目は、そのうちの2個を比較し、同じならば残りの1個が偽物。違う場合は2個のうち重いほうが偽物。
  • その3個が本物よりも軽ければ、3回目は、そのうちの2個を比較し、同じならば残りの1個が偽物。違う場合は2個のうち軽いほうが偽物。
  • その3個が本物と同じ場合は、3回目は、残された1個と本物と比較。同じならばニセ金貨無し。異なればそれがニセ金貨。
 「ニセ金貨が必ずある」という場合は、上記で12個目が本物と同じ重さであった時には12個分すべてが本物であることが確定するので、別の13個目は一切計量しなくても自動的に偽金貨であることが確定。けっきょく12個より1個多い13個まで検出可能ということになる。ただしその偽物が本物より重いか軽いかは判明しない。

 次回は、上記でなぜ最大値が12枚なのか、また、天秤でなく「バネばかり(台の上に金貨を載せると合計重量を数値で返すもの)」だったら12個から偽金貨を検出するのに何回の操作が最低必要であるかということについて考えてみることにしたい。
バネはかり利用の場合、5回の計量なら偽金貨を検出できることが分かっているのだが4回以下でも可能かどうかは検討していない。どなたか情報をいただければ幸いです。
【思ったこと】
990313(土)[一般]3にまつわる手品・パズル(3):3回で偽金貨検出できる最大枚数
 昨日の日記に引き続いて、まず天秤はかりを3回だけ使って偽金貨を検出する問題を考えてみたい。ここでは問題を次のように整理しておく。
  • n枚の金貨から何枚かをとって天秤で3回だけ計ることが許されている(天秤は2つの皿の重さが同じか違うかという情報だけを返す)。
  • これらの金貨の中にはニセ金貨が1枚入っているかもしれないし、入っていないかもしれない。
  • ニセ金貨がある場合は本物と重さが異なるが、本物より重いか軽いかは事前には分からない。
  • ニセ金貨の有無を判定し、ニセ金貨が有る場合はそれがどれで本物より重いか軽いかを確定せよ。
 この問題において、まず重要なことは、偽金貨があったとしても高々1枚であるということだ。この枚数が2枚以上、もしくは不定であったとすると、検出はきわめて複雑になる。

 次に天秤はかりによって計るとどういう情報が得られるかということ。
  • 法則1:計量の結果、左右にm個ずつ載せた金貨が同じ重さであった場合、これら2m個の中には偽物は無い。
  • 法則2:重さが異なる時には、偽金貨は必ずその2m個の中に含まれる。
  • 法則3:天秤はかりは、どちらが重いかという情報も与える。
 以上にくわえて、次の点にも留意する必要があるだろう。
  • 法則4:与えられた金貨をごく微量の接着剤ですべて張り合わせたとする(但し、接着剤の重さは考慮しない)。偽物が混じっている可能性のあるグループの中の金貨は、最終的にすべて接着剤を剥がして分離しなければならない。
    本物であると判定されたグループの中では、接着剤を剥がす必要は無い。例えば、4枚ずつ天秤に載せて重さが同じだった場合は、それ以上剥がす必要は無い。
    逆に、偽物が混入している可能性のあるグループにおいては、最終的に1枚ずつ切り離されていないと偽物を同定することができない。
  • 法則5:1回の計量で3枚の金貨から偽物を見つけることは(確実には)できない。但し、3枚の中に確実に偽物があることが分かっていて、かつ偽物が本物より重いか軽いかの情報が確認されている時は、この限りではない。
    3枚のうち任意の2枚を左右の天秤皿に乗せて、重さが異なれば、重いもの(あるいは、軽いもの)が偽物。等しい時は、残りの1枚が偽物。その偽物が本物より軽いか重いかは、グループ全体の重さが同じ枚数の本物より重いか軽いかという情報から確定できる。
 以上をふまえて、3回の計量で最大何枚の金貨から偽金貨を検出できるかを考えてみたい。

 まず注目すべきポイントは、1回目の計量の結果である。1回目に2m枚の金貨を計った時に、重さが同じであれば、残りのr枚の中から検出しなければならない。この時点では偽物の有無も、偽物が重いか軽いかも分からないので、細かい証明は省略するが、検出可能な限界はr=4枚であると考えられる。つまり2回目に残った4枚の中から3枚を取り出し、すでに本物であると分かっている3枚と比較するわけだ(昨日の日記参照)。もし5枚以上を残してしまうと、次にお皿に載せる候補を何枚に決めても法則4に抵触してしまう。 このことから、最大可能数は2m+4枚であると結論できる。

 いっぽう2mの数だが、これも詳しい証明は省略するが2m=8が限界のようだ。原理的には、2m+1枚まで検出可能なのだが、天秤はかりで一度に計れる枚数は常に偶数でなければならないのでこれは無理。但し、本物であると分かっているコインを1回目の計量前から借りてくることができれば、2m+1も可能となる。

 時間が無くなったので、「バネばかり(台の上に金貨を載せると合計重量を数値で返すもの)」で検出する場合、偽物が重いか軽いか最初から分かっている場合についての考察は次回以降とさせていただく。
【思ったこと】
990314(日)[数学]3にまつわる手品・パズル(4):偽金貨検出問題最終回
 昨日の日記の続き。最終回として、
  1. バネばかりで12個の金貨から偽物を検出する場合の最少の計量回数はいくつか?
  2. 本物より重いと分かっている偽物が確実に1枚入っている場合は3回の計量で最大何個から偽物を検出できるか?
の2つについて考えてみたい。

 まず、バネばかりで計量した場合。この場合は、1回の計量で合計重量のみが数値としてフィードバックされる。ちょっと考えてみた範囲では、合計5回であれば検出可能。4回以下でできるかどうかは不明。
  1. 金貨を4つずつ3山に分けて計量(合計3回)。
  2. 3山が同じ重さであれば偽金貨無し。2つの山と比べて重さの違う山があればその4個の中に偽物のあることが確定。同時に、偽物が本物より重いか軽いか、本物の1枚あたりの重量がどれだけであるかも確定する。この4個をA、B、C、Dとする。またここでは偽物が本物より重い場合についてのみ記す。軽かった場合も全く同じ手順。
  3. A、B2枚をとり計量(計4回目)。本物2枚より重ければAだけもう一度計量。Aが本物より重ければそれで確定。同じならばBが偽物。また、A、Bが本物と同じであれば、Cのみ計量。これにより同じロジックで、CまたはDが偽物であることが確定。


 次に、もういちど天秤に話題を戻し、計量に入る前から「本物より重い偽物が必ず1枚ある」と分かっていた場合(「本物より軽い」と分かっていた場合も手順は同じ)について考えてみたい。この時は、昨日の日記に記した法則5:
3枚の中に確実に偽物があることが分かっていて、かつ偽物が本物より重いか軽いかの情報が確認されている時は1回の計量で偽物を検出できる
を利用すると27枚の中から検出が可能だ。
  • 27枚を9枚ずつ3山に分けて、そのうちの2山を比較する。同じ重さであれば残りの1山、異なる重さであれば重い方の山の中に偽物があることが確定。
  • その山に含まれる9枚を3枚ずつ3つの山に分けて、そのうちの2山を比較する。同じ重さであれば残りの1山、異なる重さであれば重い方の山の中に偽物があることが確定。
  • その山に含まれる3枚のうち2枚を取って比較する。同じ重さであれば残りの1枚、異なる重さであれば重い方が偽物。

 もし、「偽物は本物より重い。但し偽物があるかどうか分からない」という条件だったらどうか? この場合は、上記で1回目の計量で9枚ずつの2山が同じだった場合だけを考えればよい。2山が異なる重さであるときは、偽物があるということが確定するからである。つまり全体をn枚とした時
  • n枚の中から1回目に9枚ずつ計ったが重さは同じだった。
  • (n-9×2)枚の中から3枚ずつ計ったが重さは同じだった。
というケースにおいて、残された(n-9×2-3×2)枚が最大いくつまで可能かということを考えればよいわけだが、偽物があるかどうか分からない以上、最大数は1でしかありえない。よって
n-9×2-3×2=1
を解くと、n=25が最大数ということになる。これで良いと思うのだが、もし重大なミスがあればぜひお教えいただきたいと思います。
※今回の連載で「3回の計量」というのは、いかに手間取った場合でも3回以内の計量で完結させるという意味であった。より実用的に考えるならば、検出に要する回数の期待値を最少にする手順というものが別にあるはずだ。おそらくこれらの解法も数学的に確立しているはずだ。
【思ったこと(2)】
990315(月)[数学]偽金貨検出問題追記

 昨日の日記で、「もし、偽物は本物より重い。但し偽物があるかどうか分からないという条件だったらどうか?」について考察し、
 この場合は、上記で1回目の計量で9枚ずつの2山が同じだった場合だけを考えればよい。2山が異なる重さであるときは、偽物があるということが確定するからである。つまり全体をn枚とした時
  • n枚の中から1回目に9枚ずつ計ったが重さは同じだった。
  • (n-9×2)枚の中から3枚ずつ計ったが重さは同じだった。
というケースにおいて、残された(n-9×2-3×2)枚が最大いくつまで可能かということを考えればよいわけだが、偽物があるかどうか分からない以上、最大数は1でしかありえない。
という理由で最大数は25枚であろうと書いたが、がりゅうさんより、
最後に出てきた「最大値は1」というのは1つのお皿に1枚、と言うことで、天秤には2枚皿があるので3回目で2枚検証することができます。
というご指摘をいただいた。おっしゃる通りで、2回目までの計量で24枚分が本物であると確定した場合、3回目ではさらに2枚の中から偽物を検出することができる。2枚の重さが異なれば重いほう、同じならば全部本物ということになる。ご指摘ありがとうございました。