幾種常見的博弈模型

2021-07-16 05:26:37 字數 875 閱讀 3081

首先考慮乙個簡單的例子:

>a和b一起報數,每個人每次最少報乙個,最多報4個。輪流報數,看誰先報到30.
因為最多可以報4,最少報1,如果對方開始報,那麼我開始總是可以報5的。依次類推,我都可以想法兒報5的倍數。所以,結論就是,先手必輸。

可以將例子抽象一下:

如果最多可以報n,最少可以報m個,看誰先報到a;

判斷a%(m+n)是否大於n即可。如果大於後手勝,否則先手勝。

原先在東師的校賽上,見過類似的一道題。當時,還不知道這個模型。自己也沒搞出來。唉!智商壓制呀!

這個模型就比上乙個難了一點。

適用的遊戲情況

首先有兩堆石子,博弈雙方每次可以取一堆石子中的任意個,不能不取,或者取兩堆石子中的相同個。先取完者贏。

我們首先用乙個二維陣列來記錄兩堆石子的剩下的數量。

如果乙個人遇到了(0,0)這個狀態,那麼他已經輸了。我們把這種狀態叫做失敗態,也叫奇異狀態。

那麼向前推一下,接下來的失敗態為(1, 2),(3, 5),(4, 7),(6, 10),……

如果我們將失敗態中的第乙個數字和第二個數字分別儲存在a,b兩個陣列裡,那麼可以得到的規律為:

由以上規律可以算出(反正我是不會了,上結論吧):

a[i] = [i*(1+√5)/2] 或者 a[i] = [i * 0.618]; (這裡的中括號表示向下取整)

所以只要判斷一下初始堆的情況是否是失敗態。失敗態先手必敗,否則後手必敗。

這就是比較著名的nim遊戲了,和sg函式有很大的關係哦。

這裡就不再贅述了,詳見我其他的博文。

常見博弈模型

目錄 一 巴什博弈 bash game 二 尼姆博弈 nimm game 三 威佐夫博奕 wythoff game 四.斐波那契博弈 五.環形博弈 情形 有n個石子,每個人最少拿a個石子,最多拿b個石子,問先手贏還是後手贏.分析 當n a b時,先手必輸.推廣而來,n k a b 時,先手必輸.其他...

常見的幾種開發模型比較

適合專案 需求相對穩定,公司有類似的產品 優點 1 強調開發的階段性 2 強調早期計畫及需求調查 3 強調產品測試。缺點 1 依賴於早期進行的唯一一次需求調查,不能適應需求變化 2 發現缺陷比較晚,修復成本高 3 測試環節比較後,認為測試不重要 4 研發中的經驗,不能及時分享到其它專案 適合的專案 ...

數學 博弈模型

sg函式 const int maxn 600000 int n int sg maxn int sg int x 這裡寫遞迴到後繼狀態 for int i 2 i x i int res 1 for int i 0 i 32 i assert res 0 return sg x res 有 n 堆...