其實有至關大一部分的博弈論都是能夠抽象成Nim及其擴展問題的,剩下的小部分結合題目具體分析。函數
本文主要討論Nim有關的題目3d
nim的原型題結論:若$a_1 \ xor \ a_2 \ xor... a_n=0$則先手必敗,不然必勝blog
證實:遊戲
終止局面顯然知足等式原型
若是一個局面$a_1 \ xor a_2 \ xor... a_n!=0$,那麼不管他改變其中一個$a_i$等於剩下數字的異或和就能知足等式it
若是一個局面$a_1 \ xor a_2 \ xor... a_n=0$,那麼不管他改變$a_i$中的哪個都會打破等式擴展
有些博弈論題,結合題目中的信息推導一些結論後,能夠將原問題抽象爲Nim問題二進制
好比【BZOJ2281】【Sdoi2011】黑白棋 將棋子間的間隔抽象爲石頭堆方法
有些題目須要藉助SG函數來抽象im
即,將每個狀態用SG函數值表示出來。
若SG(x)=y,含義就是x能夠轉移到0~y-1的全部狀態(像不像Nim遊戲?),若SG(x)=0就說明沒法轉移,也就是輸了。
這樣能夠將SG函數值自己看做石頭堆
而後原問題就轉化爲了初始狀態的SG異或和是否爲0
遞推解決便可
能夠同時取最多k堆石頭
結論:若知足:將$a_i$寫成二進制,若對於每個二進制位,全部的$a_i$那一位的1的數量%k=0,則先手必敗,不然必勝
證實類比傳統Nim遊戲
每次選擇一堆石頭,將其分裂爲幾堆更小的。
結論:每堆石頭的SG函數的後繼集合等於每種分法產生的堆的異或和
即$SG(x)=mex(SG(a_1 xor ..a_{k_1}),SG(b_1 xor .. b_{k_2},...)$
而後遞推SG函數求解便可
例題:【bzoj3576】[Hnoi2014]江南樂
最後一個取石頭的人輸
一個狀態爲必勝態,當且僅當:(NIM_sum爲全部石頭數的異或和)
1)全部堆的石子個數爲1,且NIM_sum=0
2)至少有一堆的石子個數大於1,且 NIM_sum≠0
每次將所取第i堆的石頭轉移到第i-1堆,到0中止
若全部奇數位的數異或起來,若不爲0則必勝
證實:移入偶數堆的石頭能夠看作是被清除了
若是有人拿出來就再將其丟去下一個偶數堆,對局面不影響
之因此是偶數是由於0是偶數,移入0的石頭沒法再移出,再也不有影響。
而後就是普通的Nim遊戲了