博弈論之Nim遊戲

2021-09-19 09:56:21 字數 3092 閱讀 4368

二、nim遊戲的定義

三、過程例項

四、分析

3.bouton's theorem

五、例題

nim遊戲是博弈論中最經典的模型(之一),它又有著十分簡單的規則和無比優美的結論 。nim遊戲是組合遊戲(combinatorial games)的一種,準確來說,屬於「impartial combinatorial games」(以下簡稱icg)。

滿足以下條件的遊戲是icg:

1、有兩名選手;

2、兩名選手交替對遊戲進行移動(move),每次一步,選手可以在(一般而言)有限的合法移動集合中任選一種進行移動;

3、對於遊戲的任何一種可能的局面,合法的移動集合只取決於這個局面本身,不取決於輪到哪名選手操作、以前的任何操作或者其它什麼因素;

4、如果輪到某名選手移動,且這個局面的合法的移動集合為空(也就是說此時無法進行移動),則這名選手負。根據這個定義,很多日常的遊戲並非icg。

例如象棋就不滿足條件3,因為紅方只能移動紅子,黑方只能移動黑子,合法的移動集合取決於輪到哪名選手操作。

通常的nim遊戲的定義是這樣的:

有若干堆石子,每堆石子的數量都是有限的。

兩個玩家交替進行遊戲。

當輪到每個玩家取子時,選擇這些堆中的一堆,並從所選的堆中取走至少一枚硬幣(可以取走他所選堆中的全部硬幣)。

最後取完的玩家即為勝者。(即不能取子的玩家輸)

如果輪到你的時候,只剩下一堆石子,那麼此時的必勝策略肯定是把這堆石子全部拿完一顆也不給對手剩,然後對手就輸了。

如果剩下兩堆不相等的石子,必勝策略是通過取多的一堆的石子將兩堆石子變得相等,以後如果對手在某一堆裡拿若干顆,你就可以在另一堆中拿同樣多的顆數,直至勝利。

如果你面對的是兩堆相等的石子,那麼此時你是沒有任何必勝策略的,反而對手可以遵循上面的策略保證必勝。

定義

p-position(先手必敗)和n-position(後手必敗),其中p代表previous,n代表next。

規則:

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

可以移動到p-position的局面是n-position.(只要找到乙個是p-position的子局面就能說明是n-position)

所有移動都導致n-position的局面是p-position。(所有的子局面都是n-position,它才是p-position)

解析

意思是p為必輸的局面,這是無法再進行移動

意思是如果當前的局面你如果可以勝利,那麼必然意味著你能創造乙個必輸的局面給對方

意思是如果你是必輸的局面,那麼意味著不管比賽有沒有分出最後的結果,你的所有移動得到的結果都是對方勝利的局面。或者說都是對方又可以把你置為必輸的局面的位置

比如說我剛才說當只有兩堆石子且兩堆石子數量相等時後手有必勝策略,也就是這是乙個p-position,下面我們依靠定義證明一下(3,3)是乙個p-position。

首先(3,3)的子局面(也就是通過合法移動可以導致的局面)有(0,3)(1,3)(2,3)(顯然交換石子堆的位置不影響其性質,所以把(x,y)和(y,x)看成同一種局面)。

根據上面這個過程,可以得到乙個遞迴的演算法——對於當前的局面,遞迴計算它的所有子局面的性質,如果存在某個子局面是p-position,那麼向這個子局面的移動就是必勝策略。當然,可能你已經敏銳地看出有大量的重疊子問題,所以可以用dp或者記憶化搜尋的方法以提高效率。

資料範圍很小,可以記憶化搜尋所有可能的狀態

利用這個演算法,對於某個nim遊戲的局面(a1,a2,…,an)來說,要想判斷它的性質以及找出必勝策略,需要計算o(a1a2…*an)個局面的性質,當資料很多時,時間複雜度會很高。

bouton』s theorem:對於乙個nim遊戲的局面(a1,a2,…,an),使用異或運算判斷勝負。

對於先手玩家,

如果a1a2…^an!=0→先手玩家必勝(n-position)

如果a1a2…^an =0→先手玩家必敗(p-position)

根據定義,證明一種判斷position的性質的方法的正確性,只需證明其是否符合規則:

第乙個規則

顯然,terminal position只有乙個,就是全0,異或仍然是0。

第二個規則

將其(n-position必然有乙個p-positon子局面)表示出來:對於某個局面(a1,a2,…,an),若a1a2…an!=0(n-postion),一定存在某個合法的移動,將ai改變成ai』後滿足a1a2…ai』…an=0(p-position)。

不妨設a1a2…an=k,則一定存在某個ai,它的二進位制表示在k的最高位上肯定是1(意思是比如k=4,用二進位制表示是100,ai是5,101)。這時aikk(ai』a2…ai』…an=a1a2…ank=0=k^k=0。

第三個規則

對於某個局面(a1,a2,…,an),若a1a2…an=0,一定不存在某個合法的移動,將ai改變成ai』後滿足a1a2…ai』…an=0。因為異或運算滿足消去率,由a1a2…an=a1a2…ai』…an可以得到ai=ai』。所以將ai改變成ai』不是乙個合法的移動。證畢。

根據這個定理,我們可以在o(n)的時間內判斷乙個nim的局面的性質,且如果它是n-position,也可以在o(n)的時間內找到所有的必勝策略。nim問題就這樣基本上完美的解決了。

博弈論之Nim遊戲

題意 給定nn堆石子,兩位玩家輪流操作,每次操作可以從任意一堆石子中拿走任意數量的石子 可以拿完,但不能不拿 最後無法進行操作的人視為失敗。問如果兩人都採用最優策略,先手是否必勝。必勝狀態,先手進行某乙個操作,留給後手是乙個必敗狀態時,對於先手來說是乙個必勝狀態。即先手可以走到某乙個必敗狀態。必敗狀...

博弈論 Nim遊戲

這種遊戲稱為nim博弈,遊戲過程中面臨的狀態成為局面。n im nimni m博弈不存在平局,只有先手必勝和先手必敗兩種情況。定理nim 博弈先手 必勝,當 且僅當a 1xora2 xor xoran 0nim博弈先手必勝,當且僅當 a 1 texta 2 text cdots text a n n...

博弈論演算法之nim遊戲

有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。它與二進位制有密切關係,我們用 a,b,c 表示某種局勢,首先 0,0,0 顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是 0,n,n 只要與對手拿走一樣多的物品,最後都將導致 0,...