尋找平衡狀態(也稱必敗態,
奇異局勢),(滿足:任意非平衡態經過一次操作可以變為平衡態) (
一)巴什博奕
(bash game):
只有一堆
n個物品
,兩個人輪流從這堆物品中取物
,規定每次至少取乙個
,最多取m個
.最後取光者得勝.
n = (m+1)r+s , (r為任意自然數,s≤m), 即n%(m+1) != 0, 則先取者肯定獲勝(二
)威佐夫博奕
(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堆各若干個物品
,兩個人輪流從某一堆取任意多的物品
,規定每次至少取乙個
,多者不限
,最後取光者得勝.
任何奇異局勢(a1, a2, … , an)都有a1(+)a2(+)…(+)an =0. ( (+)為 按位與)
例題:pku 2234
例題:hdu 1730
例題:pku 1740
例題:pku 1704
例題:pku 1082 (
大量分析
… 結論很簡單。
也可以根據簡單的推論模擬實現。
)
leetcode演算法題 除數博弈
1 動態規劃 dp i 表示n i時,alice先手的勝負狀態轉移 狀態轉移中,dp i 表示alice先手的輸贏,dp i j 則表示alice先手拿走j之後的輸贏,也是bob此時先手的輸贏 dp i true if dp i j false bool divisorgame int n retu...
博弈基礎小結
巴什博弈 一堆n個物品,兩個人輪流取1 m個,最後乙個取光的人勝利 if n m 1 return false else return true wythoff博弈 兩堆各若干個物品,兩人輪流從一堆中取走至少乙個,或者從兩堆中取走相同數量的物品,最後乙個取光的人勝利 差值 分割比 最小值時後手贏,否...
小結 基礎博弈
小結一下基礎博弈,因為暫時對博弈的理解還不是很深,只能說一下我對這段時間對博弈的認識。博弈論的簡介 博弈論是二人或多人在平等的對局中各自利用對方的策略變換自己的對抗策略,達到取勝目標的理論。博弈論是研究互動決策的理論。博弈可以分析自己與對手的利弊關係,從而確立自己在博弈中的優勢,因此有不少博弈理論,...