組合遊戲(博弈)

昨天看大白書翻到了組合遊戲這章,看着發覺原來是博弈論的內容,於是便看下去了。真是不看不知道,一看才知道自己的水平有多弱,不過好在還是集中精神地看了大部分。從Nim遊戲(n堆石子,每人每次可以從任意一堆中取至少1個、至多整堆的石子,不能取者爲輸)開始講起,引入必勝態、必敗態的概念——

  1. 一個狀態是必敗狀態當且僅當它的所有後繼都是必勝狀態。

  2. 一個狀態是必勝狀態當且僅當它至少有一個後繼是必敗狀態。

  這是劉汝佳大神說的,說得通俗一點就是,必敗態的所有後繼都是必勝態,必勝態只需有一個後繼是必敗態即可(這裏說的必勝態、必敗態都是針對先手來說必勝、必敗的意思)。可以看出必敗態滿足的條件比必勝態更苛刻。沒有後繼狀態的是必敗態(也就是終態),一般規則都是不能操作的遊戲者爲輸(是在雙方都足夠聰明的前提下的),然後可以用一個有向無環圖來表示二人博弈的過程。實際上,並不需要這樣子做。對於Nim遊戲來說,早有科學家給出了一個定理:狀態(x1,x2.....xn)爲必敗狀態當且僅當x1^x2^......^xn= 0,即把所有數進行異或和操作,也稱Nim sum。能夠證明,當Nim sum爲0 時爲必敗狀態,非0 時爲必勝狀態,這是因爲,當前狀態爲0 時,進行的某個操作總能使Nim sum變爲非0(因爲改變任何一個數字(即任何一堆石子),它的二進制形式會有一位或多位的變化,此時原本各位上都爲0 的Nim sum就會有所變動(某些位會變成1)),即所有後繼都是必勝狀態了;當前狀態爲非0 時,必定會有某個操作能使Nim sum變爲0(只需在Nim sum二進制上那些爲1的位上面着手即可),即一定有一個後繼狀態爲必敗態。這就是Bouton定理。

  然而,看到後面我才知道,Bouton定理實質上是SG定理的具體應用。什麼是SG定理呢?先要介紹下SG函數:對於任意狀態x,定義SG(x)= mex(S),其中S是x 的後繼狀態的SG函數值的集合,而mex(S)表示不在S內的最小非負整數。看到這兒是不是感到有點遞歸的味道了?沒錯,實際上,它可以用遞推來求出各個SG函數的值(要很注意計算順序,結合具體題目分析),也可以用加記憶化的深搜回溯(不建議使用)。而SG定理就是,遊戲和的必勝(敗)態等於各個子游戲的SG函數的Nim sum。這樣,就可以把各個子游戲分而治之,大大簡化了問題。事實上,很多題目雖然可以套用這些理論來分析(這個確實是真的,SG函數是解決博弈問題的王道!),但往往不會那麼生硬地要你去求各個子SG函數,做這些博弈題的時候,一定要看清題意,抓住問題的本質(這句話…對於所有題目都適用),直接搞就行(0.0),只要找清它的必勝態、必敗態處於具有什麼特徵的位置(一般會有個週期的),明顯的話一兩個循環即可搞掂,別想太多(我有時候刷題就是想太多,總想套上什麼特定的算法,模板之類的,結果思維放不開來 -.-||)……總之一句話,多刷題、多get經驗纔是王道,杭電上面有很多很經典的博弈題(大神們都去刷cf了,別鄙視我等渣渣暫時只會在杭電上找題做),過幾天我去水下上面的博弈題,有時間的話再逐個寫題解吧~

  

  ——以上理論均引自劉汝佳的大白書,加上了自己的見解,感覺說得不是很清楚的話可以去大白書上 2.4 組合遊戲的章節中詳細閱讀,不喜勿噴,希望各路大神路過指教下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章