ACM博弈论基础
1. 巴什博弈
有 n n n 个物品,两个人轮流取1 ~ m 个,不能不取,先拿完者获胜。
如果 n = k ∗ ( m + 1 ) + d n=k*(m+1)+d n=k∗(m+1)+d , d > 0 d>0 d>0 ,那么先手必胜,反之后手必胜。因为先手假如先拿 d d d个,后手不论拿多少个,先手都可以将其凑成 m + 1 m+1 m+1 ,那么先手必胜。
2. 威佐夫博弈
有两堆各若干物品,两个人轮流从任意一堆中至少取出一个或者从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最后取光者胜。
先求出两个数的差值,若差值 $ \cdot $ 黄金分割比=最小值,那么后手胜,否则先手胜。(不会证明)
double r=(sqrt(5)+1)/2;
if(abs(a-b)*r==min(a,b)) return 后手
else return 先手
3. 斐波那契博弈
一堆石子有n个,两人轮流取,先取者第一次可以去任意多个,但是不能取完,以后每次取的石子数不能超过上次取子数的2倍。取完者胜。
n n n为斐波那契数,后手胜,反之,先手胜。
4. 尼姆博弈
有n堆物品,两人轮流取,每次取某堆中不少于1个,最后取完者胜。
将n堆物品数量全部异或后结果为0先手必败,否则必胜。
n i m nim nim 博弈可通过求得 s g sg sg 函数 然后异或可得必胜还是必败。