Nim游戏
给定 (n) 堆石子,第 (i) 堆石子有 (A_i) 个石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。
若两人均为巨佬,采用最优策略,先手是否必胜。
这种游戏被称作Nim博弈。游戏过程中面临的状态叫做局面。若在某一局面下无论采取任何行动,都会失败,则称该局面必败。若在某一局面下,能通过采取某一行动使得对手陷入必败局面,则优先采取该行动,这种局面就被称作必胜。在讨论博弈问题时,都只考虑双方都是巨佬的情况,都会采取对于自身的最优策略。Nim博弈不存在平局,只有先手必胜和先手必败两种情况。
定理:Nim博弈先手必胜,当且仅当(A_1 oplus A_2 oplus ldots oplus A_n ne 0) 。(注:$oplus $为异或符号)
证明如下:
首先,对于最终必败局面,即所有物品都被取完,而此时轮到自己行动时。这时(A_1, A_2, ldots, A_n = 0), 显然有 (A_1 oplus A_2 oplus ldots oplus A_n = 0)。
在博弈过程中,任何局面显然都有两种情况:$A_1 oplus A_2 oplus ldots oplus A_n ne 0 $ 或 (A_1 oplus A_2 oplus ldots oplus A_n = 0).
1. 当(A_1 oplus A_2 oplus ldots oplus A_n ne 0) 时, 设此时(A_1 oplus A_2 oplus ldots oplus A_n = x(x > 0))。
该情况一定能够通过某种操作况变为情况二。
设将 (x) 的二进制表示下最高位的 (1) 在第 (k) 位。显然, (A_1, A_2, ldots, A_n) 中必然至少有一个数 (A_i) 的二进制表示下第 (k) 位也为 (1)。 显然有(A_i oplus x < A_i), 于是 (A_i - (A_i oplus x) > 0) ,因此,我们在该局面下将第 (i) 堆石子取走 (A_i - (A_i oplus x))个石子,第 (i) 堆石子的个数就为 (A_i - (A_i - (A_i oplus x)) = A_i oplus x) ,将其记为(A_i') 。此时,所有的石子的异或值为:
这样,我们就成功证明了第一种情况一定能变成第二种情况。
2. 当(A_1 oplus A_2 oplus ldots oplus A_n = 0) 时
在该情况下,无论进行任何操作,之后都会有(A_1 oplus A_2 oplus ldots oplus A_n ne 0) ,该情况在玩家操作后必然会变成情况一。 可以使用反证法来证明:
设该玩家在第 (i) 堆取走石子,(A_i) 被取成 (A_i') , 且 (A_1 oplus A_2 oplus ldots oplus A_i' ldots oplus A_n = 0) 。将该等式与 (A_1 oplus A_2 oplus ldots oplus A_n = 0) 异或得:
这就反映出, (A_i'= A_i),表明一个石子都没取,与“不能不拿”的题意矛盾。
因此,当先手(A_1 oplus A_2 oplus ldots oplus A_n ne 0)时,为情况一,该玩家一定能将该情况变为情况二,而后手无论如何操作,都会将情况二又变回情况一,于是先手又继续将情况一变为情况二......就这样,先手面临的一定会是情况一,后手永远面临情况二,而石子的总数不断减少,所以最后后手一定会面临最终必败局面。因此,Nim博弈先手必胜,当且仅当(A_1 oplus A_2 oplus ldots oplus A_n ne 0)
公平组合游戏ICG
若一个游戏满足:
- 由2名玩家交替行动;
- 在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关;
- 不能行动的玩家判负。
则称该游戏为公平组合游戏。
NIM博弈也属于公平组合游戏。常见的棋类游戏例如围棋都不属于公平组合游戏,比如围棋,因为玩家只能落黑子或白子,不符合条件2和3。
有向图游戏
给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿有向边进行移动,每次可以移动一步,无法移动者判负。该游戏被称作有向图游戏。
任何一个公平组合游戏都可以化为有向图游戏。把每个局面看成图中的一个节点,并且从每个局面向沿着合法行动能够到达的下一个局面连有向边。
Mex运算
设 (S) 表示一个自然数集合。定义 (text{mex}(S))为求出不属于集合 (S) 的最小自然数的运算,即:
SG函数
在有向图游戏中,对于每个节点 (x) 。 设从 (x) 出发共有 (k) 条有向边,分别到达节点 (y_1, y_2, ldots, y_k) , 定义 (text{SG}(x)) 为 (x) 的后继节点 (y_1, y_2, ldots, y_k) 的 (text{SG}) 函数值构成的集合再执行 (text{mex}) 运算的结果,即:
特别地,整个有向图游戏 (G) 的 (text{SG}) 函数值被定义为有向图游戏的起点 (s) 的 (text{SG}) 函数值, 即(text{SG}(G) = text{SG}(s)) 。
有向图游戏的和
设 (G_1, G_2, ldots, G_m) 是 (m) 个有向图游戏。定义有向图游戏 (G) , 它的行动规则是任选某个有向图游戏 (G_i) , 并在 (G_i)上行动一步。 (G) 被称为有向图游戏 (G_1, G_2, ldots, G_m)的和。
有向图游戏的和的 (text{SG}) 函数值等于它包含的各个子游戏 (text{SG}) 函数值的异或和,即:
定理:
有向图游戏的某个局面必胜,当且仅当该局面对应节点的 (text{SG}) 函数值大于 (0) 。
有向图游戏的某个局面必输,当且仅当该局面对应节点的 (text{SG}) 函数值等于 (0) 。
可以这样理解:
-
对于一个没有出边的节点,即最终必败局面,它的 (text{SG}) 函数值为 (0) 。
-
对于一个 (text{SG}) 函数值大于 (0) 的节点,对应必胜局面,表明它的所有后继节点中必然有一个节点 (text{SG}) 函数值为 (0) 。
-
对于一个 (text{SG}) 函数值等于 (0) 且有出边的节点,该节点对应必败局面,它的所有后继节点的 (text{SG}) 函数值都大于 (0) ,对应必胜节点。
因此,这里的2、3种节点,就类似于上面Nim游戏的1、2种情况,用类似的思路即可证明上述定理。
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!