博弈小专题
//取石子专题
First:巴什博弈
只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。将这一状态进行推广,那么当能够使得状态为n%(m+1)==0的人必胜。也就是说,只要n%(m+1)!=0,则先手必胜。
Second:尼姆博弈 详解戳
有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。
首先只要最后剩两堆物品一样多(不为零),第三堆为零,那面对这种局势的一方就必败,我们用(a,b,c)表示某种局势,(0,0,0)显然是必败态;第二种必败态是(0,n,n),自己在某一堆拿走k(k ≤ n)个物品,不论k为多少,对方只要在另一堆拿走k个物品,最后自己都将面临(0,0,0)的局势,必败。
对于任何必败局势(a,b,c),都有a XOR b XOR c = 0。
那么现在面临的问题就是,非必败态如何转化为必败态。假设 a < b < c,我们只要将 c 变为a XOR b,即可。因为有如下的运算结果:a XOR b XOR (a XOR b)=(a XOR a) XOR (b XOR b) = 0要将c 变为a XOR b,只要对 c进行 c-(a XOR b)这样的运算即可。
推广->n堆物品:
把每堆物品数全部异或起来,如果得到的值为0,那么先手必败,否则先手必胜。
Third:威佐夫博弈
有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。
若两堆物品的初始值为(x,y),且x<y;
记w=(int)[((sqrt(5)+1)/2)*(y-x)];//很奇妙的黄金分割比
若w=x,则先手必败,否则先手必胜。
Forth:斐波那契博弈
有一堆物品,两人轮流取,先手最少取一个,至多无上限,但不能把物品取完,之后每次取得物品数不能超过上一次的2倍且至少为1件,取走最后一件物品的人获胜。
当且仅当n不为斐波那契数时先手胜。