簡單易懂的博弈論講解(巴什博弈、尼姆博弈、威佐夫博弈、斐波那契博弈、SG定理)


博弈論入門:

巴什博弈:

兩個頂尖聰明的人在玩游戲,有一堆$n$個石子,每次每個人能取$[1,m]$個石子,不能拿的人輸,請問先手與后手誰必敗?

我們分類討論一下這個問題:

當$n\le m$時,這時先手的人可以一次取走所有的;

當$n=m+1$時,這時先手無論取走多少個,后手的人都能取走剩下所有的;

當$n=k*(m+1)$時,對於每$m+1$個石子,先手取$i$個,后手一定能將剩下的$(m+1-i)$個都取走,因此后手必勝;

當$n=k*(m+1)+x(0<x<m+1)$時,先手可以先取$x$個,之后的局勢就回到了上一種情況,無論后手取多少個,先手都能取走$m+1$個中剩下的,因此先手必勝。

結論:

通過上面的分析可以得出結論:當$n$能整除$m+1$時先手必敗,否則先手必勝。

尼姆博弈(Nim):

兩個頂尖聰明的人在玩游戲,有$n$堆石子,第$i$堆有$a_{i}$個,每人每次能從一堆石子中取任意多個石子但不能不取,不能拿的人輸,請問先手與后手誰必勝?

我們從簡單的情況入手:

當$n=1$時,顯然先手取走這一堆就能獲勝;

當$n=2$且$a_{1}!=a_{2}$時,我們假設$a_{1}>a_{2}$,先手可以先在第一堆取走$a_{1}-a_{2}$個,下一次無論后手取走多少個,先手都可以在另一堆取走同樣多個,因此先手必勝;

當$n=2$且$a_{1}==a_{2}$時,先手無論取走多少個,后手都能在另一堆取走同樣多個,因此后手必勝。

當$3\le n$時呢?

問題變得繁瑣起來,這時就要一個有規律性的結論。

結論:

當$a_{1}$^$a_{2}$^$……$^$a_{n}=0$時先手必敗,反之先手必勝。

為什么這個結論是對的?

假設當前異或和為$0$,這時先手在某一堆取走了若干個,局勢變成了$a_{1}$^$a_{2}$^$……$^$a_{i}'$^$……$^$a_{n}=k$,也就是$a_{1}$^$a_{2}$^$……$^$a_{i}'$^$……$^$a{n}$^$k=0$。

假設$k$的最高位$1$在第$x$位,那么一定有一個數$a_{j}$使得$a_{j}$的第$x$位為$1$。

那么我們只要能將$a_{j}$變成$a_{j}$^$k$,就能使異或和又等於$0$,后手一直這樣取,最后$a_{1}=a_{2}=……=a_{n}=0$時,異或和是$0$,這時先手無法取了,先手就一定必敗了。

那么能否每次都將$a_{j}$變成$a_{j}$^$k$呢?

答案是可以的,因為aj比k多出的高位異或后不變,第$x$位異或后為$0$,無論低位是什么,在第$x$位變$0$后整個數都會變小。

也就是說$a_{j}$^$k$一定小於$a_{j}$,那么后手每次只要在第$j$堆取走$a_{j}-(a_{j}$^$k)$個石子就好了。

EX:nimk游戲

如果將游戲改成每人每次可以從$[1,d]$堆中各取任意多個石子呢?

這個游戲實際是$nim$游戲的擴展版,也有一個很好的結論:將每堆石子數用二進制表示,對於二進制的任意一位,如果這一位為$1$的石子堆數$\%(d+1)$都得$0$,那么先手必敗,否則先手必勝。

證明的話與$nim$游戲類似,我們只需要證明三點:

1、終止局面為先手必敗(顯然)

2、任意先手必勝的局面都能傳變成先手必敗的局面。

3、任意先手必敗的局面都不能轉變為先手必勝的局面。

先來證明第$2$個:假設最高一位$\%(d+1)$不得$0$的位有$m$個$1$,那么將這些堆的這一位變成$0$;假設下一個$\%(d+1)$不得$0$的位有$n$個,之前那$m$堆中這一位有$a$個$1$和$b$個$0$。如果$n\le a$,顯然將這$a$個中$n$個變成$0$即可;如果$(d+1)-n\le b$,那么只要將$b$個中的$(d+1)-n$個變成$1$即可,因為之前最高位是將$1$變$0$,所以這一位即使由$0$變$1$,這堆石子數也是減少的;如果這兩個都不滿足,那么$a<n\&\&b<(d+1)-n$,這時只要將這$a$堆和這$m$堆之外的$n-a$堆的這一位$1$變成$0$,那么總改變堆數為$a+b+(n-a)=b+n<(d+1)-n+n=d+1$,也就是說將這一位變為$\%(d+1)=0$需要改變的總堆數要小於$(d+1)$,即可以一次操作完成,然后以此類推就能使每一位都變為$\%(d+1)=0$。

再證明第$3$個:因為一次最多操作$d$堆石子,因此不能將$(d+1)$堆某一位是$1$的石子堆的這一位都變為$0$。

 威佐夫博弈:

兩個頂尖聰明的人在玩游戲,有2堆石子,每人每次可以拿走任意一堆中任意數量的石子或在兩堆石子中拿走相同數量的石子,不能拿的人輸,請問先手與后手誰必勝?

威佐夫博弈不同於尼姆博弈和巴什博弈,它不能將兩堆石子分開來分析,但它也有一個規律性的結論。

我們定義先手必敗的局勢為奇異局勢,那么前幾個奇異局勢分別為:

$(0,0),(1,2),(3,5),(4,7),(6,10)……$

那么奇異局勢有什么性質呢?

對於第$k$個($k$從$0$開始)奇異局勢$(x,y)$,$x$為前$0\sim k-1$個奇異局勢中沒有出現過的最小自然數,$y=x+k$。

我們將這些奇異局勢在平面直角坐標系上畫出來:

 我們可以將兩堆石子看成是棋盤上一個點的橫縱坐標,那么游戲就變成了:棋盤上有一個點,每次每人只能將棋子往左或往下移動任意個格子或往左下移動任意個格子,不能移動的人輸。終止節點顯然是$(0,0)$,我們將能一步到達$(0,0)$的點都染色,那么這些點就都是必勝態,再找到橫縱坐標之和最小的沒被染色的點,這個點就是下一個必敗態,由此就能畫出上圖。

可以看出任意一個自然數包含在一個且僅有一個奇異局勢中(默認$x<y$)。

那么怎么求一個局勢是否為奇異局勢呢?

根據Betty定理,第$k$個奇異局勢就是$\left (\left \lfloor \frac{1+\sqrt{5}}{2}k \right \rfloor,\left \lfloor \frac{3+\sqrt{5}}{2}k \right \rfloor  \right )$,因為$k=y-x$,只要將$k$帶入后判斷求得的$x,y$是否是輸入的$x,y$即可。

EX:擴展威佐夫博弈

按照上面在棋盤上移動棋子的方式,每次向左下移動可以看作是向左移動$dx$,向下移動$dy$,要求$|dx-dy|<1$。那么如果將這個要求擴展到$|dx-dy|<d$呢?我們同樣可以得出第$k$個奇異局勢$(x,y)$,$x$為前$0\sim k-1$個奇異局勢中沒有出現過的最小自然數,$y=x+d*k$。根據$Betty$定理同樣能得出第$k$個奇異局勢為$\left ( \left \lfloor \frac{2-d+\sqrt{d^2+4}}{2} k \right \rfloor,\left \lfloor \frac{2+d+\sqrt{d^2+4}}{2}k \right \rfloor \right )$。

斐波那契博弈:

兩個頂尖聰明的人在玩游戲,有一堆石子,先手第一次可以拿任意多個但不能全拿走也不能不拿,之后每個人最少拿一個,最多拿前一個人兩倍那么多個,誰取到最后一個誰就能獲勝,請問先手后手誰必勝?

看到博弈的名字大概就已經能猜到結論是什么了吧?

沒錯,結論就是當石子數為斐波那契數時先手必敗,反之先手必勝。

證明:

我們可以用數學歸納法來證明。

設石子數n為$f[i]$(斐波那契數列第i項)

當$i=2$時,$n=2$,顯然先手只能取一個,后手必勝。

當$i>2$時,假設我們已經證明$n=f[i-1]$時的結論是成立的,那么$f[i]=f[i-1]+f[i-2]$。

我們將這一堆石子分成$f[i-1]$和$f[i-2]$兩部分來看。

假設先手第一次取$x$個,后手第一次取$y$個。

如果$x<\frac{f[i-2]}{3}$,因為$n=f[i-2]$時已經證明后手一定能取到$f[i-2]$個中的最后一個,所以問題轉化成了有$f[i-1]$個石子,誰能取到最后一個,這個也已經證明后手必勝,所以當$x<\frac{f[i-2]}{3}$時,后手必勝。

如果$x>=\frac{f[i-2]}{3}$且$x\le f[i-1]$,則這$f[i-2]$個中剩余的小於$2x$個,后手可以直接取完,那么后手取了$f[i-2]-x$個,即$y\le\frac{2f[i-2]}{3}$。我們比較一下$\frac{2f[i-2]}{3}$與$\frac{f[i-1]}{2}$的大小即比較$4*f[i-2]$與$3*f[i-1]$的大小。因為$3*f[i-3]>2*f[i-3]>f[i-2]$,所以$3*f[i-3]+3*f[i-2]>4*f[i-2]$即$3*f[i-1]>4*f[i-2]$,也就是說在后手取完$f[i-2]$那一堆石子后,先手不能取完剩下的$f[i-1]$個石子,問題就有變成了有$f[i-1]$個石子時的情況。

如果$x>f[i-2]$,因為$f[i-1]<2*f[i-2]$,所以后手能取走剩下所有的。

綜上三種情況可以推知,當$n=f[i-1]$時結論成立,那么$n=f[i]$時結論必然成立。

階梯博弈:

階梯博弈並不是一種具體的博弈問題,而是一類博弈問題的變形。

就拿階梯尼姆博弈舉例:

兩個絕頂聰明的人在玩游戲,有$n$堆石子,每次每人可以取走第$i$堆($i>1$)任意數量的石子並將它們放到第$i-1$堆,或者直接取走第一堆的任意數量石子,不能操作的人輸,請問先手能否必勝?

對於這一類問題我們將堆的編號分奇偶考慮,如果只有奇數編號那些堆石子,這就是一個尼姆博弈。現在加入了偶數編號的堆,同樣不影響答案,因為如果有人將偶數編號第i堆的石子移到第$i-1$堆,那么另一個人可以將上一個人操作的那些石子從第$i-1$堆再移到第$i-2$堆,這樣奇數編號堆的局勢沒變,兩人的先后手關系也沒變,相當於將偶數堆編號的石子往前移了兩次。而移動奇數堆到偶數堆就相當於拿走了石子。

那么為什么選擇將奇數堆看做尼姆博弈而不是偶數堆呢?

因為雖然偶數堆做尼姆博弈也是相當於拿走石子,但最后石子會堆在第一堆,我們無法判斷哪個人會在什么時候清空第一堆的石子。

組合游戲:

講了這么久,我們所說的博弈問題到底是什么樣的?我們要研究的又是什么樣的問題呢?

我們研究的是一類游戲,叫平等組合游戲($ICG$)

那么什么樣的游戲可以被稱為$ICG$呢?

1、兩個人進行博弈

2、兩人輪流進行決策且做出的決策都對自己有利

3、游戲中同一個局勢不能多次到達且游戲不能有平局

4、當有人無法做出決策時游戲結束,無法做出決策的人輸

5、游戲可以在優先步數內結束

6、任意游戲者在某一局勢時能做出決策的集合只與當前局勢有關,與游戲者本身無關

必勝態與必敗態:

定義$P-position$與$N-position$

$P-position$:必敗態(簡稱$P$),即在決策前就處於這種狀態的人必敗

$N-position$:必勝態(簡稱$N$),即在決策前就處於這種狀態的人必勝

如果更嚴謹的定義$P$與$N$,則:

1、無法移動的狀態為$P$

2、可以移動到$P$的狀態為$N$

3、任意移動都會到$N$的狀態為$P$

 組合游戲的DAG圖:

如果我們將每一種狀態向它能到達的狀態連邊,那么一個組合游戲的所有狀態就能組成一個$DAG$(有向無環圖)。

給出一張DAG,在給定起點處有一枚棋子,兩人輪流移動棋子,如果誰不能移動了就判輸。

事實上,所有的$ICG$問題都可以抽象成上述的這個游戲。

SG函數及SG定理

$SG$函數是人們在研究博弈問題上邁出的一大步,人們不再一味的通過找規律來得到博弈結論,而是將博弈問題的每一個狀態進行量化分析並總結出了某些普遍性的規律。

首先定義$mex$運算,表示集合中最小的沒出現過的自然數,例如:$mex\{1,2,3\}=0$,$mex\{0,2,3\}=1$,$mex\{0,1,2\}=3$

$SG$函數描述的是博弈中某個狀態量化后的值,$SG(x)=mex\{SG(y)|x\ can\ go\ to\ y\}$

我們來分析一下$SG$函數的性質:

1、終止狀態$SG$值為$0$,因為它沒有出邊(即可到達的狀態)

2、$SG$值為$0$的狀態為必敗態,它的后繼狀態$SG$值都不為$0$,滿足必敗態定義

3、SG值不為$0$的狀態為必勝態,它的后繼狀態$SG$值有為$0$的狀態,滿足必勝態定義

由此我們知道了對於尼姆博弈每一堆石子的$SG$值就是這堆的石子數,而尼姆博弈的判斷方式是每堆石子數的異或和是否為$0$,也就是每堆石子$SG$值的異或和是否為$0$。那么其他組合游戲是否也能同這個結論來判斷呢?答案是可以的,這就是$SG$定理。

SG定理:游戲的和為每個單一游戲SG值的異或和。

單一游戲就是原游戲的子游戲,例如尼姆博弈中的一堆石子。

那么一個局面為先手必敗當且僅當該局面的$SG$值為$0$。同樣如果游戲的和為$0$,那么先手必敗。

這個證明和尼姆博弈的證明類似:

所有終止狀態的$SG$值都是$0$,每次如果先手使本來$SG$值異或和為$0$的局面異或和改變為$k$,那么后手就一定能找到一個單一游戲使它的$SG$值從$SG(x)$變成$SG(x)$^$k$。因為$SG(x)$^$k<SG(x)$,而$x$的后繼狀態一定有一個狀態的$SG$值為比它小的$SG(x)$^$k$。

那么$SG$函數怎么求?

按照定義,依次枚舉每種狀態並枚舉每種狀態能到達的狀態,找到每個狀態后繼狀態$SG$值中沒有出現的最小自然數就是它的$SG$值。

anti-SG與SJ定理

$anti-SG$組合游戲的其他規則與$SG$組合游戲規則相同,但它規定決策集合為空者獲勝。

我們先來看看anti-尼姆博弈:

兩個頂尖聰明的人在玩游戲,有$n$堆石子,第$i$堆有$a_{i}$個,每人每次能從一堆石子中取任意多個石子但不能不取,取到最后一個的人輸,請問先手與后手誰必勝?

經過分析,我們發現先手必勝有兩種情況:

1、每堆石子數異或和不為$0$且至少有一堆石子數大於$1$

2、每堆石子數異或和為$0$且每堆石子只有$1$個

對於第二種情況顯然是對的,但第一種為什么就能先手必勝呢?

我們先除去偶數堆石子數為$1$的石子堆(因為這些一定是輪番取完且不改變先后手關系),先手只要第一次取石子使剩下石子堆異或和為$0$,之后每次只要后手改變異或值就將異或值再取為$0$,到最后一定會剩下兩堆同樣多數目且數目都大於$1$的石子,假設每一堆剩下$1+x$個石子($x>0$),這時后手先取:

如果后手將一堆全取走,那么先手將另一堆取$x$個即可,這時只剩下$1$個;

如果后手使一堆剩下$1$個,那么先手將另一堆全取走即可,這時只剩下$1$個;

如果后手使一堆剩下大於$1$個,那么先手在另一堆取同樣多個,局勢又變成了剩下兩堆$1+x$個石子的情況。

那么能否將anti-尼姆博弈也推廣成$anti-SG$組合游戲呢?

當然是可以的,這就是$SJ$定理:

對於anti-SG游戲,先手必勝當且僅當:

1、游戲的和不為0且至少有一個單一游戲的SG函數大於1

2、游戲的和為0且所有單一游戲的SG函數不大於1

證明和上面$anti-Nim$的證明相同,只不過對於第二種情況一個$SG$函數為$1$的局勢可以變成$SG$函數大於$1$的局勢,只要將這種情況轉為第一種情況就好了。

multi-SG

$multi-SG$游戲的規則與$SG$游戲相同但多出一個可以將單一游戲分成多個單一游戲的操作。對於分裂單一游戲的操作,分裂后的狀態的$SG$值可以看做是分裂出的單一游戲$SG$值的異或和。

我們來看一下$multi-Nim$游戲:

有$n$堆石子,兩個人可以從任意一堆石子中拿任意多個石子(不能不拿)或把一堆數量不少於2的石子分為兩堆不為空的石子。

規定沒法拿的人失敗,問誰會勝利?

我們手動求一下前幾個狀態的$SG$值:

$sg(1)=mex\{sg(0)\}$

$sg(2)=mex\{sg(0),sg(1)\}=2$

$sg(3)=mex\{sg(0),sg(1),sg(2),sg(1,2)\}=4$

$sg(4)=mex\{sg(0),sg(1),sg(2),sg(1,3),sg(2,2),sg(3)\}=3$

如果繼續推下去可以發現一個結論:

every-SG

$every-SG$游戲規定對於任意未結束的單一游戲,游戲者必須對它進行決策,游戲結束時間決定於最后一個結束的單一游戲,勝負則取決於最后一個結束的單一游戲的輸贏。

對於每一步決策,因為一直$SG$值為$0$時必敗,$SG$值不為$0$時必勝,所以我們一定希望$SG$為$0$的局勢盡快結束,$SG$不為$0$的局勢盡量慢點結束。

所以需要知道$SG$值為$0$的局勢最少多少步結束,$SG$值不為$0$的局勢最多多少步結束。

我們用$step$函數來記錄這個值:

對於every-SG游戲先手必勝當且僅當單一游戲step最大的一個為奇數。


免責聲明!

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



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