博弈论!!!
沒事扯兩句
雖然在OI界好像博弈題并不是很多(顯然是我見識少),然而在ACM中似乎是很常見的…刷多校看題典什么的都會遇到,然后題解又往往只有簡略的一句話:”暴力dp即可”“暴力維護SG函數即可”這種.?
所以還是花了一個多星期學習了一下這個玄學的東西…?
其實嚴格來說博弈論完全不能算是算法對吧…
算法資料
- 《由感性認識到理性認識——透析一類搏弈游戲的解答過程》?
- by 張一飛 2002年國家集訓隊論文
- 《解析一類組合游戲》?
- by 王曉珂 2007年國家集訓隊論文
- 《組合游戲略述——淺談 SG 游戲的若干拓展及變形》?
- by 賈志豪 2009年國家集訓隊論文
- 《取石子游戲類分析的分析討論》?
- by 朱全民老師
- Game Thoery?
- by Thomas S. Ferguson
學習流程與心得
學習時首先要明白,我們研究的游戲其實應該叫做“組合游戲”,這是一種雙人之間進行的公平的完全信息博弈,并且一定可以在有限步數內結束(詳細的概念見王曉珂論文).所以在雙方都采取最優策略的前提下,一個狀態要么是必勝態要么是必敗態,沒有第三種情況.?
而判定必勝態和必敗態最原始的方法就是:
也有相當數量的題目,只要按照這個顯然的性質暴力求解就可以過了.這種題目把博弈的外殼去掉之后實質就只是個簡單的暴力dp了,一般來講沒什么技術含量.所以這種題不看論文也可以做.?
要開始看論文的話..上面列舉出的前三篇國家集訓隊論文都是非常優秀的,強烈建議按順序仔細閱讀.
張一飛的論文由淺入深地引出了異或運算及SG函數(雖然論文中只是叫做f函數),一開始引入二進制非常妙,不顯得那么突兀.然而后來關于SG函數的證明一開始還是會讓人有些不知所措的.總之看完一遍之后要記住的結論還是比較簡單的:
至于證明,論文中都有.?
所以怎么理解這個東西呢??
說實話,這個SG函數為何這么神奇,或者說前人是怎么研究出它的,確實讓人有些摸不著頭腦.但是既然這個東西好用,而且我們也看過一次證明了,就不必太鉆牛角尖了.后面的博弈模型中也會有一些比較無厘頭的結論,但是既然能夠證明了,我們也不必糾結那么多,說難聽點記住一個結論就行了.
到此,可以把博弈問題分為一類:?
暴力維護狀態的必勝態、必敗態信息或者SG值.?
如果一步操作會把游戲分為幾個子游戲,那就要用到SG了,否則就只需要必勝態、必敗態的信息了.
然后繼續看王曉珂的論文…這里面會講到博弈中很重要的轉化思想,而在朱全民老師整理的那一篇《取石子游戲類分析的分析討論》中整合了許多經典的取石子游戲模型,這兩篇可以交叉閱讀.然后賈志鵬的論文中還介紹了翻硬幣游戲、無向圖刪邊游戲等等(說實話這篇我沒有完全吃透).
這里我比較作死地整理一下常見的博弈游戲模型:
-
Nim Game
- 最經典最基礎的博弈.
- n堆石子,雙方輪流從任意一堆石子中取出至少一個,不能取的人輸.
- 對于一堆x個石子的情況,容易用歸納法得到SG(x)=x.
- 所以所有石子個數的異或和為0是必敗態,否則為必勝態.
-
Bash Game
- 每人最多一次只能取m個石子,其他規則同Nim Game.
- 依舊數學歸納…SG(x)=xmod(m+1).
-
NimK?Game
- 每人一次可以從最多K堆石子中取出任意多個,其他規則同Nim Game.
- 結論:在二進制下各位上各堆石子的數字之和均為(K+1)的倍數的話則為必敗態,否則為必勝態.
- 這個證明要回到原始的方法上去.
- 補:這個游戲還可以推廣,即一個由n個子游戲組成的游戲,每次可以在最多K個子游戲中進行操作.
- 然后只要把結論中各堆石子的個數改為各個子游戲的SG值即可,證明也還是一樣的.
-
Anti-Nim Game
- 似乎又叫做Misère Nim.
- 不能取的一方獲勝,其他規則同Nim Game.
- 關于所謂的”Anti-SG游戲”及”SJ定理”賈志鵬的論文上有詳細說明,不過似乎遇到并不多.
- 結論是一個狀態是必勝態當且僅當滿足以下條件之一:
- SG值不為0且至少有一堆石子數大于1;
- SG值為0且不存在石子數大于1的石子堆.
-
Staircase Nim
- 每人一次可以從第一堆石子中取走若干個,或者從其他石子堆的一堆中取出若干個放到左邊一堆里(沒有石子的石子堆不會消失),其他規則同Nim Game.
- 這個游戲的結論比較神奇:
- 當且僅當奇數編號堆的石子數異或和為0時為必敗態.
- 簡單的理解是從偶數編號堆中取石子對手又可以放回到奇數編號堆中,而且不會讓對手不能移動.比較意識流,然而可以歸納證明.
-
Wythoff Game
- 有兩堆石子,雙方輪流從某一堆取走若干石子或者從兩堆中取走相同數目的石子,不能取的人輸.
- 容易推理得出對任意自然數k,都存在唯一的一個必敗態使得兩堆石子數差為k,設其為Pk=(ak,bk),表示石子數分別為ak,bk(ak?bk).
- 那么ak為在Pk0(k0<k)中未出現過的最小自然數,bk=ak+k.
- 數學班的說,用Betty定理以及顯然的單調性就可以推出神奇的結論:
- ak=?k?5√+12?,bk=?k?5√+32?.
-
Take & Break
- 有n堆石子,雙方輪流取出一堆石子,然后新增兩堆規模更小的石子堆(可以沒有石子),無法操作者輸.
- 這個游戲似乎只能暴力SG,知道一下就好.
-
樹上刪邊游戲
- 給出一個有n個結點的樹,有一個點作為樹的根節點,雙方輪流從樹中刪去一條邊邊,之后不與根節點相連的部分將被移走,無法操作者輸.
- 結論是葉子結點的SG值為0,其他結點SG值為其每個兒子結點SG值加1后的異或和,證明也并不復雜.
下面兩個游戲我不太會,于是偷懶引用賈志豪《組合游戲略述——淺談 SG 游戲的若干拓展及變形》中的內容了.
-
翻硬幣游戲
n枚硬幣排成一排,有的正面朝上,有的反面朝上。?
游戲者根據某些約束翻硬幣(如:每次只能翻一或兩枚,或者每次只能翻連續的幾枚),但他所翻動的硬幣中,最右邊的必須是從正面翻到反面。?
誰不能翻誰輸。需要先開動腦筋把游戲轉化為其他的取石子游戲之類的,然后用如下定理解決:?
局面的 SG 值等于局面中每個正面朝上的棋子單一存在時的 SG 值的異或和。 -
無向圖刪邊游戲
一個無向連通圖,有一個點作為圖的根。?
游戲者輪流從圖中刪去邊, 刪去一條邊后,不與根節點相連的部分將被移走。?
誰無路可走誰輸。對于這個模型,有一個著名的定理——Fusion Principle:?
我們可以對無向圖做如下改動:將圖中的任意一個偶環縮成一個新點,任意一個奇環縮成一個新點加一個新邊;所有連到原先環上的邊全部改為與新點相連。 這樣的改動不會影響圖的 SG 值。 -
以上.
所以博弈的題目解法還是比較單一的:
當然,還有些題目是這兩種方法都搞不了的,那就只有上殺手锏——打表找規律了.?
然后就是多寫幾道題啰.怪我沒有把寫過的題目放在這里.?
另外,在hzwer的博客里似乎只找到了兩道博弈的省選題,讓我有點不知所措…所以在OI界博弈還只是很小的一塊嘍??
初步學習就到這里告一段落了…?
(P.S. 上面放出來的Game Theory是權威的一部大長篇,不過暫時我覺得沒必要看了…)
以上內容轉載于?http://blog.csdn.net/kyleyoung_ymj/article/details/51494139
總結
- 上一篇: 鸡尾酒效应
- 下一篇: 许晓斌_Maven实战(九)---打包的