博弈基礎知識

2021-09-13 19:14:02 字數 2580 閱讀 4483

當前執行者想贏。這個是必要的,有時候題目中判別勝負的條件會與平時練習的恰好相反,此時你就應該按照題目要求思考,即在經典模型中思考當前執行者想輸的策略。

定義p-position和n-position,其中p代表previous,n代表next。直觀的說,上一次move的人有必勝策略的局面是p-position,也就是「後手可保證必勝」或者「先手必敗」,現在輪到move的人有必勝策略的局面是n-position,也就是「先手可保證必勝」。更嚴謹的定義是:

1.無法進行任何移動的局面(也就是terminal position)是p-position;

2.可以移動到p-position的局面是n-position;

3.所有移動都導致n-position的局面是p-position;我們在下文中稱之為必勝點和必敗點。

定義:只有一堆石子,兩人輪流取,最少取乙個,最多取m個,最後取完者為勝。

思考:

①當石子個數n=0時為必敗點;(根據題意得來)

②當石子個數0定義:有兩堆各若干個物品,兩個人輪流從某一堆或同時從兩堆中取同樣多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。poj1067

思考:把兩堆石子的集合寫為(a,b)不失一般性令我們只考慮a<=b的情況;

數學家已經給出了我們a的通項公式(如要了解推導過程可自行查閱資料,這裡不作為重點討論),即ai=[i(1+√5)/2](方括表示下取整),bi=ai+i。*

定義:有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。

思考:當只剩下一堆石子時,顯然先手可以一次取完石子取得勝利,此為必勝點。當剩下兩堆石子時,假如石子不相同,當前執行者一定可以取若干石子使得兩堆相同(n,n),然後只要每次取石子數與對手相同(n-x,n-x),最後肯定會取完石子(0,0),所以(n,n)是必敗點。當只有兩堆石子時,站在對手的角度考慮,會發現當且僅當石子數相同才會是必敗點。當三堆都有的時候情況有點複雜,(1,1,)(2,2,)……顯然為必勝點,還有(1,2,3)是必敗點,因為這個點只能到達前面所提到的必勝點。順著這個思路,我們可以推出最小的必敗點是(1,4,5)和(2,4,6),分析以上情況。假設有乙個函式,設為sg(a1,a2,a3),這個函式的值就是這個點的勝負狀態這裡標記為1(必勝點)和0(必敗點),假如這個點是必勝點,設sg(a1,a2,a3)=0,那麼它肯定只能到達必勝點,也就是減少任何一堆石子數量的值,假設減少a3為a3』,他的函式值sg(a1,a2,a3』)應該一定為1;當sg(a1,a2,a3)=1時,一定存在某一堆減少數量假設也是改變a3』,就可以使sg(a1,a2,a3』)=0;還需滿足一點就是sg(0,0,0)=0;根據上面的條件,我們或許想不出sg(a1,a2,a3)這個函式的表示式,當然數學家們如何想出的,我們不得而知,我們可以做的只有驚嘆!接下來我們欣賞這個完美的結論吧,它已經推廣到了n堆石子的情況。

對於乙個nim遊戲的局面(a1,a2,…,an),它是p-position當且僅當a1^a2^…^an=0,其中^表示異或(xor)運算。神奇吧,很難想像怎麼和異或扯上關係的,然而他的證明也並不複雜,在沒有發現之前是很難想得出來的,這個的過程一定不缺乏深度思維的碰撞和靈感的火花。接下來我們就對他進行證明:

1、最後的狀態,全為零,顯然成立;

2、對於某個局面(a1,a2,…,an),若a1^a2^…^an<>0,一定存在某個合法的移動,將ai改變成ai』後滿足a1^a2^…^ai』^…^an=0。不妨設a1^a2^…^an=k,則一定存在某個ai,它的二進位制表示在k的最高位上是1(否則k的最高位那個1是怎麼得到的)。這時ai^k3、對於某個局面(a1,a2,…,an),若a1^a2^…^an=0,一定不存在某個合法的移動,將ai改變成ai』後滿足a1^a2^…^ai』^…^an=0。因為異或運算滿足消去率,由a1^a2^…^an=a1^a2^…^ai』^…^an可以得到ai=ai』。所以將ai改變成ai』不是乙個合法的移動。證畢。

通俗的說,如果異或的結果為0,那麼改變任何乙個數,顯然結果肯定不能為0了,如果結果不為0,改變某個特定乙個數,可以使結果等於0,而異或運算恰好就滿足這個條件。因而成就了這個不可思議的定理。

有一堆個數為n(n>=2)的石子,遊戲雙方輪流取石子,規則如下:

1)先手不能在第一次把所有的石子取完,至少取1顆;

2)之後每次可以取的石子數至少為1,至多為對手剛取的石子數的2倍。

約定取走最後乙個石子的人為贏家,求必敗態。

結論:當n為fibonacci數的時候,必敗。

這個問題是尼姆博弈的拓展:遊戲開始時有許多硬幣任意分布在樓梯上,共n階樓梯從地面由下向上編號為0到n。遊戲者在每次操作時

可以將樓梯j(1<=j<=n)上的任意多但至少乙個硬幣移動到樓梯j-1上。遊戲者輪流操作,將最後一枚硬幣移至地上(0號)的人獲勝。

演算法:將奇數樓層的狀態異或,和為0則先手必敗,否則先手必勝。證明略。

例題:poj1704

這道題可以把兩個棋子中間間隔的空格子個數作為一堆石子,則原題轉化為每次可以把左邊的一堆石子移到相鄰的右邊的一堆中。也就

是階梯尼姆博弈,注意對輸入資料先排序,然後倒著往前數(a[n]-a[n-1]-1為第乙個),奇數個數到的就做一下xor,其中最前面的看

做a[1]-0-1

1:2:

博弈論基礎知識

博弈論 game theory 是由美國數學家馮 諾依曼 von.neumann 和經濟學家摩根斯坦 morgenstern 於1944 年創立的帶有 方 性質的學科,它被廣泛應用於經濟學 人工智慧 生物學 火箭工程技術 軍事及政治科學等。1994 年,三位博弈論專家即數學家納什 nash 他的故事...

博弈論基礎知識

有一種很有意思的遊戲,就是有物體若干堆,可以是火柴棍或是圍棋子等等均可.兩個人輪流從堆中取物體若干,規定最後取光物體者取勝.這是我國民間很古老的乙個遊戲,別看這遊戲極其簡單,卻蘊含著深刻的數學原理.下面我們來分析一下要如何才能夠取勝.按照遊戲規則 取物規則 的不同,博弈遊戲可以分為三類 巴什博奕,威...

博弈論基礎知識

一 巴什博奕 bash game 首先我們來玩乙個比較古老的報數遊戲。a和b一起報數,每個人每次最少報乙個,最多報4個。輪流報數,看誰先報到30.如果不知道巴什博弈的可能會覺得這個是個有運氣成分的問題,但是如果知道的人一定知道怎樣一定可以贏。比如a先報數的話,那麼b一定可以贏 這裡假定b知道怎麼正確...