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

2022-07-15 03:36:12 字數 1876 閱讀 7637

sg函式的計算方法:

乙個局面的sg為mex

mex運算為集合中沒出現的最小的自然數

幾個局面的和的sg為單個的sg亦或

sg不為0時先手必勝,sg為0時後手必勝

1.nim game

最為經典

n堆石子,每次可以從一堆裡面取任意個石子

對於一堆石子,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 值的異或和。

證明的基本套路:

必勝局面存在乙個操作到達必敗局面,必敗局面無論怎麼操作都會到必勝局面

各種動態規劃經典模型

1.lis 方法1.n 2 動態規劃 方法2.對上面的動態規劃優化後,發現決策是可以簡單化的,就是一些決策可以直接捨棄掉,對應到搜尋就是剪枝,用二分查詢搞到 n log n 2.lcs 方法1.時間空間均為 n 2 的動態規劃。記 f i,j 為匹配到a的i和b的j.上面可以壓縮一維空間。3.lci...

藍橋杯 火柴遊戲(經典的博弈演算法)

題目 這是乙個縱橫火柴棒遊戲。如圖1,在3x4的格仔中,遊戲的雙方輪流放置火柴棒。其規則是 1.不能放置在已經放置了火柴棒的地方 即只能在空格中放置 2.火柴棒的方向只能是豎直或水平放置。3.火柴棒不能與其它格仔中的火柴 連通 所謂連通是指兩根火柴棒可以連成一條直線,且中間沒有其它不同方向的火柴 阻...

幾個經典的博弈

一 巴什博奕 bash game 只有一堆 n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取 m個。最後取光者得勝。顯然,如果 n m 1 那麼由於一次最多只能取 m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1...