四种博弈

转载自https://www.luogu.com.cn/blog/user38385/solution-p2252
(侵权的话私信我删除。。。)

加了一些 $\LaTeX $

一. 巴什博奕(Bash Game):

A和B一块报数,每人每次报最少 \(1\) 个,最多报 \(4\) 个,看谁先报到 \(30\) 。这应该是最古老的关于巴什博奕的游戏了吧。

其实如果知道原理,这游戏一点运气成分都没有,只和先手后手有关,比如第一次报数,A报 \(k\) 个数,那么B报 \(5-k\) 个数,那么B报数之后问题就变为,A和B一块报数,看谁先报到 \(25\) 了,进而变为$20,15,10,5 $ ,当到 \(5\) 的时候,不管A怎么报数,最后一个数肯定是B报的,可以看出,作为后手的B在个游戏中是不会输的。

那么如果我们要报 \(n\) 个数,每次最少报一个,最多报 \(m\) 个,我们可以找到这么一个整数 \(k\)\(r\) ,使 \(n=k*(m+1)+r\) ,代入上面的例子我们就可以知道,如果 \(r=0\) ,那么先手必败;否则,先手必胜。

二. 威佐夫博弈(Wythoff Game):

有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。

直接说结论了,若两堆物品的初始值为 \((x,y)\) ,且 \(x<y\) ,则令 \(z=y-x\)

\[w= \lfloor \frac{ \sqrt5 + 1}{2} *z \rfloor \]

若 $ w=x $ ,则先手必败,否则先手必胜。

代码可写为

w = (int) ( ( sqrt(5.0) + 1.0 ) / 2.0 * (double)(z))

三. 尼姆博弈(Nimm Game):

尼姆博弈指的是这样一个博弈游戏:有任意堆物品,每堆物品的个数是任意的,双方轮流从中取物品,每一次只能从一堆物品中取部分或全部物品,最少取一件,取到最后一件物品的人获胜。

结论就是:把每堆物品数全部异或起来,如果得到的值为 \(0\) ,那么先手必败,否则先手必胜。

四. 斐波那契博弈:

有一堆物品,两人轮流取物品,先手最少取一个,至多无上限,但不能把物品取完,之后每次取的物品数不能超过上一次取的物品数的二倍且至少为一件,取走最后一件物品的人获胜。

结论是:先手胜当且仅当 \(n\) 不是斐波那契数。( \(n\) 为物品总数)

posted @ 2023-03-23 16:11  yyx525jia  阅读(45)  评论(0)    收藏  举报