石が 個ある 1 つの山を使って、2 人のプレイヤーが交互に次の操作を行う。
操作:山から石をちょうど 個または 個取り除く(山にある石の個数より多くは取れない)。
操作できなくなったプレイヤーの負けとする。石が 個の山( は 以上の整数)のグランディ数を とする。 は、1 手で移れる局面のグランディ数の集合の mex(その集合に含まれない最小の 以上の整数)として定める。ただし、1 手も動かせない局面では集合が空なので、グランディ数は とする。 を求めよ。
1 つの山(局面)のグランディ数を、1 手で移れる局面のグランディ数の集合の mex(含まれない最小の 0 以上の整数)として、小さい局面から順に表にできる。取れる個数が のようなゲームで、グランディ数の周期を見つけられる
中学までに習ったことだけで始められます。
二人が交互に手を指し、指せなくなった人が負けになるゲームでは、局面ごとに「グランディ数」という 0 以上の整数を決められます。グランディ数は「1 手で移れる局面のグランディ数の集合の mex」として、小さい局面から順に機械的に計算できます。グランディ数が 0 の局面は手番の人の負け、0 でない局面は手番の人の勝ちとわかります。また、取れる個数が決まった石取りゲームでは、表に周期が現れるので、石が非常に多い山のグランディ数も計算できます。
まず言葉を決めます。0 以上の整数からなる有限集合 に対し、 に含まれない最小の 0 以上の整数を と書きます(minimum excluded の略)。たとえば 、 で、空集合なら です。石が 個の山から、集合 (例: )に入っている個数だけ石を取るゲームを考え、取れなくなった人を負けとします。石 個の局面のグランディ数を で定めます。右辺には より小さい局面しか出てこないので、 と小さい順に表を埋めていけば必ず計算できます。
なぜこれで勝ち負けがわかるのでしょうか。mex の定義から次の 2 つが成り立ちます。(i) なら、0 は集合に含まれないので、どの手を指しても移った先のグランディ数は 0 ではありません。(ii) なら、0 は集合に含まれる(含まれなければ mex は 0 になる)ので、グランディ数 0 の局面へ移る手があります。指せない局面は です。したがって、0 でない局面の手番の人は「相手に必ず 0 の局面を渡す」ことができ、相手は 0 でない局面を返すしかありません。石は毎回減るのでこれは必ず終わり、最後に指せなくなるのは 0 の局面を渡された側です。つまり の局面は手番の人の負け、 の局面は手番の人の勝ちです。さらに なら「 の局面には移れるが、 の局面には移れない」という情報も持っています。これは、複数の山を組み合わせたゲームを解くときに役立ちます(スプレイグ・グランディの定理)。
周期が現れる理由は次のとおりです。 の最大値を とすると、 のとき は直前の 個の値 だけで決まります。そこで、ある について が の 個連続で成り立ったとします。すると では と が同じ値から同じ計算で求まるので、帰納的に、すべての で が成り立ちます。こうして周期 が確定します。
ゲームのルールから、石 個の局面から 1 手で移れる局面を書き出す。取れる個数の集合を とすると、移り先は ()。 より多い個数は取れないことに注意する
指せない局面のグランディ数を 0 とする。たとえば
の順に、移り先のグランディ数の集合 を作り、( に無い最小の 0 以上の整数)を表に書き込む
の最大値を とし、表の中で が の 個連続で成り立つ を探す。見つかれば、すべての で (周期 )と確定する
大きな では、 を で割った余り を求め、 とする。 なら手番の人の負け、 なら勝ちと判定できる
石が 個の山がある。二人が交互に、山から 個、 個、 個のいずれかを取る(山に残っている個数より多くは取れない)。取れなくなった人が負けとする。石 個の局面のグランディ数を とするとき、 を求めよ。
【手順1】 なので、石 個の局面からの移り先は です。ただし 以上になるものに限ります。
【手順2】。
【手順3】小さい順に計算します。
表は に対して となります。
【手順4】 です。 は と 4 個連続で一致します。よって で、すべての について です。
【手順5】 より余りは なので、 です( でないので、先手が勝ちます)。
答え:
mex を「集合の最大値 + 1」としてしまう誤り。正しくは、含まれない最小の 0 以上の整数である。たとえば ( ではない)、。
石が少ない局面で、取れない個数の手まで数えてしまう誤り。たとえば の に や を入れてはいけない。正しくは、移り先は だけで、。同様に を忘れないこと。
表の最初の数個が繰り返して見えただけで周期を決めてしまう誤り。 では と始まるが、周期は ではない()。正しくは、最大の取れる個数 と同じ個数(ここでは 個)が連続して を満たすことを確かめてから、周期 (ここでは )と決める。
グランディ数を「勝つまでの手数」や「残りの石の個数」と取り違える誤り。グランディ数は mex で定める値で、勝ち負けについて言えるのは なら手番の負け、 なら手番の勝ちということだけである。たとえば でも、3 手で勝つという意味ではない。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
石が 個ある 1 つの山を使って、2 人のプレイヤーが交互に次の操作を行う。
操作:山から石をちょうど 個または 個取り除く(山にある石の個数より多くは取れない)。
操作できなくなったプレイヤーの負けとする。石が 個の山( は 以上の整数)のグランディ数を とする。 は、1 手で移れる局面のグランディ数の集合の mex(その集合に含まれない最小の 以上の整数)として定める。ただし、1 手も動かせない局面では集合が空なので、グランディ数は とする。 を求めよ。
石が つの山に積まれている。2 人のプレイヤーが交互に、この山から石をちょうど 個または 個取り除く(山にある石の個数より多くは取れない)。動かせなくなったプレイヤーの負けとする。石が 個( は 以上の整数)の山のグランディ数を とする。ただし、集合 ( 以上の整数からなる有限集合)に対して を「 に含まれない最小の 以上の整数」とし、(移れる局面がないときは )と定める。 を求めよ。
石が 個ある 1 つの山がある( は 0 以上の整数)。2 人のプレイヤーが交互に、この山から石をちょうど 個または 個取り除く(山にある石の個数より多くは取れない)。手番で石を取れなくなったプレイヤーの負けとする。
石が 個の局面のグランディ数 を、1 手で移れる局面のグランディ数の集合の mex(その集合に含まれない最小の 0 以上の整数)として定める。1 手も動かせない局面のグランディ数は とする。
を求めよ。
いくつかの石の山がある。2 人のプレイヤーが交互に、どれか 1 つの山を選び、その山から石をちょうど 個、 個、 個のいずれかの個数だけ取り除く(山にある石の個数より多くは取れない)。動かせなくなったプレイヤーの負けとする(正規形)。
石が 個、 個、 個の 3 つの山からなる局面のグランディ数(スプレイグ・グランディ数)を求めよ。
いくつかの石の山がある。2 人のプレイヤーが交互に、どれか 1 つの山を選び、その山から石を取り除く。ただし、石が 個ある山から取り除ける個数 は を満たす整数に限る(つまり、山の石の半分以下しか取れない)。どの山からも石を取れなくなったプレイヤーの負けとする。
石の個数が 個、 個、 個の 3 つの山からなる局面のグランディ数を求めよ。
石の山が 1 つあり、2 人のプレイヤーが交互に、山から石を 個、 個、 個のいずれかの個数だけ取り除く(山にある石より多くは取れない)。石の個数が ( は 以上の整数)の局面のグランディ数 を
で定める。ここで、 以上の整数からなる有限集合 に対し、 は に属さない最小の 以上の整数を表す(特に )。
すべての 以上の整数 について、 は を で割った余りに等しいことを証明せよ。