博弈論結論

2021-08-21 20:28:29 字數 3616 閱讀 9384

1.巴什博奕

問題模型:只有一堆n個物品,兩個人輪流從這堆物品中取物品,規定每次至少取乙個,最多取m個,最後取光者得勝。)

結論:n%(m+1)==0先手必敗.否則先手必勝

變形:條件不變,改為最後取光的人輸。 結論:(n-1)%(m+1)==0 先手必敗,否則必勝

2. 威佐夫博奕

問題模型:有兩堆各若干個物品,兩個人輪流從某一堆或同時從兩堆中取同樣多的物品,規定每次至少取乙個,多者不限,

最後取光者得勝。

結論: k=(b-a) (a>b) s = (double )( k * ( sqrt(5.0) + 1 ) / 2 ); s==a 先手必敗,否則必勝

3.尼姆博弈

問題模型:有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。

結論: 當石子堆數為n堆時,則推廣為當對每堆的數目進行亦或之後值為零是必敗態。

4.sg函式

對於icg遊戲,我們可以將遊戲中每乙個可能發生的局面表示為乙個點。並且若存在局面i和局面j,且j是i的後繼局面

(即局面i可以轉化為局面j),我們用一條有向邊,從i出發到j,連線表示局面i和局面j的點。則整個遊戲可以表示成為

乙個有向無環圖:

根據icg遊戲的定義我們知道,任意乙個無法繼續進行下去的局面為終結局面,即p局面(先手必敗)。在上圖中我們

可以標記所有出度為0的點為p點。

接著根據icg遊戲的兩條性質,我們可以逆推出所有點為p局面還是n局面:

因此,對於任意乙個icg遊戲,我們可以採取逆推的方法,標記出所有局面是n局面還是p局面。

但僅僅只是標記n、p,所能得到的資訊太少,於是我們定義了sg(sprague-grundy)函式:

對於乙個遊戲可能發生的局面x,我們如下定義它的sg值:

(1)若當前局面x為終結局面,則sg值為0。

(2)若當前局面x非終結局面,其sg值為:sg(x) = mex。

mex表示a中未出現的最小非負整數。舉個例子來說:

mex = 3, mex=0, mex=2

我們將上圖用sg函式表示後,得到:

可以發現,若乙個局面x為p局面,則有sg(x)=0;否則sg(x)>0。同樣sg值也滿足n、p之間的轉換關係:

若乙個局面x,其sg(x)>0,則一定存在乙個後續局面y,sg(y)=0。

若乙個局面x,其sg(x)=0,則x的所有後續局面y,sg(y)>0。

由上面的推論,我們可以知道用n、p-position可以描述的遊戲用sg同樣可以描述。並且在sg函式中

還有乙個非常好用的定理,叫做sg定理:

對於多個單一遊戲,x=x[1..n],每一次我們只能改變其中乙個單一遊戲的局面。則其總局面的sg值

等於這些單一遊戲的sg值異或和。

即:sg(x) = sg(x[1]) xor sg(x[2]) xor … xor sg(x[n])

要證明這一點我們只要證明:

(1) 假設sg(x[1]) xor sg(x[2]) xor … xor sg(x[n]) = a,對於任意乙個0 <= b < a,總存在乙個x的後續局面y,

使得sg(y) = b。

(2) 假設sg(x[1]) xor sg(x[2]) xor … xor sg(x[n]) = a,不存在乙個x的後續局面y,使得sg(y) = a。

下先證明(1):

假設m = a xor 

b,設m表示為二進位制之後最高位的1為第k位。所以a的第k位為1,b的第k位為0。又因為a的第k位為1,

至少存在乙個i,sg(x[i])的第k位也為1。那麼一定有sg(x[i]) xor m < sg(x[i]),即一定通過某個操作使x[i]變為x[i』],

且sg(x[i』]) = sg(x[i]) xor m。那麼:

sg(x[i』]) xor other = sg(x[i]) xor m xor other = m xor a = b

下證明(2):

若sg(x) = a,sg(y) = a。不妨設我們改變的遊戲為x[i],則x=x[1..n], y=x[1…i』…n]。有sg(x[i]) = sg(x[i』]),

產生矛盾,所以sg(y)不可能等於a。

5.階梯博弈

博弈在一列階梯上進行...每個階梯上放著自然數個點..兩個人進行階梯博弈...每一步則是將乙個集體上的

若干個點( >=1 )移到前面去..最後沒有點可以移動的人輸..

階梯博弈也是可以轉化成尼姆博弈的.

把所有奇數階梯看成n堆石子..做nim..把石子從奇數堆移動到偶數堆可以理解為拿走石子..就相當於幾個

奇數堆的石子在做nim..

6.chomp!博弈(巧克力遊戲)

有乙個n*m的棋盤,每次可以取走乙個方格並拿掉它右邊和上面的所有方格。拿到左下角的格仔(1,1)者輸,如下圖是8*3的

棋盤中拿掉(6,2)和(2,3)後的狀態。

結論:答案是除了1*1的棋盤,對於其他大小的棋盤,先手總能贏。

分析:有乙個很巧妙的證明可以保證先手存在必勝策略,可惜這個證明不是構造性的,也就是說沒有給出先手怎麼下才能贏。

證明如下:

如果後手能贏,也就是說後手有必勝策略,使得無論先手第一次取哪個石子,後手都能獲得最後的勝利。那麼現在假設先手

最右上角的石子(n,m),接下來後手通過某種取法使得自己進入必勝的局面。但事實上,先手在第一次取的時候就可以和

後手這次取的一樣,進入必勝局面了,與假設矛盾。

巧克力遊戲的變形:

約數遊戲:有1~n個數字,兩個人輪流選擇乙個數字,並把它和它的約數擦去。擦去最後乙個數的人贏,問誰會獲勝。

分析:類似巧克力遊戲,得到結論就是無論n是幾,都是先手必勝。

翻棋子遊戲:

題意:乙個棋盤上每個格仔有乙個棋子,每次操作可以隨便選乙個朝上的棋子(x,y),代表第i行第j列的棋子,選擇乙個形

如(x,b)或(a,y)(其中b < y,a < x)的棋子,然後把它和(x,y)一起翻轉,無法操作的人輸。

分析:把座標為(x,y)的棋子看成大小分別為x和y的兩堆石子,則本題轉化為了經典的nim遊戲,如果難以把棋子看作石

子,可以先把nim遊戲中的一堆石子看成乙個正整數,則nim遊戲中的每次操作是把其中乙個正整數減小或者刪除。

博弈論的一些結論

感謝 自從昨天考了博弈論的一道程式填空題,博弈論的陰雲便一直在我的心上徘徊,今天把這個坑填一下。一.巴什博弈 bash game a和b一塊報數,每人每次最少報乙個,最多報四個,看誰先報到三十.這應該是最古老的關於巴什博弈的遊戲了吧。其實如果知道原理,這遊戲一點運氣成分都沒有,只和先後手有關,比如第...

博弈論 Nim博弈

1.nim博弈的起源很早,至於歷史我們就不再說了,直接說它的使用場景。1 依舊是兩個人博弈,但是物品時n堆,每一堆有ai個。2 每個人可以挑選一堆取走若干個,但是不能不取。3 最先取完所有物品的人獲勝。4 結論 所以堆的物品的數量異或起來是0,先手必敗。2.乙個nim博弈的例項 nim博弈。乍一看這...

博弈論 博弈混合

給你乙個n m的棋盤,然後給你4種棋子,分別是 1.王 能橫著走,或者豎著走,或者斜著走,每次可以走1格 2.車 可以橫著走或者豎著走,每次可以走無數格 3.馬 走日字形,例如 如果現在在 1,1 可以走到 2,3 即先走一格直線,然後斜著走一格 4.王后 可以橫著走,或者豎著走,或者斜著走,每次可...