フィボナッチ・フリーク

数学の小ネタ集。

勝敗が周期34で変化するゲーム

先日、いつものように夜眠れずに布団の中で数学のことを考えていたところ、ふと面白いゲームを思いつきました。

ルールは簡単です。1×nのマス目に2人で交互に1×2のタイルを置いていきます。タイルは重なってはいけません。先に置けなくなったプレイヤーが負けです。

f:id:fibonacci_freak:20170902015458p:plain

布団の中でしばらく考えたところ、まずn2以上の偶数の時は先手必勝であることがわかりました。必勝手順は次の通りです。

(1) 先手は最初に中央の2マスにタイルを置く。

(2) その後は後手が置いたタイルと左右対称な位置に置くことを繰り返す。

こうすれば先手が置いた後は常に盤面が左右対称になるため、先手が置けなくなることは決してありません。

次にnが奇数の時を順番に考えていくと次のことがわかりました。

n=3は先手必勝。

n=5は後手必勝。

n=7は先手必勝。

n=9は後手必勝。

n=11は先手必勝。

n=13は先手必勝。

これらは単純に全ての手のパターンを考えることで得られます。

ここまでは特に規則性が無いように見えたので、何か手がかりになる情報がないかと思いネットで調べてみました。すると次のような記述が見つかりました(要約)。

このゲームはDawson's Kaylesと呼ばれ、octal gameという種類に属する。octal gameにはGuy-Smith periodicityという定理が知られており、それによればDawson's Kaylesの勝者はnについて有限個の例外を除き周期34で繰り返す。具体的には後手必勝となるのはn=0,1,15,35またはn5,9,21,25,29 mod 34の時に限る。

 

さすがにこれには驚きました。周期34で繰り返すなんて誰が予想できるでしょうか!

そういうわけで今回はこの周期性(Guy-Smith periodicity)をDawson's Kaylesの場合に限って証明したいと思います。

 

Grundy値について

今回の証明の鍵となるのが、ゲームの局面について定まるGrundy値と言う概念です。

ここでは「有限の手数で勝敗が決することが保証され、確率的要因が絡まず、両者の打てる手が対等で、盤面の情報が全て共有されており、打てる手が無くなった人が負ける」というタイプのゲームのみを考えることにします。Dawson's Kaylesはこのようなゲームの一例です。あとで見ますが、この種のゲームの局面についての命題を示す時は「ゲームが終わるまでの最長手数」に関する帰納法を使うことができる、ということに注意しましょう。

ゲームの局面Gについて、局面GGから一手で得られることをGGと表記します。

定義. ゲームの局面Gに対し、そのGrundyg(G)を以下のように帰納的に定める。
g(G)=mexGGg(G)
ただしmexxSxSに現れない最小の非負整数(Sが空なら0)を指す。

このとき局面Gが後手必勝であることはg(G)=0と同値です。なぜなら(上に述べた帰納法で)Gが先手必勝となるのはGGで後手必勝のものが存在することと同値で、これは帰納法の仮定からg(G)=0なるGが存在すること、すなわちそのmex0にならないことと同値だからです。

Grundy値はただの数字の割り当てではなく、際立った性質を持っています。それは「局面の直和」に対してうまく振る舞うということです。2つの局面G1,G2の直和G1+G2とは「2つの局面を並べた*1ゲームの局面」のことです。例えば1×nのDawson's Kaylesの初期局面をKnとすると、K10の中央にタイルを置いた局面はK4+K4と書くことができます。

定理(Sprague-Grundy). ゲームの局面G1,G2についてg(G1+G2)=g(G1)g(G2). ただしABA,Bの2進表記の排他的論理和である。

証明. 帰納法で示す。G(G1+G2)G1+G2 (G1G1)またはG1+G2 (G2G2)と書くことができる。よって帰納法の仮定より

S={g(G1)g(G2)G1G1}{g(G1)g(G2)G2G2}

と定めた時

g(G1+G2)=mexxSx.

g(G1)g(G2)Sに注意すれば、示すべきことはx<g(G1)g(G2)xSと言い換えることができる。以下これを示す。

g(G1)g(G2)xの2進表記の桁数をmとする。自然数aの2進表記の下からm桁目を[a]mと書くことにすると

[g(G1)g(G2)x]m=1.

x<g(G1)g(G2)なので[x]m=0, [g(G1)]m=0, [g(G2)]m=1としてよい。するとg(G1)x<g(G2)なので、g(G2)の定義を考えればあるG2G2があってg(G2)=g(G1)xとなる。移項してx=g(G1)g(G2)なのでxSがわかった。   

 

周期性の証明

さて、Dawson's Kaylesに話を戻しましょう。Hn:=g(Kn)と書くことにします。定義よりH0=0です。

これから示すGuy-Smith periodicityというのは大雑把に言うと「Grundy値がある範囲で周期的になっていればそこから先ずっと周期的になる」という定理です。これにより、数の小さい範囲で具体的に勝敗を計算して周期34の部分を見つけるだけで、その先の周期性まで示すことができるというわけです。

定理. 正整数i,pが存在してHn+p=Hnin<2i+p+2に対して成り立つならば、任意のn>iに対しても成り立つ。

 証明. n2i+p+2についてHn+p=Hnであることを帰納法により示す。Knから一手だけ打った後の局面は、a+b+2=nを満たすある非負整数a,bに対する直和Ka+Kbである。よってGrundy値の定義とSprague-Grundyの定理より

Hn+p=mexa+b=n+p2HaHb.

ここでa+b=n+p22(i+p)よりa,bの少なくとも片方はi+p以上なので、bi+pとしてよい。すると帰納法の仮定よりHb=Hbpなので、c=bpとおけば

Hn+p=mexa+c=n2, ciHaHc.

n22iより、a+c=n2という分解においてciと仮定しても一般性を失っていない。よって上式は

mexa+c=n2HaHc=Hn

に等しい。   

 

具体的な計算

それではDawson's KaylesのGrundy値が本当に周期34を持つのか確かめてみましょう。愚直に計算すると(コンピュータに計算させると)以下の結果が得られます。字が細いので別タブなどで拡大して見てください。

f:id:fibonacci_freak:20170904011542p:plain

Hn+34Hnであるものは桃色で示されています。青で示したi=53n<2i+34+2=142の部分はHn+34=Hnを満たしています。ゆえに先ほど示した定理により、この後もずっと周期34で繰り返すことがわかりました!

 

感想

ところで上の表を見ていると、私にはこの周期性が「数列の途中で偶然生じたものがGuy-Smith periodicityによって繰り返されてしまった」というものには思えず、最初から何か別の理由で周期性が生じているのではないか、という感覚が拭きれません(数学的ではありませんが)。青で塗られた周期的な列は、偶然できたにしては長すぎるように感じます。

今のところGrundy値の周期の長さを計算する方法は、上のように愚直に計算していって周期らしきものを見つける以外ありません。しかし私はいつか必ず34という数の本当の理由が明かされる日が来ると信じています。

*1:一度にどちらか一方だけに打てる。