**巴什博弈**
一、题目类型:
只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个。最后取光者得胜。
二、分析
1.n=m+1 先手必败,后手一定胜出 。无论先手如何选择,后手一定能把剩下的全部选完
2.n=(m+1)*r+s
结论: n%(m+1)==0 后手必胜 否则 先手必胜
证明:
先手拿走s个 剩余:n=(m+1)r
后手拿走k个 剩余:n=(m+1)(r-1) +(m+1)-k;
先手拿走m+1-k个 剩余:n=(m+1)(r-1)
因为后手面对这 n=(m+1)(r-1) 的状态,那么先手是一定必胜的
P/N图
n*n的图 从(1,n) 走到左下角,可以往左走,下走,左下走 。
分析如下:
P点:就是P个石子的时候,对方拿可以赢(自己输的)
N点:就是N个石子的时候,自己拿可以赢
现在关于P,N的求解有三个规则
(1):最终态都是P
(2):按照游戏规则,到达当前态的前态都是N的话,当前态是P
(3):按照游戏规则,到达当前态的前态至少有一个P的话,当前态是N
**斐波那契博弈**
一、题目类型
有一堆石子,两个顶尖聪明的人玩游戏,先取者可以取走任意多个,但不能全取完,以后每人取的石子数不能超过上个人的两倍
二、分析
结论:先手必败,当且仅当石子数为斐波那契数
**威佐夫博弈**
一、题目类型
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
二、分析
结论:
威佐夫博弈:当遇到奇异局势后手必胜,否则先手必胜
对于奇异局势求解表达式为:
tmp=floor(b-a)*((sqrt(5.0)+1)/2)
如果tmp==a 代表当前为奇异局势后手必胜,否则先手必胜
**尼姆博弈**
一、题目类型
当有n堆物品时,每堆最少取一个,最多全部取完。
二、分析
结论:
当先手处于奇异局势时,先手必败。比如(1,2,3)不管怎么取先手都是必败的
奇异局势的性质: x1xor x2 xor x3 xor x4 xor x5=0 说明是奇异局势,先手必败
那么非奇异局势如何变成奇异局势
假设现在有三堆(a,b,c)
奇异局势的条件:a ^ b ^ c=0
对于非奇异局势,我们需要将c变为 (a xor b)
那么 a xor b xor (a xor b ) = a xor a xor b xor b =0;
那么c= (a xor b) 就等于 c-(a xor b) (c> (a xor b ) )
**SG函数**
memset(sg,0,sizeof sg);
for(int i=1;i<=n;i++)
{
memset(S,0,sizeof S);
for(int j=0;f[j]<=i&&j<N;j++) S[sg[i-f[j]]]=1;
for(int j=0;;j++)
{
if(!S[j])
{
sg[i]=j;
break;
}
}
}