じぶん更新日記

1997年5月6日開設
Copyright(C)長谷川芳典



11月のインデックスへ戻る
最新版へ戻る

 夕食後の散歩時によく見かける猫。津山線の線路の上を移動したり、真夏は橋の上で寝ていたりする。夜間は上り下りそれぞれ1時間に1本程度の運行なので、列車が近づいた時だけ避ければのんびりできるようだ。

2015年11月28日(土)


【思ったこと】
151128(土)刑事コロンボ「殺しの序曲」の偽金貨クイズとその拡張(2)

 昨日の続き。まず、
ここに金貨の入った袋が数個あります。袋の数はいくら多くてもよろしい。それぞれの袋に複数の金貨が入っているがこの金貨の数もいくらでもよろしい。しかし1つの袋だけは全部偽造の金貨が入っておりこれは重量が違っている。3回の計量で偽造の袋を見分ける方法は?
という拡張問題についての復習。本当に3回の計量だけでニセ金貨の袋を見つけ出せるのかどうかを具体例で確認してみよう。ホンモノとニセモノの金貨1枚の重さは分からない、但し異なる重さであることだけは分かっているものとする。ここでは、袋が5つあるものとして、「袋1」〜「袋5」という番号をつけておく。
  1. 【計量1】袋1から金貨1枚を取り出して計量する。結果として100gであったとする。この段階では、これがホンモノなのかニセモノなのかは分からない。
  2. 【計量2】袋2〜袋5から金貨1枚ずつを取り出してまとめて計量。この重さは400g(平均すると100g)より重いか軽いかいずれかとなる。(平均して100gジャストだったとするとニセ金貨は1枚も存在しないことになり矛盾)。ここでは総重量が420gだったとする。この【計量2】によって、「ホンモノ100g、ニセ金貨120g」(袋1がホンモノであった場合)、もしくは、「ホンモノ105g、ニセ金貨100g」(袋1がニセ金貨であった場合)のいずれかとなる。
  3. 【計量3】袋2から2枚、袋3から3枚、袋4から4枚、袋5から5枚の金貨を取り出してまとめて計量。金貨は合計14枚となる。もし袋1がニセ金貨であったとすると、この時の総重量は105×14=1470gとなるはず。つまり1470gであった時は袋1がニセモノであると確定する。また、そうでない場合は、袋1はホンモノであり、ホンモノの重さは100gとなる。この場合の計量結果は、袋2がニセモノであった場合は、100g×12枚+120g×2枚=1440gになるはず。以下、袋3、袋4、袋5がそれぞれニセモノであった場合の総重量は、1460g、1480g、1500gとなるので、どの数値に対応しているのかによって、ニセモノの袋がどれであるのか分かる。


 上記の方法は袋の数がいくら多くても判定可能。もちろん、それぞれの袋の中に莫大な数の金貨があり、かつ、秤がどのような重さでも正確に計測できるということが前提にはなる。




 次に、この問題をさらに拡張して次のようにしたらどうなるだろうか?
外見は見分けがつかないが重さの異なる金貨Aと金貨Bがあります。そのいずれかを入れた袋がn個あります。袋の数はいくら多くてもよろしい。それぞれの袋に複数の金貨が入っているが、いずれも金貨Aのみ、または金貨Bのみであって、混ざって入っている袋は1つもない。3回の計量ですべての袋を、金貨Aの袋と金貨Bの袋に分けるにはどうすればよいか?
 これについて、上記と同じやり方を試みたとする。但し、ホンモノ、ニセモノという区別ではなく、重さの異なる金貨A、金貨Bの区別ということになる。A、Bの付け方は任意なので、ここでは袋1の金貨をAと決めておく。そうすると、
  1. 【計量1】袋1から金貨1枚を取り出して計量する。結果として100gであったとする。すなわち金貨Aの重さは100gであると確定。
  2. 【計量2】袋2〜袋5から金貨1枚ずつを取り出してまとめて計量。この重さが400gであった場合はすべての袋は金貨Aが入っていたことになる。いっぽう総重量が420gだったとする。
というところまでは上記と同一であるのだが、この段階では420gになった原因が、金貨Bが何枚含まれていたことによるのか、また金貨Bの重さが何gなのかということは確定できない。つまり、要するに、
  • 1つの袋だけが金貨Bであった時は金貨Bの重さは120g
  • 2つの袋が金貨Bで2つの袋が金貨Aの場合は、金貨Bの重さは110g
  • 3つの袋が金貨Bで1つが金貨Aの場合は、金貨Bの重さは320/3g
  • 袋2〜袋5の4つの袋すべてが金貨Bであるなら、金貨Bの重さは105g
などというように複雑になる。【計量3】ですべての組合せに一対一に対応した数値が出てくればよいのだが、実際には、
  • 袋2〜袋5がすべて金貨Bであった場合は、105g×14枚=1470g
  • 袋3と袋4だけが金貨Bであった場合は、金貨Bは110g、7枚なので合計770g、また袋2と袋5からは100gの金貨Aを合計7枚取り出しているので700g、よって合計1470g
となって、見分けがつかなくなる。

 これを避けるには、【計量3】において、「袋の番号nと同じ数だけ取り出す」かわりに、「袋の番号nに対応してn-1個取り出す」という方法が考えられる。要するに、各袋に二進数で、1、10、100、1000、...という番号をふり、その番号に対応した個数(二進数表記)を取り出すというやり方であり、計量結果から自動的に、二進数表記の「1」と「0」に、金貨Aと金貨Bの袋を対応させることが可能になるはず【但し未検証】。




 最後に元の問題をさらに拡張し、
外見は見分けがつかないが重さの異なる金貨Aと金貨Bと金貨Cがあります。そのいずれかを入れた袋がn個あります。袋の数はいくら多くてもよろしい。それぞれの袋に複数の金貨が入っているが、いずれも金貨Aのみ、金貨B、または金貨Cのみであって、混ざって入っている袋は1つもない。できるだけ少ない回数の計量ですべての袋を、金貨A、金貨B、金貨Cの袋に分けるにはどうすればよいか?
というように3種類、さらにはm種類の金貨がある場合を考えてみたが、頭が働かなくなった。ひょっとして完全数の問題にも関連するのかという気もするがよくワカラン。

 ちなみに上記は不可能問題ではない。n個の袋があるなら、順番に1個ずつ金貨を取り出して計量すれば、最大n回で事足りることは分かっている(金貨の種類が何種類あろうともn回で十分)。

 次回に続く。