ICG博弈_尼姆博弈(Nim Game)及證明
這是最後一篇ICG博弈,尼姆博弈,對比前面的巴什博弈和威佐夫博弈,尼姆博弈的玩法更加自由化,因此想贏的過程也更加複雜。
如果沒有了解過巴什博弈和威佐夫博弈的,建議先看上兩篇 :巴什博弈及證明 威佐夫博弈及證明
尼姆博弈(Nimm Game)
目前有任意堆石子,每堆石子個數也是任意的,雙方輪流從中取出石子,規則如下: ①每一步應取走至少一枚石子;每一步只能從某一堆中取走部分或全部石子; ②如果誰取到最後一枚石子就勝。 設(a,b,c,d…)為每堆石子的個數(石子個數>=0),甲乙兩人遊戲,且甲先行。
一樣的思路,找出必敗態,這裡用遞增窮舉的方法: 剩下1堆石子
剩下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種情況,分別是①三者相等
小白猜想不了這種規律的表達,但是被別人與計算機二進位制的異或運算聯絡了起來(這個人是誰,小白也不知道),對於異或運算⊕,也是和運算物件是否相等有關,小白的記憶方法是 異1同0
A | B | A⊕B |
---|---|---|
0 | 0 | 0⊕0 = 0 (同0) |
0 | 1 | 0⊕1 = 1 (異1) |
1 | 0 | 1⊕0 = 1 (異1) |
1 | 1 | 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),就可以得到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,那麼當前局面是必敗態。
如果不夠明白,可以訪問 大神鏈