参考资料: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值内容留