ICG博弈 尼姆博弈(Nim Game)及證明

2021-08-28 16:35:31 字數 3095 閱讀 7267

這是最後一篇icg博弈,尼姆博弈,對比前面的巴什博弈和威佐夫博弈,尼姆博弈的玩法更加自由化,因此想贏的過程也更加複雜。

如果沒有了解過巴什博弈和威佐夫博弈的,建議先看上兩篇 :巴什博弈及證明

威佐夫博弈及證明

目前有任意堆石子,每堆石子個數也是任意的,雙方輪流從中取出石子,規則如下:

①每一步應取走至少一枚石子;每一步只能從某一堆中取走部分或全部石子;

②如果誰取到最後一枚石子就勝。

設(a,b,c,d…)為每堆石子的個數(石子個數》=0),甲乙兩人遊戲,且甲先行。

一樣的思路,找出必敗態,這裡用遞增窮舉的方法:

剩下1堆石子,明顯(0)是乙個必敗態,(k)是乙個必勝態。

剩下2堆石子,根據遊戲規則可知,(1,1)是乙個失敗態,(1,2)是乙個必勝態,(2,2)是乙個失敗態,……發現(k,k)是乙個必敗態,無論你怎麼取,對手只要從數量較多的一堆取走和你取走一樣的數量,則又回到了(k『,k』)狀態,這樣一直下去,總會變成(1,1)直到(0,0),(k,k+m)是乙個必勝態

剩下3堆石子,根據前面的結論,我們知道(1,1,k)、(1,k,k)和(k,k,k)都是必勝態【都可以留下(k,k)必敗態給對手】,接下來對於任乙個(a,b,c)都可以轉化為(k+m,k+n.k+p),而對於m\n\p,有3種情況,分別是①三者相等,就是(k』,k』,k』),為必勝態。②兩者相等,假設為(k+m,k+p.k+p),這樣把k+m取完,留下必敗態給對手,也是必勝態。③三者不等,這種情況非常複雜,用簡單的公式難以表達,我們可以觀察到(1,2,3)是必敗態,但是(1,2,4)是必勝態,兩者只是相差乙個石子,因此這裡先擱一擱。

……經過一些簡單的窮舉,儘管難以發現遞迴式或者通項公式,但是我們還是能感覺到一點非常重要的因素:乙個狀態是必勝態還是必敗態,與剩下的石子堆之間是否相等有很大的關係。上面3種窮舉的結果如下:

必敗態:(0)、(k,k)

必勝態:(k)、(k,k+m)、(k,k,k)、(m,k,k)

小白猜想不了這種規律的表達,但是被別人與計算機二進位制的異或運算聯絡了起來(這個人是誰,小白也不知道),對於異或運算⊕,也是和運算物件是否相等有關,小白的記憶方法是異1同0,也就是對於二進位制:ab

a⊕b0

00⊕0 = 0 (同0)01

0⊕1 = 1 (異1)10

1⊕0 = 1 (異1)11

1⊕1 = 0 (同0)

兩個相異的數異或⊕就是1,兩個相同的數異或⊕就是0。

使用異或運算,可以根據當前局面判斷全域性輸贏,判斷過程是:對於當前局面(a1,a2,a3……an),如果a1⊕a2⊕a3⊕……⊕an = 0,那麼當前局面就是必敗態,否則是必勝態。

我們先代入窮舉出來的結果:

(0)、(k,k):異1同0,確實k⊕k = 0,為必敗態。

(k)、(k,k+m)、(k,k,k)、(m,k,k):異1同0,確實k⊕(k+m) ≠ 0,k⊕k⊕k ≠ 0,m⊕k⊕k ≠ 0,為必勝態

命題:尼姆博弈,如果當前局面(a1,a2……an)中,a1⊕a2⊕……⊕an = 0,那麼當前局面是必敗態。

證明:明顯當a1=a2=……=an = 0的時候成立,(0)為必敗態。當(a1,a2……an)不全等於0的時候,有2種情況:

① k = a1⊕a2⊕…⊕am⊕…⊕an ≠ 0,此時k的二進位制最高位為1,則一定存在am它的最高位也為1,因為異或運算保證了當運算結果為1的時候,某一方一定是1,於是ap = am ⊕ k < am【異1同0,兩個最高位的1異或得到0】,此時把am替換為ap,(a1⊕a2⊕…⊕am⊕…⊕an) => (a1⊕a2⊕…⊕ap⊕…⊕an) = (a1⊕a2⊕…⊕am ⊕ k⊕…⊕an)=(a1⊕a2⊕…⊕am⊕…⊕an⊕k)= k ⊕ k = 0,這個過程證明了當 a1⊕a2⊕……⊕an ≠ 0的時候,存在有效的取法ap = am ⊕ k使得取後的 結果a1⊕a2⊕……⊕an = 0。

② k = a1⊕a2⊕…⊕am⊕…⊕an = 0,根據遊戲規則,必須從am中至少取走1個成為ap

< am,可以用反證法得到a1⊕a2⊕…⊕ap⊕…⊕an ≠ 0,假設a1⊕a2⊕…⊕ap⊕…⊕an = 0,那麼(a1⊕a2⊕…⊕am⊕…⊕an) = (a1⊕a2⊕…⊕ap⊕…⊕an) = 0,兩邊依次同時異或aj(j從1遞增到n,j ≠m,p),就可以得到ap = am,與前提ap

< am矛盾,假設不成立,這個過程證明了當a1⊕a2⊕…⊕am⊕…⊕an = 0的時候,不存在有效的取法讓取後的結果a1⊕a2⊕…⊕am⊕…⊕an = 0。

綜上所述,當a1⊕a2⊕……⊕an ≠ 0的時候,存在有效的取法,令到a1⊕a2⊕……⊕an = 0,而a1⊕a2⊕……⊕an = 0不存在有效的取法使得a1⊕a2⊕……⊕an = 0【也就必勝態有辦法讓下一步為必敗態,必敗態下一步一定為必勝態】,隨著局面的變化,a1⊕a2⊕……⊕an = 0最終會變成(0,0,0……0)也就是(0)必敗態,所以如果當前局面(a1,a2……an)中,a1⊕a2⊕……⊕an = 0,那麼當前局面是必敗態。

如果不夠明白,可以訪問 大神鏈

這是最後一篇,尼姆博弈

博弈 尼姆博弈

今天我們來聊一聊另一種博弈 尼姆博弈,這一種博弈可以說是巴什博弈的一種變體,巴什博弈中 石子 的堆數為1堆,而在利姆博弈中 石子 的堆數為n堆,還有在尼姆博弈中取石子的規則也發生了變化,前一種博弈中取石子的數量限定在 1,l 而後一種取石子的數量可以為任意數 但不能不取,而且還不能超過這一堆石子的總...

博弈論(尼姆博弈)

尼姆博弈指的是這樣乙個博弈遊戲 有任意堆物品,每堆物品的個數是任意的,雙方輪流從中取物品,每一次只能從一堆物品中取部分或全部物品,最少取一件,取到最後一件物品的人獲勝。結論就是 把每堆物品數全部異或起來,如果得到的值為0,那麼先手必敗,否則先手必勝。這樣理解 先手必敗態為面臨的所有堆都為0,而此時的...

博弈(巴什博奕 尼姆博弈)

1.巴什博奕 一堆 n個物品 兩人輪流從中取物品每人至少拿乙個最多拿m個將這堆物品最後取完的是winner先手勝利條件 n m 1 0 誰面對 m 1 k的情況誰就輸了 k為正整數 include int main return 0 2.尼姆博弈 三金和敵人決戰了!對手是一名和三金同樣強大帥氣的玩家...