博弈論演算法之nim遊戲

2021-10-09 16:23:45 字數 911 閱讀 3293

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

它與二進位制有密切關係,我們用(a,b,c)表示某種局勢,首先(0,0,0)顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是(0,n,n),只要與對手拿走一樣多的物品,最後都將導致(0,0,0)。仔細分析一下,(1,2,3)也是奇異局勢,無論對手如何拿,接下來都可以變為(0,n,n)的情形。

計算機演算法裡面有一種叫做按位模2加,也叫做異或的運算,我們用符號⊕(或者是xor,這個符號不好打,以下用(+)表示)表示這種運算。這種運算和一般加法不同的一點是1+1=0。先看(1,2,3)的按位模2加的結果:

1 =二進位制01

2 =二進位制10

3 =二進位制11 (+)

———————

0 =二進位制00 (注意不進製)

對於奇異局勢(0,n,n)也一樣,結果也是0。 //奇異局勢即先手必敗局勢

任何奇異局勢(a,b,c)都有a(+)b(+)c =0。

如果我們面對的是乙個非奇異局勢(a,b,c),要如何變為奇異局勢呢?假設 a < b< c,我們只要將 c 變為 a(+)b,即可,因為有如下的運算結果: a(+)b(+)(a(+)b)=(a(+)a)(+)(b(+)b)=0(+)0=0。要將c 變為a(+)b,只要從 c中減去 c-(a(+)b)即可。

例1。(14,21,39),14(+)21=,39-27=12,所以從39中拿走12個物體即可達到奇異局勢(14,21,27)。27

例2。(55,81,121),55(+)81=102,121-102=19,所以從121中拿走19個物品就形成了奇異局勢(55,81,102)。

例3。(29,45,58),29(+)45=48,58-48=10,從58中拿走10個,變為(29,45,48)。(hdoj 1850)

博弈論之Nim遊戲

二 nim遊戲的定義 三 過程例項 四 分析 3.bouton s theorem 五 例題 nim遊戲是博弈論中最經典的模型 之一 它又有著十分簡單的規則和無比優美的結論 nim遊戲是組合遊戲 combinatorial games 的一種,準確來說,屬於 impartial combinator...

博弈論之Nim遊戲

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

博弈論 Nim遊戲

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