これは
AMC2023
(Advent Math Calender 2023)の1日目の記事です.2日目以降の担当の方々はとても素晴らしい記事を書かれている(断定)ので,そちらの方も是非~!
0. 導入
今回は主に(というか全て)ゲーム理論についてのお話です.きっと後編の応用を見たら面白いと思ってもらえるんじゃないかなと思います.
あと,これを追記して欲しいというのがあれば教えて下さい! 私が宿題をする時間を削って書きます
1. 不偏ゲーム?
今回の本題になっているGrundy数は,と呼ばれるゲームに適用することができます.では,不偏ゲームとは何なのでしょうか.ざっくり言うと "2人でして、運が関係なく、平等なゲーム" です.厳密には
・人のプレーヤーは,"操作できない状態"(原文 : terminal position)に達するまで交互に交代しなければならない.
・人のプレイヤーが"操作できない状態"に達したとき,勝者が決まる.
・有限回の操作で"操作できない状態"に達する.
・各状態でどちらのプレイヤーが手を打つにしても,動かせる選択肢の集合が常に等しい.
・常にお互い全ての情報を持っていて,偶然性に決して左右されない. (wikipediaより)
を全て満たすものをいうそうです.
不偏ゲーム(に限らず運に左右されないゲーム)は人が最適な手を選べば,必ずどっちが勝つか決まります.
2. 漸化式
ここからが本題です.
実は全ての不偏ゲームは,漸化式(dp)によってどっちが勝てるか判定することができます.(!) 次のようなゲームを考えてみます.
個の石があり,先手・後手はここから石を個または個交互に取る.残りの石を個にした方がである.
両者が最適に行動するとき,どちらが勝つか?
これを漸化式で解いてみます.
(つまり,自分を先手として自分が勝つか相手が勝つか)と定めます.
まず,最初の項が分からないと何もできないのでを求めます.これはあれですが,便宜上とします.(一般に,操作できなくなった状態は後手必勝とした方が都合が良いです)
次にを考えてみます.{石がつだけ残った状態} から自分がつ石をとると 「相手のターンで{石が個残った状態}」 になります.つまり相手にとって相手必勝 なので,ということが分かります.
次に次に,を考えます.{石がつだけ残った状態} からは次のつの場合に分けられます.
①自分が石を個とると {石がつだけ残った状態} → 相手にとって自分必勝 つまり 相手必勝
②自分が石を個とると {石がつだけ残った状態} → 相手にとって相手必勝 つまり 自分必勝
どっちを選ぶのとなりますが,「自分」は常に勝つために動くので,無言で自分必勝の方(②)を選びます.したがってです.
同様にもすると,
①自分が石を個とると {石がつだけ残った状態} → 相手にとって自分必勝 つまり 相手必勝
②自分が石を個とると {石がつだけ残った状態} → 相手にとって自分必勝 つまり 相手必勝
これは、「自分」はどう頑張っても相手必勝になってしまいました.(悔しい) つまりこの場合はです.
...という風に計算していくと,のとき自分必勝,のとき相手必勝となることが帰納的に分かります.なので答えは
のとき先手必勝,のとき後手必勝 (は整数)
となります.
上で言ったことを一般化すると次のようになります.やっと数学っぽいことが書ける
漸化式の遷移
不偏ゲームでのある局面(先手が行う)について,そのつ後の局面としてありうるものがだとする.が先手必勝なら,後手必勝ならとすると,
ただし, とする.
(上とほぼ同じ)
の定義を,「自分からの状態から始めるとき,自分必勝なら,相手必勝なら」と言い換える.
自分の番でにできるため,これらの局面でのの値はである.この中にが存在するとき,それを選ぶことで「相手にとって」,すなわち「自分にとって」の状態をつくることができるため,となる.逆に全てのとき,どのように操作を行っても「相手にとって」すなわち「自分にとって」となるため,となる.
これを使ってもう問不偏ゲームの問題を解いてみましょう.
からまでの整数を小さい順に先手・後手で交互に言っていく.数は一度に個以上個以下言ってよく,を言ったらである.
このゲームは両者が最適に行動すると,どちらが勝つか?
※上が伝わりにくいと思うので例を出すと,
先「」 後「」 先「」 後「」 ...
のような感じです. 地味
上の命題を使います!
本問題のからまでの整数でを言ったら勝ちの場合で,先手必勝なら,後手必勝なら
とします.
まず,便宜上とします.そこから次のように計算できます.
勘の良い人は気付いたかもしれませんが,実はこれはを繰り返しています.(これは実際に帰納法で示すことができます) よって,なので,先手必勝と分かります.
これで私たちは不偏ゲームを(理論上)全て判定することができるようになりました.これの上級者向けver(?)が次に紹介する Grundy数 というものです.
3. Grundy数?
Grundy数は,主に同じ不偏ゲームを同時進行するときに使うことができます(もうちょっと広く使えるかもしれません 怪しい).次のようなゲームを考えてみます.
机の上に個の石がと個の石が積み重なった山がつずつある.先手・後手はつの山を選び,そこから石を個または個交互に取る.机の上の残りの石を個にした方がである.
両者が最適に行動するとき,どちらが勝つか?
例えばなら,
という風に進んでいきます.
今回なら最初のゲームをつ同時にやっているような感じです.こんなときはGrundy数の出番というわけです.
Grundy数は同じゲームを同時にするときに使えると言いましたが,このゲームの「つ分のゲーム」について定義されます.例えば,先程の 問題 の例なら,問題 が「つ分のゲーム」です.
以下では,ある局面のGrundy数はで表します.
まず,操作できなくなった状態のGrundy数はとします.
今,ある局面について,そこから遷移できる局面がだとします.すると,のGrundy数は
で求めることができます.
ここで,とは「その集合の中に含まれていない最小の非負整数」と定義されているものです.例えば,です.
試しに問題のGrundy数を求めてみましょう.みやすいように,
石が個のときのGrundy数
とします.
まず,です.そこから,次のように計算できます.
勘の良い人はもう気付いたかもしれません(2回目)が,が繰り返されています.はをで割った余りになっていますね.
実は,Grundy数は先手必勝なら以上,後手必勝ならになります.
「...でこれがどう役に立つんだよ!」と思った方も多いと思います.なんと次のような偉大な定理が知られています.
Sprague–Grundyの定理
あるゲームの状態がいくつかの独立なゲームの状態の和であるとき,
が成り立つ.
ただし,は進法での排他的論理和とする.
じゃあ証明を... としたいところですが,難しくてまだ理解できていません... 気が向いたら書こうと思うので,とりあえず今はこの定理を発見した方に感謝しながら食べたいと思います.
これを問題に使ってみます.は個の山,は個の山とすると,なら先手必勝,なら後手必勝となります!
(この先手必勝の条件はがの倍数でないことと同値になっていることも分かりますね.)
つづく...
後編はこれらを使うOMCの問題問を解説しようと思います.お楽しみに.