異或運算與尼姆博奕

2021-09-02 03:38:53 字數 3129 閱讀 3006

異或運算

異或運算定義:異或運算方法是乙個二進位制邏輯運算,設其運算符合為^,a,b為二進位制數,則a,b的異或為a^b。

其運算滿足如下:1^1=0,0^0=0,1^0=1,0^1=1,即 相同的為0,不相同為1。

a、b按低位到高位進行1位的二進位制運算(高位沒有則補0)即得a^b的值。

public class xor 

}

輸出:

100010

10111

110101

異或運算的一些基本性質:

1、交換律:a^b=b^a    (根據定義顯然可得)  

2、結合律:a^b^c=a^(b^c)   (根據定義顯然可得)  

3、對於任何數a,都有a^a=0,a^0=a(根據定義顯然可得)  

3、自反性:  a^b^b=a         (a^b^b=a^(b^b)=a^0=a)

尼姆博奕(nim game):有三堆各若干個物品(顯然每堆的物品數大於0),兩人輪流從某一堆取任意多的物品,每次最少取乙個,不設上限,最後取光者獲勝。

(一般談論這個博弈時,都會先談到巴什博奕、威佐夫博弈

設(a,b,c)為三堆石子的個數(a>=0;b>=0;c>=0),先手為 甲;後手為乙。

必敗局勢,一般稱為奇異局勢,顯然(0,0,0)是乙個奇異局勢(因為誰面對這種局勢,都無法做到遊戲給出的條件:每次最少取乙個)

討論局勢是必敗還是必勝,都是相對於首先面對此局勢者來說。因此站在甲的角度來討論。甲面對

(0,0,0)必輸。

當甲面對(a,a,0),甲每次拿x,乙隨後也跟著拿x,因此甲面對的局勢始終是(a-x,a-x,0)。因此轉化為甲最終都會面對

(0,0,0),因此甲必輸。

因為遊戲是兩個人交替進行。由此可得,如果局勢(a,b,c)是必勝局勢,那麼甲就有策略,使得拿走某堆中的x個物品後,一般地設為(a-x,b,c)=(a',b,c)。此時

(a',b,c)就是乙個必敗的局面。反之,必敗的局面可以變為必勝的局面。由此,我們尋找乙個函式f,當

f(a,b,c)=1時,稱(a,b,c)為必勝局面,

f(a,b,c)=0時,稱(a,b,c)為必敗局面(

奇異局勢

)。更一般地,考慮n>=2堆物品的情況。每堆數量為(a1,a2,...,an)   (1,2,..,n一般在數學中用下標表示)

定理:

(a1,a2,...,an)為

奇異局勢當且僅當a1^a2^...^an=0

證明:(a1,a2,...,an)=(0,0,...,0)時顯然成立。

當(a1,a2,...,an)不為(0,0,...,0)時,若a1^a2^...^an=k<>0,顯然k的最高位為1。

則一定存在乙個ai(1<=i<=n),它在k的最高位的值為1。(若a1,a2,...,an在k的最高位處都為0,那麼異或運算規則,不可能得到k的最高位為1)

因此,ai^k

設ai'=ai^k,則a1^a2^...^ai'^...^an=a1^a2^...^ai^...^an^k (代入ai'=ai^k,並由異或的交換律得到

)=k^k=0

因此當a1^a2^...ai^...^an=k

<>0時,存在移動ai->ai' (即移動ai-ai'>0)使得

a1^a2^...ai^...^an=0

若a1^a2^...ai^...^an=0,則不存在合法移動,使得a1^a2^...ai『^...^an=0。

因為若a1^a2^...ai^...^an=

a1^a2^...ai』^...^an=0,則兩邊同時異或a1,可得

a2^...ai^...^an=

a2^...ai』^...^an,

繼續兩邊異或a3...an(除了共有的ai,ai'),由此可推出ai=ai'。顯然這不是合法的移動。

由以上證明得出

1) a1^a2^...ai^...^an=k

<>0,一定存在一步特定移動使得

a1^a2^...ai^...^an=0;

2) a1^a2^...ai^...^an=0,不存在一步合法移動使得

a1^a2^...ai『^...^an再次為0,

即當 a1^a2^...ai^...^an=0時,任意移動一步後都會變為 a1^a2^...ai』^...^an<>0。

由1)、2)可得

3)當a1^a2^...ai^...^an=0時,下一步必然為a1^a2^...ai』^...^an<>0,再下一步可以變為a1^a2^...ai』』^...^an=0。

必要性:由(a1,a2,...,an)為

奇異局勢(必敗局勢),考慮甲先乙後。

假設a1^a2^...ai^...^an<>0,那麼甲通過移動,可使

a1^a2^...ai『^...^an=

0。如此一直下去,每次乙都只能面對

a1^a2^...ai^...^an=

0的局勢。

由於遊戲的結束點必然為

(0,0,...,0),因此乙最終將面對

(0,0,...,0)。在乙面對

(0,0,...,0)的上一步,設為(b1,...,bn),此時b1^...^bn<>0。

但乙最終先面對了

(0,0,...,0),顯然是甲勝,這與

(a1,a2,...,an)為

奇異局勢(必敗局勢,甲必敗)矛盾。

因此必有

a1^a2^...ai^...^an=0。

充分性:

a1^a2^...^an=

0,由3)乙始終有辦法讓甲面對的局勢始終是

x1^x2^...^xn=

0。因此甲最終面對的必然是(0,0,...,0)的局勢, 而

(0,0,...,0)就是個奇異局勢。

證畢。

尼姆博奕(Nimm Game)

尼姆博奕 有n堆石子。a b兩個人輪流拿,a先拿。每次只能從一堆中取若干個,可將一堆全取走,但不可不取,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n及每堆石子的數量,問最後誰能贏得比賽。假設三堆石子,奇異局勢有 0,0,0 0,n,n 1,2,3 等等,每一組的...

尼姆博弈(巴什博奕)

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

巴什博奕 尼姆博弈

只有一堆n個物品,每次至少取a個,最多取b個 問題可分為 1.最後取完者勝 面臨 a b k個物品的人必敗 2.最後取完者敗 面臨 a b k a個物品的人必敗 因此當兩個都極其聰明的人博弈時,就看有多少個物品,自己先手取了之後能否讓對手面臨必敗點 對於最後取完者勝的情況 對取物品方面又可分為 最後...