淺談公平組合游戲IGC
IGC簡介
一個游戲滿足以下條件時被叫做IGC游戲
(前面三個字是自己YY的,不必在意)
- 競爭性:兩名玩家交替行動。
- 公平性:游戲進程的任意時刻,可以執行的操作和操作者本人無關。
- 唯一性:不能行動的玩家判負,不存在平局。
NIM游戲
內容
給定\(n\)堆石子,每堆有\(a_i\)個石頭。規則是拿最后那塊石頭的人贏,(或者說沒有石頭拿的人輸)。每次沒人只能選擇一堆石子並拿走,拿走多少不做限制,但是不能不拿。兩人交替行動。問先手是否必勝。
定理
一個局面先手必勝,當且僅當(\(\zeta(A)\) 是我自己使用的記號,不是什么別的知識點)
證明如下:
考慮使用數學歸納法,當沒有石頭供選擇時,此時顯然有\(\zeta(A)=0\),是必輸的狀態。
此時對於上一個局面,顯然有\(\zeta(A')\not = 0\),必要性得證。(不知道怎么表達我的意思)
下證對於每個\(\zeta(P)\not=0\),一定存在一個合法操作使得\(\zeta(P' \subset P)=0\)
假設\(\zeta(P)=k\),那么我們選擇一個二進制最高位\(1\)和\(k\)的二進制最高位\(1\)在同一個位置上面的\(a_i\),我們可以得到\(a_i \text{xor } k<a_i\),那么也就是說我們可以把\(a_i\)拿到只剩下\(a_i\text{xor }k\)個石子,由於前面那個不等式,這個操作是合法的(石子變少了)。所以最后\(\zeta(P')=\zeta(P)\text{xor }k=0\)了。重復性得證。
Q.E.D
理解
證明應該已經夠清楚了,乍一看感覺這個NIM博弈擴展性不是很強,貌似被局限在了整數和石子這種框架以內,我們好像很難對於其他的問題進行建模直接套在這個定理上面,但是:
- 一個局面可以被抽象成一個數
- 一個局面的后繼局面可以取滿\([0,a)\)
那么我們建模即可。是不是很棒。
來道例題吧。
簡要題解:在游戲正式開始前多了一個取很多堆的操作,取走很多堆可以看做對對手留一個NIM游戲的集合。那么要使得我們留下的集合的任意一個非空子集都\(\zeta(A)\not =0\),那么就是要求我們留給對手的自己都是線性無關的,這樣就不存在\(\zeta(A)=0\)了,所以我們就取出盡量少的石子堆使得整個集合線性無關,顯然可以貪心做吧...實際上叫擬陣,因為確實對於線性基的集合來說遺傳性和增廣性都挺容易滿足的。(加入我取走這個大的石子堆可以防止和那個小一點的石子堆線性有關,那么我們不如取小的那一個,這是對這個擬陣的簡單說明)。
有向圖游戲
內容
有一個DAG,有一個唯一的起點,最開始棋子在這個起點上,你可以讓棋子向該點任意一個出度走一步,當你走玩了最后可以走的那一步你就贏了(當你沒有可以走的點你就輸了)。兩人交替行動。
定義1:mex運算
mex運算是對於正整數集合\(S\)的函數,具體計算方式為:
定義2:SG函數
遞歸定義:
在DAG上,設當前點為\(x\),設它的后繼頂點集合為\(V\),那么
很明顯當\(V=\varnothing\)(沒有后繼節點了)的時候\(\S(x)=0\)。
特別的,對於圖\(G\),它的sg函數定義為這個圖起點的sg函數值。
定理1:一個有向圖游戲的勝負判斷
一個有向圖游戲局面必勝,當且僅當
證明如下
當我們發現棋子點上沒有出邊時候,我們輸了,此時顯然有\(\S(A)=0\)。
那么我們上一個狀態一定有\(\S(A') \ge 1\)。假如我們在這個\(A'\)局面上我們就是必勝的。
也就是說,假如\(\S(A)\not=0\)那么我們就可以把石子移動到那個\(\S(A')=0\)的局面上,我們就必勝了。
定理2:多個有向圖游戲的和
勝負判斷和前面那個一樣。
證明如下
每個\(k=\S(G_i)\)表示后繼條件一定可以取到\([0,k)\),這和NIM游戲取石子有什么區別...那就是和NIM一樣啊!
以上只能算說明,有一些其他的細節可以自己想通的。
理解
建模應該是OIER必備技能吧,我們可以把各種ICG游戲全部抽象成一個DAG上的游戲
咕咕咕
寫得很好,可以看看,很全。
提供一大堆例題