Nim游戏详解

废话

这是一个过于经典且过于常见的博弈论模型,入门博弈论的话,首先肯定是要知道这个的。

正题

N i m Nim Nim 游戏的规则:有 n n n 堆石子,第 i i i 堆石子有 a i a_i ai 个,每次可以从某一堆中取走若干个,先后手轮流取,最后无石子可取的人负。

首先给出结论:将这 n n n 堆石子的数量异或起来(即 a 1   x o r   a 2   x o r   . . .   x o r   x n a_1~xor~a_2~xor ~...~xor~x_n a1 xor a2 xor ... xor xn),假如不为 0 0 0,那么先手必胜,否则先手必败。

由于这东西的证明需要用到二进制,所以下面的证明都在二进制意义下讨论。

证明

首先要知道两个定义:

  1. 必胜态:双方足够聪明的情况下,在该状态时拥有操作权者必胜
  2. 必败态:双方足够聪明的情况下,在该状态时拥有操作权者必败

以及一些基础知识:如果一个状态能转移到任意一个必败态,那么该状态就是必胜态,如果不能,就是必败态。

N i m Nim Nim 游戏中,异或和不为 0 0 0 就是必胜态,否则是必败态。

先考虑必胜态怎么必胜:

假设他们异或起来为 k ( k ≠ 0 ) k (k\neq 0) k(k=0),且 k k k 的最高位为第 p p p 位,那么至少存在一个 a i a_i ai,满足 a i a_i ai 的第 p p p 位是 1 1 1,那么我们只需要让 a i a_i ai 异或上 k k k 即可,由于 a i a_i ai 的第 p p p 位是 1 1 1,所以 a i a_i ai 异或 k k k 肯定是减少了。

异或完后,所有石子的异或和就变成了 0 0 0,也就是必败态,由于能转移到必败态,所以一开始的状态为必胜态。

再考虑必败态为什么必败:

其实这个就简单很多了……由于此时异或和为 0 0 0,不管怎么拿,拿完之后肯定不为 0 0 0,也就是说,这个状态只能转移到必胜态,那么这个状态就是必败态了。


举个栗子

比如现在有 1 , 3 , 2 , 6 1,3,2,6 1,3,2,6 四堆石子,在二进制下就是 001 , 011 , 010 , 110 001,011,010,110 001,011,010,110,他们的异或和为 110 110 110,也就是 6 6 6

此时先手操作, k k k 110 110 110 的最高位是第三位,找到第三位是 1 1 1 的数: 6 6 6,让它异或上 6 6 6,得到的就是 0 0 0,那么四堆石子数变成 1 , 3 , 2 , 0 1,3,2,0 1,3,2,0,此时他们的异或和为 0 0 0,满足要求,van美。

拓展题

(来自师兄的一场模拟赛)

题目大意:有一棵 n n n 个节点的树, 1 1 1 号点为根节点,其它点上分别放有若干个石子,两个人轮流操作,每次可以将某个节点上的若干个石子移动到这个节点的父亲上面,无法操作者负,问先手是否必胜。

题解:

观察发现,假如设根节点的深度为 1 1 1,那么深度为奇数的节点上的石子其实不影响答案,因为如果移动这上面的石子,那么另一个人再次移动这堆石子即可,这堆石子就永远在深度为奇数的节点上,若干次移动后就到了根节点,然而他们的移动并不会更改先后手顺序。

所以我们只需要考虑深度为偶数的节点上的石子即可,如果移动深度为偶数的节点上的石子,那么移动完之后这堆石子肯定会在奇数节点上,也就是说,这堆石子没用了。这等价于我们取走了这些石子。

诶,是不是开始很眼熟了?没错,这就是一个 N i m Nim Nim 游戏,不过不是用到所有的石子,只用到深度为偶数的节点上的石子罢了。


emm,简单吧,这就讲完啦qwq。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值