三個博弈論演算法分析

2021-07-25 17:36:59 字數 2399 閱讀 1222

主要討論三個比較常見的博弈遊戲

bash game,nim game和wythoff game,較為領人驚嘆的是,他們最後都是通過數論或者自然數性質完美解決:

bash    game:同餘理論

nim      game:異或理論

wythoff game:**分割

(1)bash game:一堆n個物品,兩人輪流取,每次取1至m個,最後取完者勝

比如10個物品,每次只能取1到5個,則先手方必贏

1.面對[1...m]個局面,必勝

2.面對m+1個局面,必輸

3.如果可以使對手面臨必輸局面,那麼是必贏局面

4.如果不能使對手面臨必輸局面,那麼是必輸局面

基礎:1      ,      2, ...,        m是必贏局面,   m+1是必輸局面

遞推:m+2,m+3, ... ,2m+1是必贏局面,2m+2是必輸局面 

...k(m+1)是必輸局面,應該允許k=0,因為0顯然也是必輸局面    

在必輸局和必贏局中,贏的一方的策略是: 拿掉部分物品,使對方面臨k(m+1)的局面 

例如上例中10個物品,只能拿1到5個,先手方拿4個即可,對手無論拿多少個,你下次總能拿完

從另乙個角度思考這個問題,如果物品數量隨機,那麼先手一方勝利的概率是m/(m+1),後手方勝利的概率是1/(m+1)

(2)nim   game: m堆n個物品,兩人輪流取,每次取某堆中不少於1個,最後取完者勝

詳細分析見:poj-2234:matches game

所有物品數目二進位制異或    為0,則先手必輸

所有物品數目二進位制異或不為0,則後手必輸

從另乙個角度思考這個問題,如果物品數量隨機,那麼每個數目的每一位上1或0概率相同,

如果有奇數個堆,那麼1的個數為偶數或者奇數的概率相同,

如果有偶數個堆,那麼1的個數為偶數的概率略大1/(m+1),

也就是說異或結果的每一位為0或1的概率幾乎差不多,而先手必輸要求異或結果每一位都為0,其實輸的概率很小

(3)wythoff game:兩堆(ak,bk)(ak<=bk)個物品,兩人輪流取,每次從一堆中取k個或者從2堆中同時取k個,最後面對(0,0)局面的輸(設ak<=bk是為了忽略順序的影響)

1.面對(0,0)局面必輸

2.面對(1,1)(2,2)...(n,n)局面必贏

(0,1)(0,2)...(0,n)局面必贏

3.如果可以使對手面臨必輸局面,那麼是必贏局面

4.如果不能使對手面臨必輸局面,那麼是必輸局面      

基礎:(0,0)是必輸局面;(0,1)(0 ,2)...(0,n)是必贏局面,

遞推:(1,2)是必輸局面;(1,1)是必贏局面

(1,3)(1 ,4)...(1,n)是必贏局面

(2,2),(2,3)...(2,n)是必贏局面

(3,5)是必輸局面;(3,3)(3,4)是必贏局面

(3,6)(3,7)...(3,n)是必贏局面

(5,5)(5,6)...(5,n)是必贏局面

(4,7)是必輸局面;(4,4)(4,5)(4,6)是必贏局面

(4,8)(4,8)(4,9)...(4,n)是必贏局面

(7,7)(7,8)(7,9)...(7,n)是必贏局面

(6,10)是必輸局面;(6,6)(6,7)(6,8)(6,9)是必贏局面

(6,11)(6,12)(6,13)...(6,n)是必贏局面

(10,10)(10,11)(10,12)...(10,n)是必贏局面

首先發現規律:(必輸局面的規律比較容易找到)

ak是前面必輸局未出現的數中最小者,

bk=ak+k( k=0,1,2,3,...n)

下面介紹必輸局(奇異局)的最重要性質:

1,2,...,n中每乙個自然數,出現且只出現在乙個奇異局中。

推導:1.由於ak總是選擇未出現的數,所以每個數總能出現在奇異局中

且ak不會選擇到重複的數

2.bk=ak+k,所以bk總是比前面所有奇異局出現的數都大,

所以bk不會選擇到重複的數

必贏一方的策略是:始終讓對手面對必輸局(奇異局)

給定任意局勢(a,b),判定(a,b)是否為必輸局的方法是:

k=0,1...n 記**比例是φ=1.618033

ak=[k*φ],bk=ak+k=[k*φ*φ]

如k=0,ak=0,bk=0

k=1,ak=1,bk=2

k=2,ak=3,bk=5     k=3,ak=4,bk=7

更好的一種判斷策略是 k = bk-ak ,如ak=k*φ時,當前局勢為奇異局

從勝負概率角度,如果堆中數量隨機,先手一方優勢很大

(相應經典題目是poj-1067)

三個十分相似的遊戲,但局勢的判斷和必勝策略差異卻很大,但卻又都來自數的性質,這不得不說是一件讓人驚奇的事情。

三個博弈論演算法分析

主要討論三個比較常見的博弈遊戲 bash game,nim game和wythoff game,較為領人驚嘆的是,他們最後都是通過數論或者自然數性質完美解決 bash game 同餘理論 nim game 異或理論 wythoff game 分割 1 bash game 一堆n個物品,兩人輪流取,每...

博弈論演算法

複習 兩個頂尖聰明的人在玩遊戲,有一堆n個石子,每次每個人能取 1,m 個石子,不能拿的人輸,請問先手與後手誰必敗?結論 通過上面的分析可以得出結論 當n能整除m 1時先手必敗,否則先手必勝。兩個頂尖聰明的人在玩遊戲,有nn堆石子,第ii堆有aiai個,每人每次能從一堆石子中取任意多個石子但不能不取...

博弈論 演算法

博弈論主要研究公式化了的激勵結構間的相互作用,是研究具有鬥爭或競爭性質現象的數學理論和方法。博弈論考慮遊戲中的個體的 行為和實際行為,並研究它們的優化策略。如囚徒困境 鏈結 在演算法競賽 現的博弈論題目通常是icg 公平組合遊戲 的,有如下特徵 1.有兩名選手。2.兩名選手交替操作,每次一步,每步都...