小结博弈
參考資料:https://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html
一、巴什博奕
只有一堆物品,兩人輪流取,每次最多m個,最少一個。最后取光者獲勝
分析:假設共n個物品,n=m+1, 那么先手必敗。所以為了先手必勝。可以把n表示為
n = k(m+1) + s? ,? s <= m
只要先手取s個,把數量維持到m+1的倍數即可。對方取r個,自己就取m+1-r個
?
二、威佐夫博弈
有兩堆物品,兩人輪流取,每次可以從一堆或兩堆取相同數量物品,最少1個,最多不限,最后取光者獲勝
分析:用(ak,bk)ak<bk, k=0,1,2,3……表示兩堆的數量,也稱局勢
其中如果甲面對(0, 0)局勢,那么甲已經輸了,稱奇異局勢
前幾個奇異局勢:(0,0) (1,2)?? (3,5)? (4, 7)? (6, 10)
其中ak就是前面未出現的最小數,bk = ak + k
可以看出奇異局勢 有以下三種性質
①:任何自然數都包含在一個且僅有一個的奇異局勢中
證明:由于ak是沒出現的最小數,所以ak>ak-1 而bk=ak+k>ak-1+k-1=bk-1>ak-1
②:任意操作都可以把奇異局勢轉化為非奇異局勢
證明:若只改變(ak,bk)的某個分量,那么另一個分量一定不在其他奇異局勢里。所以必然是非奇異局勢。
如果使兩個分量同時減少,由于差不變,肯定也是非奇異局勢
③:適當操作就可以把非奇異局勢轉化為奇異局勢
證明有兩個不懂。所以(證明見文頂參考資料)
?
從以上性質可知:面對非奇異局勢,先手必勝;反之,后手必勝
現在問題就是 如果判斷一個局勢(a,b) 是不是奇異局勢
深奧的看不是太懂,不過可以這樣判斷
已知 a < b, 奇異局勢:a = k*1.618
k = b - a,? 1.618=(sqrt(5)+1)/2;
?
三、尼姆博弈
有三堆物品,兩人輪流從某一堆取任意多物品,每次至少一個,最后取光者獲勝
?
分析:與二進制有關,用(a,b,c) 表示某種局勢,首先(0,0,0) 是奇異局勢,無論誰面對必敗。
第二種奇異局勢(0,n,n), 只要對手拿走一樣多的物品,最后都將導致(0,0,0)。
仔細分析(1,2,3)也是奇異局勢,無論誰拿,都會變為(0,n,n)
這里介紹異或運算 二進制對應位 不一樣為1,一樣為0
對于奇異局勢 (0,n,n) 異或結果為0
對于任何奇異局勢 (a,b,c) a^b^c = 0
?
如果我們面對非奇異(a,b,c),要如何變為奇異局勢?
假設a<b<c 我們只虛把 c 變為 a^b 即可
所以就把c減去c-a^b
?
重點理解:取火柴游戲:
題目1:今有若干堆火柴,兩人依次從中拿取,規定每次只能從一堆中取若干根,?
可將一堆全取走,但不可不取,最后取完者為勝,求必勝的方法。?
題目2:今有若干堆火柴,兩人依次從中拿取,規定每次只能從一堆中取若干根,?
可將一堆全取走,但不可不取,最后取完者為負,求必勝的方法。
?
定義:若所有火柴數異或為0,則稱為利他態,用T表示,否則就利己態 用S表示
因為誰面對異或為0, 就輸了,所以是利他(對手)態
?
第一個題目:
定理一:對于任何一個S態,總能從一堆火柴中取出若干使之成為T態
證明:
若有n堆火柴,每堆A(i) 根火柴,那么既然處于S態,
c=A(1)^A(2)^……^A(n) > 0
把c表示成二進制,記最高位為第p位,則必然存在一個A(t), 它的第p位也是1。
那么我們把 x=A(t)^c , 則得到x<A(t),因為最高位同為1,肯定小了。所以x<A(t)
?? A(1)^A(2)^……^x^……^A(n)
= A(1)^A(2)^……^A(t)^c^……^A(n)
= A(1)^A(2)^……^A(n)^A(1)^A(2)^……^A(n)
= 0
也就是說從A(t)中取出 A(t)-x 根火柴,會從S態變為T態。證畢。
?
定理二:T態,取任何一堆的若干根,都成為S態。
證明:
反證法:c=A(1)^A(2)^……^A(i)^……^A(n)
c'=A(1)^A(2)^……^A( i' )^……^A(n)
c ^ c' = A(1)^A(1)^A(2)^A(2)^……A(i)^A(i')^……^A(n)^A(n)=A(i)^A(i')=0
推出A(i)=A(i'),與已知矛盾,所以命題得證
定理三:S態,只要方法正確,必勝
證明:
最終勝利即由S態轉化為T態,任何一個S態,只要把它變為T態(由定理一,S態可以變為T態),對于T態來說只能變為S態(由定理 二)。所以S態向T態都可以由自己控制,對方只能被動的實現T態變為S態。故S態必勝
?
定理四:T態,只要對方方法正確,必敗
證明:
由定理三易得。
總結:對于先取光勝利的博弈,S態必勝,T態必敗。
?
第二個題目:
定義:若一堆中僅有1根火柴,稱為孤單堆。若大于1根,則稱為充裕堆。
定義:T態中,若充裕堆的堆數大于等于2,稱為完全利他態,用T2表示,若充裕堆為0,稱為部分利他態,用T0表示
不會有T1的存在:因為孤單堆異或只會影響最后一位,一個充裕堆可以影響高位。所以異或和不會為0
?
定理五:S0態,即僅有奇數個孤單堆,必敗。T0態必勝
證明:
S0態就是每次只能取1根,奇數堆,肯定是自己取的最后一根。必敗。
同理 ,T0態必勝。
?
定理六:S1態,只要方法正確,必勝
證明:
若此時孤單堆為奇數,把充裕堆取完,否則取剩1根。
?
定理七:S2態不可一次變為T0態
證明:
充裕堆不可能一次由2變為0
?
定理八:S2態可一次變為T2態
證明:
由定理一,S態可變為T態,又由定理七可知,S2態不可一次變為T0態,所以可一次變為T2態(T1不存在)
?
定理九:T2態,只能變為S2態或S1態
證明:
由定理二,T態只能變為S態。由于充裕堆不可能一次由2變為0,所以S態不可能為S0態。
?
定理十:S2態,只要方法正確,必勝。
證明:
1)? S2態,就變為T2態? (定理八)
2)對方只能變為S2態或S1態 (定理九)
若變為S2態,繼續1)
若變為S1態,S1必勝。
?
定理十一:T2態必輸。
證明:
由定理十易得。
?
總結:對于先取光失敗的博弈,必勝態:S2、S1、T0、必敗態:S0、T2
?
SG值內容留
?
?
?
?
轉載于:https://www.cnblogs.com/ACMerszl/p/10371521.html
總結
- 上一篇: P3796 【模板】AC自动机(加强版)
- 下一篇: 洛谷P4555 [国家集训队]最长双回文