威佐夫博弈

· · 题解

威佐夫博弈的定义是:

有两堆各若干个物品,两个人轮流从某一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

那么如果给你这样一个东西,那么如何判断是先手A胜利还是后手B胜利呢?

我们局势为为(a[k],b[k](a[k] \leq b[k],k \in [0,n]))

我们定义一个奇异局势为可以让先手A必输的局势。例如在上面这个题中,可以找到类似于(1,2),(3,5),(4,7)等奇异局势。

由此可得:a[0]=b[0]=0,a[k]是未在前面出现过的最小自然数,而b[k]=a[k]+k

关于奇异局势,有几个特殊的性质:

所谓适当的方法,分为以下几种情况:(假设当前的情况为(a,b)

总之:两个人如果都采用正确操作,那么面对非奇异局势,先手必胜;反之,则后手必胜。

如果我给你一个局势(a,b),如何判断这是不是一个奇异局势呢?有一个很好用的公式如下:

\begin{cases}a[k]=\lfloor \dfrac{k \times (1+\sqrt{5})}{2} \rfloor \\b[k]=a[k]+k\end{cases}

其中 k \in N

由此我们可以得知:若两堆物品个数分别为x,y(x<y),则k=y-x,再判断x是否等于\lfloor (y-x)\times \dfrac{1+\sqrt{5})}{2} \rfloor即可得知是否是奇异局势。