博弈論總結(已更新二分圖博弈)


博弈論


  • 以下主要內容來自於對集訓隊論文《組合游戲略述——淺談SG游戲的若干拓展及變形》的整理與從其他地方收集補充的一些經典模型
  • 博弈論還在學習過程中,可能還會補充一些東西
    ---update in 2019.1.31---已更新二分圖博弈

組合游戲基礎定義

游戲的定義:

  • 游戲有2名參與者,兩人輪流操作
  • 游戲過程中的任意時刻有確定的狀態
  • 參與者操作時將游戲從當前狀態轉移到另一狀態,且規則規定了在任意狀態時,可以到達的狀態集合
  • 在有限步數之內結束(沒有平局)
  • 參與者擁有完全的信息

游戲的表示:

定義:對於一個游戲,如果當前狀態\(P\),玩家\(L\)可以轉移到的狀態為\(P_L\),玩家\(R\)可以轉移到的狀態為\(P_R\),那么記\(P = {P_L | P_R}\)
例子:假設當前狀態為\(P\),玩家\(L\)可以轉移到的狀態為\(A, B, C\),玩家\(R\)可以轉移到的狀態為\(D\)
那么\(P = \{A, B, C | D\}\)

游戲的和:

如果一個游戲\(G\),可以被分解成若干個不相交的子游戲\(G_1, G_2, G_3...G_n\),且滿足在\(G\)中的操作等價與在子游戲中選一個進行操作,那么我們稱\(G\)是這若干個子游戲的和,即\(G = \sum_{i = 1}^{n}G_i\)

組合游戲模型

SG游戲中的SG函數與相關定理

SG游戲定義:

這樣一類組合游戲:無法操作者輸

SG函數定義:

SG函數是對游戲圖中每一個節點的評估函數。滿足如下等式:

\[SG(v) = mex\{SG(u) | 圖中有一條從v到u的邊\} \]

其中\(mex(x_1, x_2...x_t)\)是定義在非負整數集合上的操作,自變量是任一非負整數集合。得到的結果是不屬於該集合的最小自然數。即:

\[mex{S} = min(k | k \notin A \land k \in N) \]

性質:

1,對於任意局面,如果它的SG值為0,那么它的任意后繼SG值不為0
2,對於任意局面,如果它的SG值不為0,那么一定有一個后繼狀態的SG值為0
在SG游戲中,SG值為0時先手必敗。
3,在每次只能進行一步操作的情況下,對於任何游戲的和,如果將其中任一單一SG-組合游戲換成數目為它SG值的一堆石子,則該單一SG-組合游戲的規則變為取石子游戲的規則(可以任意取),則游戲的和的勝負不變。

變式:

若只考慮游戲的和,我們可以將其中任一游戲換成SG值相等的其他游戲,游戲的和的SG值不變。

因此,在考慮游戲的和時,我們不關心每個單一游戲具體是什么,我們唯一要關心的就是這個單一游戲的SG值。由此可見,我們可以把任意游戲的和轉換為Nim游戲,這樣計算起來就很方便了。

Anti-SG游戲和SJ定理

Anti-SG游戲定義:

走完最后一步者輸,即決策集合為空者贏(因為無法操作)

\(\Delta\)求解Anti-SG游戲時,依然可以使用SG函數求解。

anti-nim游戲

定義:

  • \(n\)堆石子,參與者輪流取石子。
  • 每次可以從一堆中取出任意數目的石子,不能不取
  • 取走最后一個石子者敗

結論:
先手必勝當且僅當

  • 所有堆的石子數都為\(1\)且游戲的SG值為\(0\)
  • 有些堆的石子數大於\(1\)且游戲的SG值不為\(0\)

證明:
兩種情況:

  • \(n\)個堆,每個堆只有一個石子。顯然,先手必勝當且僅當\(n\)為偶數
  • 其他情況:
  • 當SG不為\(0\)
      若還有至少兩堆石子的數目大於\(1\),則先手將SG值變為\(0\)即可;若只有一堆石子數大於\(1\) 則先手總可以將狀態變為有奇數個\(1\)(通過取完or取到只剩一個).所以先手必勝。
  • 當SG為\(0\)
      若至少有兩堆石子的數目大於\(1\),則先手決策完之后,必定至少有一堆石子大於\(1\),且SG值不為\(0\),所以先手必敗。

但上述證明只對anti-nim游戲成立,因為在證明SG性質時,用到了這樣一個性質:SG值為0的局面不一定為終止局面。

SJ定理

嘗試將上述方法推廣。
先看一個錯命題

先手必勝當且僅當:
1,所有單一游戲的SG值小於\(2\)且游戲的SG值為\(0\)
2,存在單一游戲的SG值大於\(1\)且游戲的SG值不為\(0\)
image_1d1aond85ven1tsga7coc42fq9.png-18kB
在上圖中,這個命題就不成立

定義:

對於任意一個Anti-SG游戲,如果我們規定當局面中所有的單一游戲的SG值為0時,游戲結束,則先手必勝當且僅當:
1,游戲的SG函數不為0且游戲中某個單一游戲的SG函數大於1
2,游戲的SG函數為0且游戲中沒有單一游戲的SG函數大於1

證明:
需要證明如下3種情況:
1,所有終止局面為先手必勝.(終止局面指決策集合為空的局面,即無法決策)
2,游戲中任何一個先手必敗局一定只能轉移到先手必勝局。
3,游戲中的任何一個先手必勝局一定能轉移到至少一個先手必敗局。

情況一:局面的SG函數為0且游戲中某個單一游戲的SG函數大於1.
\(\because\)當前局面的SG函數為0,又\(\because\)SG函數性質(1)
\(\therefore\)它所能轉移到的任何一個局面的SG值不為0
\(\because\)當前局面的SG值為0且游戲中某個單一游戲的SG函數大於1.
\(\therefore\)當前局面中必定至少有2個單一游戲的SG函數大於1
\(\because\)每次之多只能更改一個單一游戲的SG值
\(\therefore\)它能轉移到的任何一個局面都至少有一個單一游戲的SG值大於1
由上述得:情況一所能轉移到的任何一個局面都為先手必勝局

情況二:局面的SG函數不為0且游戲中沒有單一游戲的SG函數大於1
可以發現,當前局面一定有奇數個游戲的SG值為1,其余游戲的SG值為0.
1,將某個單一游戲的SG值更改為大於1的數。
\(\because\)轉移前沒有單一游戲的SG值大於1,而轉移將某個單一游戲的SG值更改為大於1的數
\(\therefore\)轉移后的局面一定有且只有一個單一游戲的SG值大於1
\(\therefore\)后繼局面的SG值一定不為0
因此,后繼局面一定為先手必勝局
2,將某個單一游戲的SG值更改為0或1.
\(\because\)轉移是將某個SG值為0的單一游戲改成SG值為1的單一游戲,或將某個SG值為1的單一游戲改成SG值為0的單一游戲。
\(\therefore\)轉移后的局面一定有偶數個SG值為1的單一局面,且不含有SG值大於1的局面(什么意思???)
\(\therefore\)后繼局面一定為先手必勝

情況三:局面的SG函數不為0且游戲中某個單一游戲的SG函數大於1.
1,局面中只有1個單一游戲的SG值大於1。
選擇更改SG最大的單一游戲,可以將其更改為0或1來保證轉移后的局面有且只有奇數個SG值為1的單一游戲。(同anti-nim游戲)
2,局面中至少有2個單一游戲的SG值大於1。
根據SG函數性質2,總存在一種決策可以將后繼局面的SG值變為0.
\(\because\)局面中至少有2個單一游戲的SG值大於1
\(\because\)每次最多只能改變一個單一游戲的SG值。
\(\therefore\)后繼局面中至少有一個游戲的SG值大於1
因此,后繼局面為先手必敗

情況四:局面的SG函數為0且游戲中沒有單一游戲的SG函數大於1.
當局面中所有單一游戲的SG值為0時,游戲結束,先手必敗。(???)
否則,局面有且僅有偶數個SG值為1的單一游戲,其余游戲的SG值為0.
我們只需要將其中的某一個SG值為1的單一游戲的SG值變為0,游戲中即可出現奇數個SG值為1的單一游戲,到達先手必敗態

\(\Delta\)SJ定理中的:"規定當局面中所有單一游戲的SG值為0時,游戲結束"可以被替換為"當局面中所有單一游戲的SG值為0時,存在一個單一游戲滿足SG值能夠通過一次操作變為1"

Multi-SG游戲

定義:

1,在符合拓撲原則的前提下,一個單一游戲的后繼可以為多個單一游戲
2,其他規則與SG游戲相同

求解:

可以通過將SG函數適當變形來解決。只需要證明:我們依然可以用SG函數來定義局面。
因為局面在游戲樹中滿足拓撲關系(無環),所以我們可以根據拓撲關系用數學歸納法來證明。

Every-SG游戲

定義:

1,對於任意單一游戲,如果還未結束,那么就必須操作
2,其他規則同SG游戲

求解:

對於我們必勝的單一游戲,必定是玩的時間越長越優,對於必輸的單一游戲,肯定是玩的時間越短越優。
那么據此有如下解法:
通過游戲圖計算某個狀態的SG函數(只需得知是否為0即可),對於SG為0的點,需要知道最快幾步可以結束游戲,對於SG不為0的點,需要知道最慢幾步游戲會結束,用\(step\)函數來表示這個值

\[step(v) \begin{cases} 0 \quad v為終止狀態\\ max(step(u)) + 1 \quad SG(v) > 0 \land u為v的后繼狀態\\ min(step(u)) + 1 \quad SG(v) = 0 \land u為v的后繼狀態\\ \end{cases}\]

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

證明:略……

常見博弈模型

Nim游戲

問題:\(n\)堆石子,每次從某一堆中拿若干個,無法操作者輸。
結論:所有石子數異或和為\(0\)則后手勝,否則前手勝。
證明:
基於一個發現:如果有且只有\(2\)堆相同數量的石子,那么后手必勝。
這個發現可以進行推廣,如果一個狀態可以被一分為二到\(2\)個相同狀態,那么后手必勝。
可以看做把\(n\)堆石子分為\(2\)組,每一組完全相同,那么A不管對其中的某一組做了什么操作,B都可以對另外一組做完全相同的對稱性可知,B一定會贏。滿足這樣的一個條件的狀態異或和為0;
用歸納法來嘗試證明:(不嚴謹)
如果任意一個狀態必輸,實質上都是由於一個集合S內的若干個狀態必輸(可以通過SG函數的推導轉化過來),那么稱集合S為基礎必輸態集合。
根據游戲的定義,nim游戲的基礎必輸態集合大小為1,里面只有一個元素,\(S = \{0\}\).
\(0\)的異或和為\(0\)
因此只需要證明對於任意一個異或和不為\(0\)的狀態,都可以通過某種方式變為異或和為\(0\)的狀態。對於任意一個異或和為\(0\)的狀態,無法通過任意轉移變為異或和為\(0\)的狀態。

對於異或和不為\(0\)的狀態。設它們的異或和最高位為\(k\),則一定有一個數的最高位也為\(k\)

因此我們可以考慮對這個數進行操作。如果異或和的某一位為\(0\),則我們不對這個數的這一位做任何改變;反之,我們對這一位取反。那么由異或和的特效可以得知,所有為\(0\)的位不變,依然為\(0\).而所有為\(1\)的位狀態改變,不再為\(1\),因此這個后繼狀態的異或和就為\(0\)了。而因為第\(k\)位變為了\(0\),且其他狀態取反的位都小於\(k\),因此這個數一定會減小,因此我們一定可以取出一定數量的石子達到目的。

對於異或和為\(0\)的狀態,因為只能改變某一堆石子且必須做出改動,所以不管改哪一堆石子,都必然會使得至少一位的狀態改變,從\(0\)變為\(1\).

NimK游戲

問題:\(n\)堆石子輪流取,每次可以任選\(m\)堆取任意個,無法操作者輸,求是否先手必勝。
結論:在二進制意義上,如果每一位的\(1\)的個數都是\(m + 1\)的倍數,那么先手必輸。Nim游戲可以看做\(m = 1\)的NimK游戲。因為異或就相當於把每一位\(1\)的個數加起來對\(2\)取模.

巴什博弈

問題:一堆n個物品,2人輪流從這堆物品中取物,每次取\(1\)~\(m\)個,無法操作者輸。
結論(解法):\(n = (m + 1)r + s\)其中\(r\)為任意自然數,\(s \le m\),即\(n \% (m + 1) != 0\),則先手必勝。
證明:根據題意,如果剩下的石子小於等於\(m\)個,那么此時先手必勝。因此如果剩下的石子是m + 1個,那么先手取后,必定剩下小於等於\(m\)個石子,因此\(m + 1\)是先手必敗態。
所以如果\(n \% (m + 1) != 0\),那么先手只需要每次保持下一次的石子數是\(m + 1\)的倍數即可,這顯然是可做到的。

威佐夫博弈

問題:有兩堆若干個物品,兩個人輪流從某一堆或同時從\(2\)堆中取同樣多的物品,規定每次可以取任意個,但必須取。無法操作者輸。
奇異局勢:稱先手必敗局為奇異局勢,那么前\(n\)個奇異局勢為:

\[(0, 0), (1, 2), (3, 5), (4, 7), (6, 10), (8, 13)…… \]

\(k\)表示奇異局勢的編號,則\((a[k], b[k])\)表示第\(k\)個奇異局勢,其中\((0, 0)\)為第\(0\)個奇異局勢。
可以發現:\(a[k]\)是未在前面出現過的最小自然數,而\(b[k] = a[k] + k\).
性質:任何自然數都包含在一個,且僅有一個自然數里。
證明:\(\because a[k]\)是未在前面出現過的最小自然數,所以有

\[a[k] > a[k - 1] \]

\[b[k] = a[k] + k > a[k - 1] + k > a[k - 1] + k - 1 = b[k - 1] > a[k - 1] \]

所以\(b,a\)都不會重復,顯然會包含所有的自然數。
結論:奇異局勢滿足如下等式:

\[a[k] = \frac{b[k] - a[k]}{1.618} = \frac{b[k] - a[k]}{\frac{\sqrt{5} + 1}{2}} \]

斐波那契博弈

問題:有一堆n個石子,2人輪流取,先取者可以取走任意多個,但不能全取完,以后每人取的石子數不能超過上個人的2倍,無法操作者輸。
結論:先手必敗當且僅當石子數為斐波那契數

翻硬幣游戲

問題:一般的翻硬幣游戲規則如下:

  • \(n\)枚硬幣排成一排,有的正面朝上,有的反面朝上,從左到右依次編號。
  • 游戲者根據某些約束翻硬幣(如:每次只能翻1或2枚,或者每次只能翻動連續的幾枚),但他所翻動的硬幣中,最右邊的那個必須是從正面翻到反面
  • 無法操作者輸
    結論:局面的SG值為局面中每個正面朝上的棋子單一存在時的SG值的異或和。
    image_1d1cvbn5km571j5gsjhimu1vmvp.png-102.4kB
    \(\Delta\)在某種意義上,它的決策與Nim游戲完全等價。

無向圖刪邊游戲

樹的刪邊游戲

問題:有如下規則:

  • 給出一個有\(n\)個節點的有根樹。
  • 游戲者輪流從樹中刪去邊,刪去一條邊后,不與根節點相連的部分將被移走。
  • 無法操作者輸
    結論:葉子節點的SG值為0,中間節點的SG值為它所有子節點的SG值加1后的異或和。

無向圖刪邊游戲

  • 一個無向聯通圖,有一個點作為圖的根
  • 游戲者輪流從圖中刪去邊,刪去一條邊后,不與根相連的部分將被移走。
  • 無法操作者輸

Fusion Principle定理

對無向圖做如下改動:將圖中任意一個偶環縮成一個新點,任意一個奇環縮成一個新點加一個新邊;所有連到原先環上的邊全部與新點相連,這樣的改動不會影響圖的SG值。

因此可以將任意無向圖改成樹形結構。

二分圖博弈

問題:基於以下幾點:
1,共2人參與。
2,博弈狀態(對應節點)可分為兩類,任意合法轉移都是在兩類狀態之間轉移,而不能在任意一類狀態內部轉移。
3,不可以轉移到已訪問狀態
4,無法轉移者輸
解法:
觀察題目的特殊性,我們發現,將每個狀態看做一個點,那么這些點和合法轉移會構成一個二分圖。
將S集合視作輪到先手決策的點,T集合則代表輪到后手決策的點。
我們先跑一遍二分圖匹配,對於任意一點x,有2種情況:
1,不屬於最大匹配(非匹配點)
  走一步后必然會走到一個匹配點,否則如果遇到一個非匹配點就會形成一條增廣路,那么就不符合最大匹配的前提。而走到一個匹配點后,對方可以不斷沿着匹配邊走,最后必然會停留在S集合,也就是先手必輸。因為如果停留在T集合,依然相當於找到了一條增廣路,不符合前提。
2,屬於最大匹配
  根據1中的描述可知,這個點先手必勝。
其他:

如果一個點\(x\),在某種情況下不屬於最大匹配,那么不管它怎么走,走到的目標節點一定會在某種情況下屬於最大匹配,因此如果從點\(x\)開始會導致先手必敗。反之,如果一個點\(x\)在任意情況下都屬於最大匹配(即為最大匹配的必須點),則先手必勝。

如何檢驗?
1,最暴力的方法:把\(x\)從原圖中刪去,再跑最大匹配,如果跑出的最大匹配大小不變,則說明是非必須點。
2,稍微巧妙一點的方法:考慮一個\(x\)是必須點,相當於沒有點可以取代\(x\),因此我們從\(x\)開始遍歷,看是否可以找到一個同側的未匹配點,如果可以找到,則說明\(x\)為非必須點。
即我們在用匹配點來尋找是否有點可以替換掉它。因此我們可以在\(n + m\)的時間內判斷出一個點是否為必須點。

將這個做法進行推廣,我們可以得到一個判斷二分圖中有沒有\(x\)是非必須點的方法:
從每個未匹配點\(x\)開始遍歷,將經過的同側點打上標記,最后檢驗是否有匹配點被打上標記,有則圖中至少有一個非必須點,因此如果后手可以選擇開始的位置,那么先手必敗。

不平等博弈

Surreal Number

以下內容主要參考自:

現在看不懂……以后再看……
睡前說:超現實數
實數、超實數和博弈游戲:數學的結構之美
淺談算法——博弈論
博弈論的總結
簡單博弈論
博弈論總結
《淺談如何解決不平等博弈問題》
Wiki百科

定義:

SN的定義:

為了簡便起見,下文中將Surreal Number簡寫為SN.
定義SN為一個由左集合與右集合組成,表示為\(\{L | R\}\)的一個東西。且滿足如下性質:
左集合和右集合中的元素也是SN,且左集合中的元素嚴格小於右集合中的元素

符號的定義:
  • \(\le\):對於\(x = \{ X_L | X_R \}\)\(y = \{Y_L | Y_R\}\),我們稱\(x \le y\)當且僅當不存在\(x_L \in X_L\)使得\(y \le x_L\),以及不存在\(y_R \in Y_R\)使得\(y_R \le x\)
  • \(<\):\(x < y\)表示\(x \le y \land \urcorner (y \le x)\)
  • \(=\):\(x = y\)表示\(x \le y \land y \le x\)
  • \(+\):設有\(x = \{ X_L | X_R\}\)\(y = \{Y_L | Y_R\}\).那么$$x + y = { X_L | X_R} + {Y_L | Y_R} = {X_L + y, x + Y_L | X_R + y, x + Y_R}$$
    其中對於集合\(X\)與SN\(y\)的運算:\(X + y = {x + y : x \in X}\)
    邊界情況:\(\varnothing + n = \varnothing\)

SN的構造方法:

首先有\(\{\varnothing | \varnothing\} = \{ | \} = 0\),因此我們可以用0來構造其他SN,可以得到\(\{0 | \}, \{| 0\}, \{0 | 0\}\).
\(\because 0 \le 0 \quad \therefore \{0 | 0\}\)不合法
\(\because \{|0\} < 0 < \{0|\} \quad \therefore\{|0\} = -1, \{0|\} = 1\)
利用0, 1, -1可以構造出7個合法的SN:
\(\because \{1 | \} > 1, \{| 1\} < -1 \quad \therefore \{1 | \} = 2, \{| 1\} = -2\)
\(\because 0 < \{0 | 1\} < 1\)\(\{0 | 1\} + \{0 | 1\} = 1 \quad \therefore \{0 | 1\} = \frac{1}{2}\) 同理\(\{-1 | 0\} = - \frac{1}{2}\)
\(\Delta\)如此類推,可以構造出所有形如\(\frac{j}{2^k}\)的有理數,定義達利函數為:

\[\delta(x) \begin{cases} \{1\},\quad x = 0 \\ \{\delta(x - 1)|\}, \quad x > 0 \land x \in z\\ \{|\delta(x + 1)\}, \quad x < 0 \land x \in z\\ \{\delta(\frac{j - 1}{2^k}) | \delta(\frac{j + 1}{2^k})\}, \quad x = \frac{j}{2^k} \land j, k \in z \land k > 0 \end{cases}\]

定理:對於一個SN \(x = \{L | R\}\),若\(L\)中有最大元素\(L_{max}\),那么\(\{L_{max} | R\} = x\) ;類似的,若集合\(R\)中有最小元素\(R_{min}\),那么\(\{L | R_{min}\} = x\)
例如:\(\{2, 3 | 4, 5\} = \{3 | 4, 5\} = \{2, 3 | 4\} = \{3 | 4\}\)

SN在游戲中的應用

對於一個游戲\(G\),有如下結論:

  • 如果\(G > 0\),那么不論先手還是后手,\(L\)都會獲勝
  • 如果\(G < 0\),那么不論先手還是后手,\(R\)都會獲勝
  • 如果\(G = 0\),那么誰后手誰獲勝

定理:如果\(G = (SN)x, H = (SN)y \Longrightarrow G + H = (SN) x + y\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM