【博弈論】

推薦:wutianqi‘s blog

尋找平衡狀態(也稱必敗態,奇異局勢),(滿足:任意非平衡態經過一次操作可以變爲平衡態)

(一)巴什博奕(Bash Game):

只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取p個,最多取q個.最後取光者得勝.

n = (m+1)r+s , (r爲任意自然數,s≤m), 即n%(p+q) != 0, 則先取者肯定獲勝(默認最後一個取的爲win)

可以這樣想:

如果滿足m%(n+1)==0,則先手敗(必敗態),因爲可以這樣分析:每輪後手總可以造出n+1這樣的情況,最後明顯是後手必勝。

但是當m%(n+1)!=0,則先手要不敗就應該取m%(n+1)的餘數,因爲當第一次先手取了這個餘數後,剩下的就變成了後手的必敗態。


(二)威佐夫博奕(Wythoff Game):

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

(ak,bk)(ak ≤ bk,k=0,1,2,...,n)表示奇異局勢

求法:

ak =[k(1+√5)/2], bk= ak + k (k=0,1,2,...,n 方括號表示取整函數)

    判斷:

       Gold=(1+sqrt(5.0))/2.0;

1)假設(a,b)爲第k種奇異局勢(k=0,1,2...) 那麼k=b-a;

2)判斷其a==(int)(k*Gold),相等則爲奇異局勢

(注:採用適當的方法,可以將非奇異局勢變爲奇異局勢.

假設面對的局勢是(a,b)

若b = a,則同時從兩堆中取走 a 個物體,就變爲了奇異局勢(0,0);

1.      如果a = ak,

1.1  b > bk, 那麼,取走b - bk個物體,即變爲奇異局勢(ak, bk);

1.2  b < bk 則同時從兩堆中拿走 ak – a[b – ak]個物體,變爲奇異局勢( a[b – ak] , a[b – ak]+ b - ak);

2         如果a = bk ,

2.1  b > ak ,則從第二堆中拿走多餘的數量b – ak

2.2  b < ak ,則 若b = aj (j < k) 從第一堆中拿走多餘的數量a– bj; (a >bj)

若b= bj (j < k) 從第一堆中拿走多餘的數量a– aj; ( a > aj)

例題:pku 1067

(三)尼姆博奕(Nimm Game):

有n堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取一個,多者不限,最後取光者得勝.

異或爲0,後手勝;異或爲1,先手勝。(不區分是否最後一個取的爲win)

ps:異或:相同爲假,不同爲真。

任何奇異局勢(a,b,c),要如何變爲奇異局勢呢?假設a<b<c,我們只要將c

例題:pku 2234

例題:hdu 1730

例題:pku 1740

例題:pku 1704

例題:pku 1082 (大量分析… 結論很簡單。 也可以根據簡單的推論模擬實現。)

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