目錄:
一、巴什博弈(bash game)
二、尼姆博弈(nimm game)
三、威佐夫博奕(wythoff game)
四.斐波那契博弈
五.環形博弈
情形:有n個石子,每個人最少拿a個石子,最多拿b個石子,問先手贏還是後手贏.
分析:當n = a + b時,先手必輸. 推廣而來,n = k*(a + b)時,先手必輸.其他情況先手必贏.
證明:很簡單,略了
結論:當n%(a+b) == 0 時,先手必輸,否則,先手必贏
情形:有3堆任意多的物品(x, y, z)。兩個人輪流拿,每次只能從一堆中拿,至少拿乙個,至多不限。拿到最後者勝利。
簡要分析:
當(0,0,0)時,先手必輸
當(0,a,a)時,先手必輸,因為無論先手在一堆中拿多少個,後手總能拿同樣多個,到最後還是後手拿完.
當(0,a,b)時,先手必贏,因為先手可以拿成(0,a,a),變後手必輸。
擴充套件情形:n堆 結論:a1^a2^...^an = 0為先手必敗.
①我們知道0^0^0 = 0 是必敗態。那麼我們來證明 a1^a2^...^an = 0 且 ai不全等於0 的條件下,先手無法一步致勝.
要證明先手無法一步致勝,那就需要證明:無論如何拿,拿完後的局面:a1^a2^...^an != 0;
證明這一點:我們只能在某一堆裡拿去不少於乙個石子,那麼只能有乙個數變化了。
設我們拿的這一堆為ak,那麼根據異或的自反性,ak = a1^a2^...^an (右式中不含ak)
顯然當ak減小了以後,上式子不成立。利用反證法:
設ak = a1^a2^...^an 且 ak - d = a1^a2^...^an (0 < d <= ak)那麼 兩式相減得d = 0,與前提相悖,所以ak - d != a1^a2^...^an ,即
a1^a2^..^(ak - d)^.^an != 0 , 即無論如何拿,拿完後的局面:a1^a2^...^an != 0; 即先手無法一步致勝,得證.
②接下來再證明乙個東西:a1^a2^...^an != 0時,先手一定有一種合法的方案使得拿完後的局面為a1^a2^...^an = 0.
證明:設a1^a2^...^an = k. 設k二進位制中最左邊(即最高位)的1為第g位。
那麼a中一定存在ai,它的第g位為1(若不存在,那麼第g位上a為全0)。那麼得出ai^k < ai.(我們知道,k的更高位都為0了,那麼ai^k後第g位一定從1變成0,不管最低位如何變化,ai^k的值一定是減小的).
所以得證.
綜合上面的證明我們可以得出一點,當且僅當先手面對a1^a2^...^an != 0的局面時才有可能贏,即,a1^a2^...^an = 0時先手必輸,a1^a2^...^an != 0時 先手必贏.(我們的方法是證明a1^a2^...^an = 0 不可能一步贏,且a1^a2^...^an != 0時可以以合法的手段轉換成a1^a2^...^an = 0.而且總體的石子數是下降的.所以顯然最終肯定是面對a1^a2^...^an != 0局面的人贏)
情形:有兩堆石子,兩個頂尖聰明的人在玩遊戲,每次每個人可以從任意一堆石子中取任意多的石子或者從兩堆石子中取同樣多的石子,誰先無法繼續取誰就輸了
前幾個必輸狀態:
(0,0),(1,2),(3,5),(4,7),(6,10)…
性質1:假設(x,y)且 x < y,為第k個必輸狀態,x為前1~k-1必輸狀態中沒出現過的最小自然數.那麼y = x + k;
性質2:任何乙個自熱數都包含在乙個且僅乙個必輸狀態中.
結論:必輸狀態一定符合等式:(y - x)*(sqrt(5.0) + 1) / 2 = x;
情形:有一堆石子,兩個頂尖聰明的人玩遊戲,先取者可以取走任意多個,但不能全取完,以後每人取的石子數不能超過上個人的兩倍
結論:先手必敗,當且僅當石子數為斐波那契數
情形:n個石子圍成乙個環,每次取乙個或者取相鄰的2個(每個石子有序號)
結論:石子數<=2先手贏,否則後手贏
幾種常見的博弈模型
首先考慮乙個簡單的例子 a和b一起報數,每個人每次最少報乙個,最多報4個。輪流報數,看誰先報到30.因為最多可以報4,最少報1,如果對方開始報,那麼我開始總是可以報5的。依次類推,我都可以想法兒報5的倍數。所以,結論就是,先手必輸。可以將例子抽象一下 如果最多可以報n,最少可以報m個,看誰先報到a ...
數學 博弈模型
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 堆...
常見組合博弈遊戲
這兩天認識了幾個組合遊戲的基礎模型,希望自己能更新下去。有兩個盒子,乙個裝有 m 顆糖,乙個裝有 n 顆糖,表示為 m,n 每次清空乙個盒子,將另乙個盒子裡的糖轉移一些過來,並保證兩個盒子至少各有一顆糖。最後進行轉移糖者勝,無法轉移糖者敗。m,n 都為奇數,先手敗 m,n 至少乙個為偶數,先手勝。顯...