1. 程式人生 > >專題總結(博弈論)

專題總結(博弈論)

ble mat https 推導 strong 狀態 tps 場景 game

https://zybuluo.com/ysner/note/1232112

雙人平等博弈(理論應用前提)

  • 信息完全公開
  • 雙方輪流行動
  • 面對同一局面,雙方的決策集合相同
  • 一般來說,規定不能操作者輸
  • 遊戲局面不會成環,有限步之後遊戲必定結束

    \(N\)態與\(P\)

  • 首先把結束的局面置為\(P\)
  • 對於一個\(P\)態,找到所有能轉移到它的狀態,它們全部是\(N\)
  • 搜到一個狀態時,它還沒有被篩掉,就是\(P\)

很多題目中, P 態之間不可直接轉移。

一些性質

  • \(SG\)值異或和為\(0\)即後者勝,對應\(P\)態。
    證明:每當前者把異或和改變,使其不為\(0\),後者總能把異或和重新變為\(0\)

    (拿掉相同數量的石子。並且這一定可行,否則異或和怎麽為\(0\)?)。則最後一定是前者面對石子取完的情況。
    而若不為\(0\),前者一開始把異或和變為\(0\),之後與後者對著幹(使異或和為\(0\))即可。

  • \(SG(A+B)=SG(A)\bigoplus SG(B)\)
  • 如果交換勝負條件,先手勝利:
    1、存在\(SG(x)>1\),且異或和不為\(0\)
    2、\(SG(x)=1\),且有偶數堆石子

    如何計算\(SG\)

    總的來說,常規計算\(SG\)值是一個遞推的過程。
    一般計算(推導)過程,就是對 所有前驅狀態的\(SG\)值 的異或和取\(mex\)

而根據上面提到的性質二,可以得到一個遞推式:
(\(mex\)

表示取括號內不包含的 最小非負整數\[SG(x)=mex_{0\leq i<x}(\bigoplus_{j=1}^iSG(j))\]

應用場景

階梯博弈

\(N\)堆石子放在\(N\)層階梯上,每次選擇一層的若幹石子,放入下一層。(特別地,\(1\)層的石子就被扔掉)

結論:計算所有奇數層石子數的異或和,得到整個遊戲的\(SG\)

其實這玩意兒講不完的,還得自己去看課件。

有趣的題目

模板題

  • [X] nim遊戲 戳

裸板子。

  • [x] Bash遊戲 戳

只有一堆,限制一次最多只能取\(k\)個石子。

\(SG[n]=n\%(k+1)\)(不信可以遞推試試)

中等題

  • [ ] CF 731E 戳

  • [ ] CF 794E 戳

  • [X] [HEOI2014]人人盡說江南好 戳

  • [ ] Alice和Bob又在玩遊戲 戳

  • [X] CF 768E 戳

  • [ ] [ZJOI2009]取石子遊戲 戳

\(SG\)函數相關

  • [x] [ZJOI2009]染色遊戲 戳

我在題解中寫了一份SG計算教程???

  • [ ] [HAOI2015]數組遊戲 戳

  • [ ] [HNOI2014]江南樂 戳

  • [ ] CF 494E 戳

  • [ ] CF 138D 戳

  • [X] A tree game 戳

專題總結(博弈論)