**:
威佐夫博弈是博弈中的另乙個經典模型。
問題:首先有兩堆石子,博弈雙方每次可以取一堆石子中的任意個,不能不取,或者取兩堆石子中的相同個。先取完者贏。
分析:首先我們根據條件來分析博弈中的奇異局勢
第乙個(0 , 0),先手輸,當遊戲某一方面對( 0 , 0)時,他沒有辦法取了,那麼肯定是先手在上一局取完了,那麼輸。
第二個 ( 1 , 2 ),先手輸,先手只有四種取法,
1)取 1 中的乙個,那麼後手取第二堆中兩個。
2)取 2 中乙個,那麼後手在兩堆中各取乙個。
3)在 2 中取兩個,那麼後手在第一堆中取乙個。
4)兩堆中各取乙個,那麼後手在第二堆中取乙個。
可以看出,不論先手怎麼取,後說總是能贏。所以先手必輸!
第三個 ( 3 , 5 ),先手必輸。首先先手必定不能把任意一堆取完,如果取完了很明顯後手取完另一堆先手必輸,那麼
假如看取一堆的情況,假設先手先在第一堆中取。 取 1 個,後手第二堆中取4個,變成(1 ,2)了,上面分析了是先手的必輸局。
取 2 個,後手第二堆中取3個,也變成( 1 , 2)局面了。
假設先手在第二堆中取,取 1 個,那麼後手在兩堆中各取 2 個,也變成 ( 1 , 2 )局面了。
取 2 個 ,那麼後手可以兩堆中都去三個, 變成 ( 0 , 0)局面,上面分析其必輸。
取 3 個,後手兩堆各取 1 個 ,變成( 1 , 2)局面了。
取 4 個,後手在第一堆中取乙個,變成( 1 , 2)局面了。
可見不論先手怎麼取,其必輸!
第四個(4 , 7),先手必輸。
自己推理可以發現不論第一次先手如何取,那麼後手總是會變成前面分析過的先手的必輸局面。
那麼到底有什麼規律沒有呢,我們繼續往下寫。
第四個 ( 6 ,10 )
第五個 ( 8 ,13)
第六個 ( 9 , 15)
第七個 ( 11 ,18)
會發現他們的差值是遞增的,為 0 , 1 , 2, 3, 4 , 5 , 6, 7…..n
而用數學方法分析發現局面中第乙個值為前面局面中沒有出現過的第乙個值,比如第三個局面,前面出現了 0 1 2,那麼第三個局面的第乙個值為 3 ,比如第五個局面,前
面出現了 0 1 2 3 4 5 ,那麼第五個局面第乙個值為6。
再找規律的話我們會發現,第乙個值 = 差值 * 1.618
而1.618 = (sqrt(5)+ 1) / 2 。
大家都知道0.618是**分割率。而威佐夫博弈正好是1.618,這就是博弈的奇妙之處!
下面來看看威佐夫博弈常見的三類問題:
1)給你乙個局面,讓你求是先手輸贏。
有了上面的分析,那麼這個問題應該不難解決。首先求出差值,差值 * 1.618 == 最小值 的話後手贏,否則先手贏。(注意這裡的1.618最好是用上面式子計算出來的,否則精
度要求高的題目會錯)
hdu1527
#include
#include
#include
#include
using
namespace
std;
int main()
return
0;}
2)給你乙個局面,讓你求先手輸贏,假設先手贏的話輸出他第一次的取法。
首先討論在兩邊同時取的情況,很明顯兩邊同時取的話,不論怎樣取他的差值是不會變的,那麼我們可以根據差值計算出其中的小的值,然後加上差值就是大的乙個值,當
然能取的條件是求出的最小的值不能大於其中小的一堆的石子數目。
加入在一堆中取的話,可以取任意一堆,那麼其差值也是不定的,但是我們可以列舉差值,差值範圍是0 — 大的石子數目,然後根據上面的理論判斷滿足條件的話就是一種合理的取法。
威佐夫博奕
威佐夫博奕 模型 有兩堆石子,石子數目分別為n和m,現在兩個人輪流從兩堆石子中取石子,每人每次取石子時可以從一堆石子中拿走若干個,也可以從兩堆中取相同數量的石子,取完最後一堆石子的人贏。這種情況有些複雜,先用 m,n 表示兩堆石子的數目,並稱其為局勢,如果兩人中某人面對 0,0 的局勢,則他已經輸了...
威佐夫博奕
取石子遊戲 有兩堆石子,雙方輪流取走一些石子,合法的取法有如下兩種 1 在一堆石子中取走任意多顆 2 在兩堆石子中取走相同多的任意顆 約定取走最後一顆石子的人為贏家,求必勝策略。滿足下列公式的為必敗情況 k 第k中必敗情況。至於為什麼有這個 分割數 1 sqrt 5 2 這裡 m k k 1 sqr...
威佐夫博奕
接上次的巴什博奕之後,我在說說威佐夫博奕。仍然先簡單介紹一下 有兩堆物品若干,數量可以相同可以不同,兩個人輪流從某一堆任意取或是同時從兩堆中取同樣多的物品,規定每次至少取乙個,與巴什博奕不同,這裡沒有規定取出的物品的上限,最後取完物品的人獲得遊戲勝利。這種情況比之前的巴什博奕略微複雜一點。我們使用 ...