[待更新]淺談博弈論
博弈論
博弈論適用
一般為博弈論的題目有以下標誌
- 兩個選手交替進行遊戲
- 每個選手當前可進行的操作只與局面有關
- 遊戲有至少一個終止情況
如果不滿足上述條件而題目很像博弈的話,可以往dp(狀壓)或者其他騷東西上考慮
例如:
Gems Fight! [HDU - 4778]
思路
博弈論類題目就目前做過的題來看,一般有兩種情況,要麼考慮必勝局面推公式或者刷SG表找規律,要麼直接碼出SG函式
考慮必勝局面的做法一般先推出能一眼看出的必勝局面(最好其他局面都可以向下轉化為類似這個必勝局面),然後推出其他局面和這些必勝局面的關係。有些時候需要大膽一點猜結論
碼SG函式的題目一般資料範圍很小,因為刷SG表複雜度是記憶化dfs的複雜度,從資料範圍上也能看出一點出題人的小心思
SG函式
考慮一個博弈遊戲的所有局面,將其分為兩種,先手必勝和先手必敗。
每一個局面經過一次合法操作所能到達的局面連一條單向邊,就可構成一個類似解空間的有向樹
現給出SG函式的定義
(看起來很繁瑣,其實SG(x)就是與x相連點的SG值中沒有出現的最小自然數)
乍一看這個函式的定義很突兀,怎麼就和最小自然數聯絡上了?
現在假設只看
以及
兩類
博弈終止局面的
值為0,代表先手必敗。
現有比較淺顯的定理
- 如果一個點A所連的點有一個是先手必敗的點,那麼點A就是先手必勝
- 如果一個點A所連的點都是先手必勝的點,那麼點A就是先手必敗點
現在再來考慮剛才簡化的
函式
一個點A所連點存在一個
的點,那麼這個點就是先手必勝(
),如果一個點A所連點都是
,那麼這個點就是先手必敗(
)
大多數的題目這類簡化版的 函式就夠用了
而取最小未出現自然數在取石子一類題目中比較常見,類似Nim遊戲或者其變種。(如果沒有了解過Nim遊戲的可以去了解一下,這個結論的推導也是根據 函式來的)
利用完整版的 函式,可以將n堆石子的類Nim遊戲分成n個1堆石子的子游戲,然後將n個子遊戲的 值異或起來就是整個遊戲的 值
推公式
推公式方面就是要多大膽假設,把問題往簡單的數學模型上靠。
一般檢測一個公式是不是正確的可以用一下3步
- 遊戲的終態是不是先手必敗態
- 先手必勝的局面能否移動到一個先手必敗的局面
- 先手必敗的局面無法移動到一個先手必敗的局面
其實就是推出的式子滿足最基本的勝負轉換
(就先寫這麼多吧,也是做了一些題想總結一下,之後有時間的話再帶著具體的例子來仔細講講)