博弈遊戲的各類經典模型(備忘)

SG函數的計算方法:函數

一個局面的SG爲mex{後繼局面的SG}遊戲

mex運算爲集合中沒出現的最小的天然數二進制

幾個局面的和的SG爲單個的SG亦或方法

SG不爲0時先手必勝,SG爲0時後手必勝im

 

1.Nim Game集合

最爲經典移動

n堆石子,每次能夠從一堆裏面取任意個石子cas

對於一堆石子,SG函數就是石子數數字

整個遊戲的SG函數是每一堆石子的SG函數的亦或和

必勝:SG不爲0

必敗:SG爲0

 

2.Bash Game

每次最多取m個石子,其餘同Nim

一堆石子的SG函數爲石子數mod(m+1)

整個遊戲的SG函數是每一堆石子的SG函數的亦或和

必勝:SG不爲0

必敗:SG爲0

 

3.Nimk Game

每次最多能夠同時從k堆石子進行操做,這k堆能夠取不一樣數量的石子

一堆石子的SG函數爲石子數

對每個二進制位單獨算,求SG函數每個二進制位1的個數mod(k+1),若是都爲0,則必敗,不然必勝

證實:

對於必敗態無論怎麼走都只能走到必勝態

對於變化的SG的最高位,你至少變化爲1,最多變化爲k,因此這一位1的個數不可能mod(k+1)仍是爲0

對於必勝態咱們確定能夠找到一種方法走到必敗態

咱們從高位往低位作,記s爲這一位能夠隨意填值的數字個數(若是把某一位從1變成0,那麼更低位就能隨便取值了)

假設咱們如今作到第k位,記n爲除了能隨便取值的s位之外這一位1的個數mod(k+1)

若是n+s<=k,那麼很簡單,咱們取出n個第k位爲1的讓這些數字的第k位變成0,那s個數字這一位也變成0,而後s+=n

若是n+s>k,即n+s>=k+1,那麼s>=k+1-n,咱們在s中間取k+1-n個變爲1,其餘變爲0就能夠知足條件了

 

4.Anti-Nim Game

不能取石子的一方獲勝

必勝:SG不爲0且至少有一堆石子數大於0,SG爲0且每一堆石子數都爲1

必敗:其他爲必敗

 

5.Staircase Nim

階梯博弈

每次能夠從一個階梯上拿掉任意數量石子放到下一層階梯,不能操做的爲輸

SG函數爲奇數階梯上的石子的亦或和

若是移動偶數層的石子到奇數層,對手必定能夠繼續移動這些石子到偶數層,使得其SG不變

 

6.Wythoff Game

有兩堆石子,每次能夠從一堆或者兩堆裏拿走同樣數目的石子,不能取的爲輸

必敗態爲(1,2)(3,5)(4,7)(6,10)...

差爲1,2,3,4.....每一對數的第一個數爲前面沒出現的最小的正整數

 

7.Take & Break

每次能夠把一堆石子分紅兩堆甚至多堆不爲0的石子,不能操做的爲輸

暴力計算SG

 

8.樹上刪邊遊戲

給定根節點,每次能夠刪掉一條邊,不與根節點相連的部分刪除

葉子節點SG爲0,其餘節點的SG函數爲子樹SG+1的亦或和

證實:

將子樹SG+1看作石子數(咱們能夠定義沒有節點的圖的SG爲-1),而後就變成了取石子游戲

 

9.無向圖刪邊

規則同樹上刪邊遊戲

結論:把奇環縮成一個點加一條新邊,把偶環縮成一個點,不影響SG,而後套用樹上刪邊遊戲

 

10.翻硬幣遊戲

n枚硬幣排成一排,有的正面朝上,有的反面朝上。
遊戲者根據某些約束翻硬幣(如:每次只能翻一或兩枚,或者每次只能翻連續的幾枚),但他所翻動的硬幣中,最右邊的必須是從正面翻到反面。
誰不能翻誰輸。

須要先開動腦筋把遊戲轉化爲其餘的取石子游戲之類的,而後用以下定理解決:
局面的 SG 值等於局面中每一個正面朝上的棋子單一存在時的 SG 值的異或和。

 

證實的基本套路:

必勝局面存在一個操做到達必敗局面,必敗局面不管怎麼操做都會到必勝局面

相關文章
相關標籤/搜索