秤の問題                      2000.09.06 deepgreen  高橋謙一郎さんのHP(掲示板)の話題となったものです。(2000.06.05) n個の中に1つだけ重さの違うものがある(重いか軽いかは不明)とき 秤を何回使えばよいか?というものです。13個の場合、3回の測定で 確定できます。一般解は、(3^n−1)/2とのことです。 この具体的な手順を見つけることが問題です。 □用語の定義 ?n :n個の中に1つだけ重さの違うものがある(重いか軽いかは不明) ??n:n個の中に1つだけ重さの違うものがあるかもしれない Sn :n個はすべて同じ重さ(標準の)である +n :n個の中に1つだけ重いものがあるかもしれない(不確定) −n :n個の中に1つだけ軽いものがあるかもしれない(不確定) ++n:n個の中に1つだけ重いものがある(確定) −−n:n個の中に1つだけ軽いものがある(確定) □比較のパターン(秤の使い方) [rule1」   ?nからm個を2組取り出して比較する。     =のとき :2m個はすべて同じ重さであり           違う重さのものは残りのn−2m個の中にある     ≠のとき :どちらかのm個に異なる重さのものがある           残りのn−2m個は同じ重さである   これを以下のように記述する   ?n −> ?m vs ?m            = :?(n−2m),S2m            ≠ :+m,−m,S(n−2m) [rule2」   ?nからm個を取り出し、Smと比較する(すでに、Smが確定しているとき)     =のとき :m個はすべて同じ重さであり           違う重さのものは残りのn−m個の中にある     <のとき :m個に軽いものがある。よって、−−m           残りのn−m個は同じ重さである     >のとき :m個に重いものがある。よって、++m           残りのn−m個は同じ重さである   これを以下のように記述する   ?n −> ?m vs Sm            = :?(n−m),S2m            < :−−m,S(m+n)            > :++m,S(m+n)          [rule3]   ++nから(n+2)/3個を2組取り出して比較する     =のとき :2組の(n+2)/3個はすべて同じ重さであり           違う重さのものは残りのn−(n+2)/3*2個の中にある     ≠のとき :重い方の(n+2)/3個に異なる重さのものがある           残りのn−(n+2)/3個は同じ重さである   これを以下のように記述する   ++n −> +(n+2)/3 vs +(n+2)/3            = :++(n-(n+2)/3*2),S((n-(n+2)/3)*2)            ≠ :++(n+2)/3,S(n−(n+2)/3)   同様に、−−nも定義する         −−n −> −(n+2)/3 vs −(n+2)/3            = :−−(n-(n+2)/3*2),S((n-(n+2)/3)*2)            ≠ :−−(n+2)/3,S(n−(n+2)/3)   ☆これによって、++9は2回、++27は3回の測定で済むことがわかる [rule4]   +n,−n,Smのとき、+n,−nからそれぞれk個、Smから2k個とりだして比較する     =のとき :比較対象の4k個はすべて同じ重さであり           違う重さのものは+(n−k),−(n−k)のいずれかにある     ≠のとき :+k,−kのいずれかに異なる重さのものがある           残りの2組の(n−k)個は同じ重さである   これを以下のように記述する   +n,−n,Sm −> (+k,−k) vs S2k            = :+(n−k),−(n−k),S(m+2k)            ≠ :+k,−k,S(m+(n−k)*2)) [rule5]  このルールが見つけにくかった!!!   +n,−n,Smのとき、n=a+bとなるa,bの2つにわけ、以下の2組を比較する     (+a,−b) と (−a,Sb)  残りは、+b,S(m−b)     =のとき :比較対象の(+a,−b)と(−a,Sb)はすべて同じ重さであり           違う重さのものは+bにある。故に、++bとなる     <のとき :−bに軽いものがある。故に、−−bとなる           (右側の−aに重いものはないので、左側は軽くなければならない)     >のとき :+a,−aのいずれかに違う重さのものがある   これを以下のように記述する   +n,−n,Sm −> (+a,−b) vs (−a,Sb) ただし、n=a+b            = :++b,S(m+2n−b)            < :−−b,S(m+2n−b)            > :+a,−a,S(m+2b) いよいよ、本題です。 □?40は、何回で秤れるか?  @40=13+13+14に分解し、   ?40 −> ?13 vs ?13              = : ?14,S26       A−1              ≠ : +13,−13,S14   A−2  A−1 14=9+5に分解し、   ?14 −> ?9 vs S9             = : ?5,S18         B−1             < : −−9,S14        B−2               > : ++9,S14        B−3   B−1 ?5は、あと2回で測定できる(簡単なので省略)   B−2,B−3は、あと2回の測定で確定できる。(rule3)   よって、この場合は、4回の測定で確定できることになる。  A−2 rule5で、a=4,b=9とする(n=13)と    +13,−13,S14 −> (+4、+9) vs (−4,S9)             = : ++9,S31        B−4             < : −−9,S31        B−5             > : +4,−4,S32      B−6   B−4,B−5は、あと2回の測定で確定できる。(rule3)       B−6 rule4を適用する    +4,−4,S32 −> (+3、−3) vs S6             = : +1,−1,S38      C−1             < : −−3,S37        C−2             > : ++3,S37        C−3   C−1は、あと1回の測定で確定できる。(rule3)   C−2,C−3は、あと1回の測定で確定できる。(rule3)   よって、この場合も、4回の測定で確定できる。  以上により、?40は、4回の測定で確定できる。 □??38は、何回で秤れるか?  @38=13+13+12に分解し、   ??38 −> ??13 vs ??13              = : ??12,S26      A−1              ≠ : +13,−13,S14   A−2   A−2は?40と同じなので、あと3回で測定できる。(合計は4回)    A−1 12=9+5に分解し、   ??12 −> ?9 vs S9             = : ??3,S18        B−1             < : −−9,S14        B−2               > : ++9,S14        B−3   B−1 ??3は、あと2回で測定できる(簡単なので省略)   B−2,B−3は、あと2回の測定で確定できる。(rule3)   よって、この場合は、4回の測定で確定できることになる。  以上より、??38は、4回の測定で確定できる。 □?タイプのとき、n回の測定で確定できる数は、(3^n−1)/2    以下の関数f(n)を定義する。   f(n+1)= 3f(n)+1           (1)式   f(1)  = 2  これを解くと、     f(n)= (3^n−1)/2      f(n)= f(n−1)+g(n−1)     (2)式                ただし、g(n)= 3^n  となる。  ?f(n+1)を考える。  @(1)式の関係により、f(n+1)を f(n), f(n), f(n)+1 に分解する。   ?f(n+1)−> ?f(n) vs ?f(n)             = :?(f(n)+1),S(f(n)*2)    A−1              ≠ :+f(n),−f(n),S(f(n)+1)  A−2                  A−1 ?(f(n)+1)は、(2)式により、f(n-1)+g(n-1)+1と変形すると、    ?(f(n)+1)−> ?g(nー1) vs S(g(nー1))             = :?(f(n−1)+1),S(g(n-1))     B−1              < :−−g(n-1), S(f(n-1)+1)    B−2             > :++g(n-1), S(f(n-1)+1)    B−3   B−2,B−3は、n−1回で確定できる(rule3)   B−1は、A−1と同様の繰り返しができる。  A−2 +f(n),−f(n)も(2)式により、f(n-1)+g(n-1)に分解する。   rule5で、a=f(n-1), b=g(n-1) とすると + f(n),- f(n), S(f(n)+1) -> (+f(n-1),-g(n-1)) vs (-f(n-1),S(g(n-1)) = : ++g(nー1),...          B−4 < : −−g(n−1),...          B−5             > : +f(n−1),−f(n−1),...   B−6   B−4,B−5は、n−1回で確定できる(rule3)   B−6は、A−2と同様の繰り返しができる。  以上より、?タイプのf(n+1)個の識別はn+1回の測定でできる。  (概略説明でした) ★なお、f(n)が上限である説明は私には思いつきません。どなたかご存知のかたは  教えてください。  ??タイプの場合、f(n)のかわりに以下の再帰関数となる。    h(n+1)= 3h(n)−1         (3)式    h(2)  = 3  これより、    h(n)= (3^n−3)/2    h(n)= h(n−1)+g(n−1)     (4)式             ただし、g(n)=3^n  (3)式,(4)式により、??38の手順を再帰的に書き直すことができる。