ニムゲームと排他的論理和
ニムと呼ばれる二人で行うゲームの必勝法と、それにまつわる演算を紹介します。
ニム
ニムは二人のプレイヤーがいくつかの石の山から石を交互に取り合うゲームです。ニムのルールはいろいろバリエーションがありますが、次のルールを考えます。
ニムのルール
- 石の山をいくつか用意する。
- 二人のプレーヤーは交互に 個以上石を取る。このとき、複数の山にまたがっては取れないが、一つの山からは何個でも取れる。
- 取れる石が無くなったら負け。
後でルール2を変えたゲームも考えます。
以下では、ニムの局面を非負整数の順序対で表します。
例: は、 番目の山に 個、 番目の山に 個、 番目の山に 個石がある局面。
Grundy値
ニムの局面には、Grundy値という非負整数値が定まります。
Grundy値の定義と性質については
fibonacci-freak.hatenablog.com
にあります。そこに書かれているように、Grundy値が の局面は後手必勝、nonzeroの局面は先手必勝です。
ニムの局面 のGrundy値を と表すことにすると、局面 は局面 の直和*1だから、上の記事の第一定理より、
ここで は二進記数法の各桁ごとの排他的論理和です。この「二進記数法の各桁ごとの排他的論理和」のことも単に排他的論理和と呼びます。
例:
よって次の結果を得ます:
これをもとにしたニムの必勝法の手順は
ニム(複数山の石取りゲーム)の必勝法 | 高校数学の美しい物語
の「ニムの必勝法の概略」にあります。その記事では「後手必勝」のことを単に「必勝形」と呼んでいます。
-ニム
を自然数とします。上のニムのルールにおいて、一つの山から取れる石の個数を 以上 以下に変更したゲームを考えます。区別のため、このゲームを -ニムと呼ぶことにします*2。
-ニムの局面も同じく順序対で表し、-ニムの局面 のGrundy値を と表すことにすると、
ここで自然数 に対して は、整数 を で割った余り( 以上 以下)を返す関数です。
まとめると次の結果となります:
-ニムの必勝法
の場合について必勝法を考えます。
証明.定理2から明らか。証明終わり
この系をもとに具体的な必勝法の手順を考えます。 を-ニムの先手必勝の局面とします。 のうち、 で割って 余るものの個数を とおいて、 の偶奇で場合分けします。系により次の二つの場合に分かれます。
1: のうち、偶数が 個、奇数が 個のとき
奇数であるものを とすると、 かつ となる手が存在する。
例えば が奇数だとすると、石の個数が で割って 余る山を一つ選んで、 個石を取る。
2: のうち、偶数が 個、奇数が 個のとき
奇数であるものを とすると、 かつ となる手が存在する。
例えば が奇数だとすると、石の個数が で割って 余る山を一つ選んで、 個石を取る。
この手順を繰り返せば自分の番が終わった後の局面は常に後手必勝となっているので、最終的には石が全く無い状態(=勝ち)に到達できます。
の計算
最後に、 の値の計算結果を示します。値が同じ所は同じ色で塗っています。
この表を眺めると、いろんな対称性に気がつくと思います。例えばこの図を 倍に拡大したときの相似性が見て取れます。