博弈基礎

奇異局勢:是指任何一個人面對這種局勢,最後都會失敗。
非奇異局勢:是指任何一個人面對這種局勢,最後都會成功。
爲了方便理解,我用必敗態和必勝態來代替:
1.對必勝態的正確操作,會使對手面對失敗態;
2.對必敗態的任意操作,都會使對手面對必勝態;
3.不同的必勝態存在一些相同之處(同樣的,不同的失敗態也存在一些共性)。
4.如果有甲乙兩人,如果甲一開始面對的是必勝態,那麼甲在這個過程一直面對的都是必勝態,
下面介紹幾個常見的博弈問題:
一、巴什博弈

巴什博弈的題目一般是有一堆物品共n個,兩個人輪流取物品,每次只能取1~m個。最後取光者勝利。

解題方法:

res=n%(m+1);

若res=0,則先取者必敗,反之,後取者必敗。

當n=m+1時,由於一次最多隻能取m個,所以無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝,所以當一方面對的局勢是n%(m+1)=0時,其面臨的是必敗的局勢。

二、威佐夫博弈

有兩堆各若干個物品,兩個人輪流從任一堆取至少一個或同時從兩堆中取同樣多的物品,規定每次至少取一個,多者不限,最後取光者得勝。

解題方法:

若兩堆物品的初始值爲(x,y),且x<y,則另z=y-x;
記w=(int)[((sqrt(5)+1)/2)*z  ];
若w=x,則先手必敗,否則先手必勝。

(推到過程有點麻煩,只能記住這個模型!)

三、 尼姆博弈 (重點)

尼姆博弈指的是這樣一個博弈遊戲:有任意堆物品,每堆物品的個數是任意的,雙方輪流從中取物品,每一次只能從一堆物品中取部分或全部物品,最少取一件,取到最後一件物品的人獲勝。

解題方法:
 
把每堆物品數全部異或起來,如果得到的值爲0,那麼先手必敗,否則先手必勝

四、Fibonacci博弈

有一堆石子,兩個人輪流從其中取走一定的石子,取走最後所有石子的人爲贏家,不過得遵循如下規則:
1.第一次取不能取完,至少取1顆.
2.從第二次開始,每個人取的石子數至少爲1,至多爲對手剛取的石子數的兩倍。

解題方法:
若石子數是斐波那契數,則先手必敗

注:斐波那契
f[0] = f[1] = 1;
for(int i=2;i<N;i++)
f[i] = f[i-1] + f[i-2];

五、SG值(難點)
參考https://blog.csdn.net/baidu_36394995/article/details/76206979
必須滿足的要求
1、定義:

(1)兩人蔘與。

(2)遊戲局面的狀態集合是有限。

(3)對於同一個局面,兩個遊戲者的可操作集合完全相同

(4)遊戲者輪流進行遊戲。

(5)當無法進行操作時遊戲結束,此時不能進行操作的一方算輸。

(6)無論遊戲如何進行,總可以在有限步數之內結束。

2、模型:給定一個有向無環圖和一個起始頂點上的一枚棋子,兩名選手交替的將這枚棋子沿有向邊進行移動,無法移動者判負。事實上,這個遊戲可以認爲是所有公平組合遊戲(Impartial Combinatori Games)的抽象模型。其實,任何一個ICG都可以通過把每個局勢看成一個頂點,對每個局勢和它的子局勢連一條有向邊來抽象成這個“有向圖遊戲”。

3、解決思路:

現在,假定我們給出兩個遊戲G1 和 G2。如果我們只知道單個遊戲的P-狀態和N-狀態我們能夠正確地玩好遊戲和G1 + G2嗎?答案是否定的。不難看出兩個P-狀態的和總是P-狀態,P-狀態和N-狀態的和總是N-狀態。但是兩個N-狀態的和既可能是P-狀態也可能是N-狀態。因此,只知道單個遊戲的P-狀態和N-狀態是不夠的。

爲了正確地玩好遊戲和我們需要推廣P-狀態和N-狀態,它就是Sprague-Grudy函數(或者簡稱爲g函數)

4、Sprague-Grudy定理:

令N = {0, 1, 2, 3, …} 爲自然數的集合。Sprague-Grundy 函數給遊戲中的每個狀態分配了一個自然數。結點v的Grundy值等於沒有在v的後繼的Grundy值中出現的最小自然數.

形式上:給定一個有限子集 S ⊂ N,令mex S(最小排斥值)爲沒有出現在S中的最小自然數。定義mex(minimal excludant)運算,這是施加於一個集合的運算,表示最小的不屬於這個集合的非負整數。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。

對於一個給定的有向無環圖,定義關於圖的每個頂點的Sprague-Garundy函數g如下:g(x)=mex{ g(y) | y是x的後繼 }。

5、性質:

(1)所有的終結點所對應的頂點,其SG值爲0,因爲它的後繼集合是空集——所有終結點是必敗點(P點)。

(2)對於一個g(x)=0的頂點x,它的所有後繼y都滿足g(y)!=0——無論如何操作,從必敗點(P點)都只能進入必勝點(N點)//對手走完又只能把N留給我們。

(3)對於一個g(x)!=0的頂點,必定存在一個後繼點y滿足g(y)=0——從任何必勝點(N點)操作,至少有一種方法可以進入必敗點(P點)//就是那種我們要走的方法。

6、應用:

(1)可選步數爲1-m的連續整數,直接取模即可,SG(x) = x % (m+1);

(2)可選步數爲任意步,SG(x) = x;

(3)可選步數爲一系列不連續的數,用mex(計算每個節點的值)
在這裏插入圖片描述
圖片參考https://blog.csdn.net/qq_36553623/article/details/67061459

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