博弈論進階之Every-SG

自為風月馬前卒發表於2018-02-25

Every-SG

給定一張無向圖,上面有一些棋子,兩個頂尖聰明的人在做遊戲,每人每次必須將可以移動的棋子進行移動,不能移動的人輸

博弈分析

題目中的要求實際是“不論前面輸與否,只要最後一個棋子勝利,那麼就算勝利”

這樣的話,能贏得遊戲必須贏

因為兩個人都頂尖聰明,因此當一個人知道某一個遊戲一定會輸的話,它一定會盡力縮短遊戲的時間,當它知道某一個遊戲一定會贏的話,一定會盡力延長遊戲的時間(畢竟都是為了追求最終的勝利嘛233)

但是!我們怎麼來處理時間的?暴力列舉博弈樹肯定是不可取的,so我們來研究一下這個問題

定義Every-SG遊戲

  • 對於還沒有結束的單一遊戲,遊戲者必須對該遊戲進行一步決策;
  • 其他規則與普通SG遊戲相同

Every-SG遊戲與普通SG遊戲最大的不同就是它多了一維時間

對於\(SG\)值為\(0\)的點,我們需要知道最少需要多少步才能走到結束,
對於\(SG\)值不為\(0\)的點,我們需要知道最多需要多少步結束

這樣我們用\(step\)變數來記錄這個步數

\(step(u) = \begin{cases} 0, & \text{$u為終止狀態$}\\ max\{step(v)\}, & \text{ $sg(u)\neq 0\land v為u的後繼\land sg(v)=0$ }\\ min\{step(v)\}, & \text{$sg(u)=0\land v為u的後繼$} \end{cases}\)

定理

對於Every-SG遊戲先手必勝當且僅當單一遊戲中最大的step為奇數。

定理是顯然的:最大的單一遊戲步數如果是奇數的話那麼肯定是先手取得進行最後一步,否則一定是對手取走最後一個棋子。

例題

這種題目不怎麼好找,到現在也就找到一道

HDU 3595

題解

相關文章