2.2  必要条件

 この小節ではGrundy数が yzと等しくなるようなチョコレートの必要条件について述べる.

定義 2.4   fを,以下の条件(a)を満たすZ≥0からZ≥0への単調増加の関数とする.
(a) G({y,z}) はチョコレートCB(f,y,z)のGrundy数とする.そのとき,
G({y,z}) = y ⊕ z.

この小節を通して,関数fは定義 2.4の(a)を満たすことを仮定する.そして,この関数が 定義 2.1の(a)を満たすことを証明する.そのために以下の補題を使う.

補題 2.9   y=f(z), yf(z+1), y < yを満たすy,z,yZ≥0に対して,

G({y,z+1}) < G({y,z+1})となる.

証明. y=f(z)なので,wzを満たすwに対してf(w) ≤ y < yとなる.よって

movef({y,z+1})= {{v,z+1 }:v<y } ∪ { {min(y, f(w)),w }:w<z+1 } = {{v,z+1 }:v<y } ∪ { {f(w),w }:w<z+1 } ={{ v,z+1}: yv < y } ∪ {{v,z+1 }:v<y } ∪ { {f(w),w }:w<z+1 }

={{v,z+1}: yv < y } ∪ {{v,z+1 }:v<y } ∪ { {min(y, f(w)),w }:w<z+1 } ={{ v,z+1}: yv < y } ∪ movef({y,z+1})(ここでv,wZ≥ 0).

よって,

     
     G({y,z+1}) = mex({G({v,z+1}):y ≤ v < y }  ⋃   
     {G({a,b}):{a,b} ∈ movef({y,z+1})}     
     ≥ G({y,z+1}).       (45)

{y,z+1} ∈ movef({y,z+1})なのでG({y,z+1}) ≠ G({y,z+1}). よって不等式( 45)によってG({y,z+1}) < G({y,z+1})が証明される.

補題 2.10   yf(z)を満たすy,zZ≥0に対して, {G({ min(y,f(w)),w}):w<z} = {yw:w < z}が成り立つ.

証明. wZ≥0w< zを満たすとして,

n = ⌊ log2 max(y,z) ⌋ +1     (46)

とおく.

そのとき等式(46)によりyw < y ⊕ (z+2n) = G({y,z+2n})となる. Grundy数の定義より,{ a,b} ∈ movef({y,z+2n}) , G({a,b})=ywとなるa,bZ≥0 が存在している.
movefの定義より,以下の等式 ( 47) または等式(48)のどちらかが成り立つ.

G({ min(y,f(w)), w }) = y ⊕ w.     (47)

ここで,wZ≥0かつw < z+2nである.

y ⊕( z+2n) = G({yz+2n}) = y ⊕ w.     (48)

ここで,yZ≥0かつy < yである.
等式 (48) は等式(46)に矛盾しており,故に 等式 (47)が正しいことになる. もし

w ≥ z     (49)

ならばそのとき f(w) ≥ f(z) ≥ y. 故に

G({ min(y,f(w)), w }) =  G({y,w }) = y ⊕ w.     (50)

等式(47), 等式(50)より

y ⊕ w = y ⊕ w     (51)

を得る. w < wなので(51) は矛盾している.よって,不等式(49)は成立しないので, w < zとなる.故に 等式 (47)により{yw:w < z} ⊂ {G({ min(y,f(w)),w}):w<z}が示される. { yw:w < z}の要素の数は {G({ min(y,f(w)),w}):w<z}の要素の数と同じなので{G({ min(y,f(w)),w}):w<z} = {yw:w < z}を得る.

補題 2.11   d,e,iZ≥ 0 , di ∈ {0,1}, e < 2i 及び 0 < di 2i + eに対して,
ad × 2i+1 + di 2i + e−1 
とする.
もし
cZ≥ 0に対してc × 2i+1f(a) < c × 2i+1 + 2i ならば,

f(a+1) < c × 2i+1 + 2iである.

証明. 0 ≤ t < 2iに対して

f(a) = c × 2i+1 + t     (52)

とおく.

f(a+1) ≥ c × 2i+1 + 2i     (53)

と仮定して,このことから矛盾がでることを示す.(背理法で証明する.)
Case (i) もし di = 1ならば

     
     G({c × 2i+1+2i,a+1})     
     = (c × 2i+1 + 2i) ⊕ (d × 2i+1 + di 2i + e)     
     = (c ⊕ d) 2i+1 + e < (c ⊕ d) 2i+1 + di 2i + (t⊕ e)     
     = G({c × 2i+1 + ta +1}).     (54)

である. 等式( 52),不老式 (53) 及び 補題 2.9により G({c × 2i+1 + t, a +1})< G({c × 2i+1+2i,a+1})を得るが,これは 等式( 54)と矛盾する.
Case (ii) もしdi = 0ならば G({c × 2i+1+2i,a+1}) = (c × 2i+1 + 2i) ⊕ (d × 2i+1 + e)
= (cd) 2i+1 + 2i + e > (cd) 2i+1 + 2i .
ここで, di2i + e > 0 , di = 0なのでe > 0に注意して欲しい. Grundy数の定義より

     
     (c ⊕ d) 2i+1 + 2i ∈ {G({p,q}):{p,q}     
     ∈ movef({c × 2i+1+2i,a+1})}.     (55)

{G({p,q}):{p,q} ∈ movef({c × 2i+1+2i,a+1})}

     
    = {G({v,d × 2i+1+e}):v = 0,1,2,...,c × 2i+1+2i−1}   
     ⋃ {G({ min(c × 2i+1+2i,f(w)),w }):    
     w = 0,1,2,...,d × 2i+1+e−1 }.       (56)

ここでa=d × 2i+1+e−1に注意して欲しい.

waに対して, f(w) ≤ f(a) = c× 2i+1 + tであるから,

     
 (56) =        
 {G({v,d × 2i+1+e}):         
v = 0,1,2,...,c × 2i+1+2i−1}       
 ⋃ {G({ min(c × 2i+1+t,f(w)),w }):         
 w = 0,1,2,...,d × 2i+1+e−1 }.          (57)

c × 2i+1+t=f(a) ≤ f(a+1)=f(d × 2i+1+e)なので,補題 2.10により{G({ min(c × 2i+1+t,f(w)),w }):w = 0,1,2,...,d × 2i+1+e−1 } = {(c × 2i+1+t) ⊕ w: w = 0,1,2,...,d × 2i+1+e−1 }となる.従って定義2.4 より,

     
     (57) =     
     {v ⊕ (d × 2i+1+e): v = 0,1,2,...,c × 2i+1+2i−1}   
     ⋃ {(c × 2i+1+t) ⊕ w:     
     w = 0,1,2,...,d × 2i+1+e−1 }   
     
    = {(c × 2i+1+k)⊕(d × 2i+1+e):    
     k = 0,1,2,...,2i−1}         (58)
    ⋃ {k ⊕ (d × 2i+1+e):    
     k = 0,1,2,...,c × 2i+1−1}       (59)
    ⋃ { (c × 2i+1+t) ⊕ (d × 2i+1+k):    
     k = 0,1,2,...,e−1}       (60)
    ⋃ {  (c × 2i+1+t) ⊕ k:    
     k = 0,1,2,...,d × 2i+1−1 }.      (61)

このとき以下の(i), (ii), (iii), (iv)が成り立つ.
( i) 集合(58)に属する全ての数は,(cd)2i+1 + (ke)の形の数であり, ( cd) 2i+1 + 2iを含まない.ここで,k,e < 2iに注意されたい.
( ii) 集合(59) の数の 2i+1の係数はcdではない,故にこの集合は(cd) 2i+1 + 2iを含まない.
( iii) 集合(60) に含まれるすべての数は (cd)2i+1 + (tk)の形の数になっている. 故にこの集合は( cd) 2i+1 + 2iを含んでいない.
ke−1 < 2it < 2iに注目する.
( iv) 集合(61)の2i+1 の係数はcdではない.故にこの集合は(cd) 2i+1 + 2iを含んでいない.
( i), (ii), (iii) , (iv) は関係 (55)に矛盾している.よって不等式(53) は成立しないことが示された.このことで定理の証明が終る.

定理 2.3   f を定義2.4の条件を満たす関数とすると, 関数fは定義2.1の条件を満たす.

証明. 背理法で証明する. fが定義 2.1の条件を満たさないと仮定すると, そのとき z < zを満たすz,zZ≥ 0と自然数jが存在して,

⌊ 
z
2j
⌋ = ⌊ 
z
2j
⌋     (62)

かつ

⌊ 
f(z)
2j−1
⌋ < ⌊ 
f(z)
2j−1
⌋.     (63)

等式 (62)より,k =0,1,2,...,nに対してzk, zkZ≥ 0が存在して, z=∑k = 0n zk 2kz = ∑k = jn zk 2k+∑k = 0j−1 zk 2kが成り立つ. 不等式 (63)により,自然数 ij−1とk =0,1,2,...,nに対してyk, ykZ≥ 0 が存在して, yi = 0 < 1 = yi,

f(
n
k = 0
 zk 2k)=  
n
k = i+1
 yk 2k  + yi × 2i + 
i−1
k = 0
 yk 2k     (64)

かつ

f(
n
k = j
 zk 2k+
j−1
k = 0
 zk 2k) = 
n
k = i+1
 yk 2kyi × 2i + 
i−1
k = 0
 yk 2k     (65)

が成り立つ.

c =∑k = i+1n yk 2k−(i+1) とする. そのとき c × 2i+1 = ∑k = i+1n yk 2kとなる.

等式(64)と等式 (65)から

f(
n
k = 0
 zk 2k)=  c × 2i+1 + 0 × 2i + 
i−1
k = 0
 yk 2k     (66)

f(
n
k = j
 zk 2k+
j−1
k = 0
 zk 2k) = c × 2i+1+ 2i + 
i−1
k = 0
 yk 2k     (67)

を得る.

a = max({zf(z) < c × 2i+1 + 2i})     (68)

b =  min({zf(z) ≥  c × 2i+1 + 2i})     (69)

とする. そのとき,( 68)と(69)から直接b = a+1が出る.

d =∑k = i+1n zk 2k−(i+1) とする. そのとき, d × 2i+1 = ∑k = i+1n zk 2kとなる. 等式( 66)により, f(d × 2i+1) ≤ f(∑k = 0n zk 2k) <c × 2i+1+2iとなり, 等式( 68)を使うと

a ≥ 
n
k = 0
 zk 2k ≥ d × 2i+1     (70)

を得る. i+1 ≥ jより, ( d+1) × 2i+1 =∑k = i+1n zk 2k+2i+1

n
k = j
 zk 2k+
j−1
k = 0
 zk 2k     (71)

を得る. 等式( 67)と等式 (69)から

n
k = j
 zk 2k+
j−1
k = 0
 zk 2k ≥ b.     (72)

不等式(71)と不等式(72)から

(d+1) × 2i+1 > b = a+1     (73)

を得る. 不等式 (70)から

a+1 >d × 2i+1     (74)

を得る. 不等式( 73)と不等式(74)により, ( d+1) × 2i+1 > b = a+1 > d × 2i+1となり, e < 2i,0<di 2i + eを満たすdie が存在して

a+1 = d × 2i+1 + di2i + e.     (75)

となる. 等式( 66)と不等式(70)により,

f(a) ≥ f(
n
k = 0
 zk 2k)  ≥ c × 2i+1     (76)

を得る. 等式 (68)から

f(a) < c × 2i+1 + 2i     (77)

f(a+1) ≥ c × 2i+1 + 2i     (78)

が導かれる.

等式(75),不等式(76), 不等式(77) と不等式 (78)は補題 2.11の結果と矛盾する .故に f は定義2.1の条件を満たす.

定理2.3より,不等式2.1 はGrundy数G({y,z})=yzとなるCB(f,y,z) の必要条件である.

3 Grundy数がGfs({y,z}) = (y ⊕ (z+s))−s を満たすチョコレートゲームnext