注:本文内容基于作者在“无处不在的数学”的课上展示,并对其有所增删
简述
主要研究问题为chomp!游戏。
本文首先给定一个游戏场景,并以此为例引入组合游戏等相关概念,并通过简单的逻辑推理对胜负关系进行分析并得到相关结论,接下来对该问题进行拓展与变形,最终将其抽象为较为规范的数学问题并得到一个一般性的结论。
引例
假设你穿越到了未来,看到了两个机器人正在玩一个游戏,游戏规则是这样的:
游戏一开始有一个 n ∗ m ( n , m ≥ 1 ) n*m(n,m\ge 1) n∗m(n,m≥1)的方格图,两名玩家轮流进行操作,每次操作的玩家要选择一个未删除的方格,将它和在它左上角的方格全部删掉
谁删掉右下角的方格谁就输了。
你能否预测这场游戏的胜负结果?
概念
首先,在博弈论上我们可以将这场游戏归为公平组合游戏
其中公平组合游戏满足以下规则[1]:
(1)由两名玩家交替行动,且这两个人的决策都对自己最有利;
(2)在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关;
(3)无论二者如何做出决策,游戏可以在有限步内结束,且不会出现平局。
解释一下,第一条显然满足;由于没有类似“其中一名玩家可以选两个格子删除”的“耍赖”规则,所以第二条成立;而且每次操作后方格图至少减少一个格子,方格图中总格子数有限,所以一定会出现游戏结束的情况且不存在平局关系,因此第三条也成立。
接着我们给出策梅洛定理[2](Zermelo’s theorem),其表明在二人参与的游戏/博弈中,如果满足:
(1)游戏的步骤数有限
(2)信息完备(这里的信息完备指二人都了解游戏规则,了解游戏曾经所发生过的信息)
(3)不会产生平局
(4)游戏本身具有确定性,不会加入随机因素
则先行一方有必胜策略,或者后行一方有必胜策略。
注意到该定理的四项条件显然适用于该游戏,而我们前面提到两名玩家都会采取最优策略,那么对于有必胜策略的任一方,它此时所面对的游戏局面对他而言一定是必胜的,所以最后我们引入关于局面状态的定义:
必胜态§:任一后继局面为必败态,则当前局面为必胜态。
必败态(N):所有后继局面均为必胜态,则当前局面为必败态。
其中所有游戏局面均属于 { P , N } \{P,N\} {P,N}中的任一种。
简单来说,如何理解这一定义?
在本游戏中,当方格图被删空时,此时轮到的玩家获胜,所以当前局面为(初始)必胜态;
而对于一个未删空的方格图,玩家不同的选择会使得操作后留给对手的方格图不同,如果所有可能留给对手的局面都是必胜态,那么当前局面就是必败态,比如此时只有1个格子;
相反的,如果在可能留给对手的局面中,至少有一个是必败态,那玩家使用最优策略就一定会选择留给对手必败的局面,那么当前局面就是必胜态。
介绍完相关概念和定理,下面我们先给出结论
结论
当 n = m = 1 n=m=1 n=m=1时,先手玩家必败,否则先手玩家必胜
分析证明
n
=
m
=
1
n=m=1
n=m=1时显然先操作的玩家会输
而当这一条件不满足时,无论先手玩家的第一次选择怎样操作,最左上角那个方格是一定会被删掉的
因此考虑使用反证法:
当 n , m n,m n,m不同时为1时,如果存在某种方格图能使先操作的玩家A必输,那么就假设先手玩家第一次就取左上角的方格(因为此时为必败态,所以先手玩家如何操作都会输),由于后手玩家B必胜,此时B会选择某个方格x,使其自身和左上角的方格全部删除,然后局面一定还是A必输的,否则B就输了。
我们回到第一次操作,A同样选择x(规则(2)使得A也可以选择格子x),那么根据上面的分析,此时对于B而言是必输局面,与假设矛盾,因此假设不成立。
经过分析,这个问题得到较圆满的解决,但遗憾的是,我们无法给出一种具体的操作策略来供必胜玩家使用,只能证明存在对应的必胜策略。
接下来我们看几个扩展问题
拓展1
有一个 n × m × l n×m×l n×m×l的立方体,每个位置上放一块棋子,两名玩家轮流每次选择一枚棋子 ( a , b , c ) (a,b,c) (a,b,c),并取走立方体中所有符合条件的棋子 ( i , j , k ) (i,j,k) (i,j,k),要求 a ≤ i ≤ n ∩ b ≤ j ≤ m ∩ c ≤ k ≤ l a\le i\le n∩b\le j\le m∩c\le k\le l a≤i≤n∩b≤j≤m∩c≤k≤l,最后不能操作的玩家算输,假设玩家都采取最优策略,求胜负关系
这实际就是上面问题的三维版本,使用类似分析可得当 p = q = r = 1 p=q=r=1 p=q=r=1时先手必败,否则先手必胜
同样的,我们可以将问题推广到n维,得到的结论是类似的
拓展2
一个集合 S = { 1 , 2 , 3 , 4 , . . . , n − 1 , n } S=\{1,2,3,4,...,n-1,n\} S={1,2,3,4,...,n−1,n},其中 n ≥ 1 n\ge 1 n≥1,两名玩家轮流操作,每次操作选择一个数 x ∈ S x\in S x∈S,并删除目前S中存在的所有x的约数(包括x),谁不能操作( S = ∅ S=\emptyset S=∅)时谁就赢了,假设玩家都采取最优策略,请预测胜负关系。
类似于上面的分析,我们发现 S S S中的1就是那个“左上角”格子,因为1是任何正整数的约数。
所以结论就是 n = 1 n=1 n=1时先手输,否则先手胜。
拓展3
给定一棵n个节点的有根树,起始每个节点均为白色,两名玩家轮流操作,每次操作选择一个白色节点,将该节点及其祖先均染为黑色,谁不能操作(所有节点均为黑色)时谁就赢了,假设玩家都采取最优策略,请预测胜负关系。
结论与前面两个问题类似,这里的“根”就是“左上角”格子,但这里的问题是更为抽象化的(涉及离散数学中“有根树”的概念),而在接下来的讨论中我们会给出更为一般化的结论。
一般化结论
我们将上面的结论推广至有限偏序集,即:
游戏在一个初始存在最大元素max的有限偏序集 ( S , ≤ ) (S,\le) (S,≤)上进行,两名玩家轮流操作,每次选择 S S S中的元素 x x x,并令新的集合 S ′ = S − T S'=S-T S′=S−T,其中 T = { y ∣ x ≤ y , y ∈ S } T=\{y|x\le y,y\in S\} T={y∣x≤y,y∈S}(即T由所有大于等于x的元素构成),当轮到某位玩家操作时,若 S = ∅ S=\emptyset S=∅,则该玩家输。
结论: ∣ S ∣ = 1 ⇔ |S|=1\Leftrightarrow ∣S∣=1⇔先手必败
∣ S ∣ = 1 ⇒ |S|=1\Rightarrow ∣S∣=1⇒先手必败,显然正确
当 ∣ S ∣ > 1 |S|>1 ∣S∣>1时,我们同样通过反证法来证明:
假设先手必败(即后手必胜),则先手就在第一次操作中选择元素max,此时
S
′
=
S
−
{
m
a
x
}
S'=S-\{max\}
S′=S−{max},而此时由于后手存在必胜策略,因此后手会选择
x
0
∈
S
′
x_0\in S'
x0∈S′,留给先手玩家必败局面
S
1
=
S
′
−
{
y
∣
x
0
≤
y
,
y
∈
S
′
}
S_1=S'-\{y|x_0\le y,y\in S'\}
S1=S′−{y∣x0≤y,y∈S′}
然而回到第一次操作,此时
x
0
∈
S
x_0\in S
x0∈S,先手玩家选择
x
x
x,那么
S
2
=
S
−
{
y
∣
x
0
≤
y
,
y
∈
S
′
}
S_2=S-\{y|x_0\le y,y\in S'\}
S2=S−{y∣x0≤y,y∈S′},由于
S
1
=
S
2
S_1=S_2
S1=S2,因此后手玩家处于必败局面,与前面假设矛盾,所以此时先手必胜。
这样我们就得到了以上更为接近数学语言描述的结论。
附录:关于有根树的概念[3]
有根树(tree)是包含n个结点的有限集,其中:
1.每个元素称为结点(node)
2.有一个特定的结点被称为根结点或树根(root)
3.除根结点之外的其余数据元素被分为
m
m
m个互不相交的集合
T
1
,
T
2
,
…
…
T
m
T_1,T_2,……T_m
T1,T2,……Tm,其中每一个集合
T
i
(
1
≤
i
≤
m
)
T_i(1\le i \le m)
Ti(1≤i≤m)本身也是一棵树,被称作原树的子树(subtree)。
树也可以这样定义:树是由根结点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或称为树根。
附录:关于偏序集的概念
我们对于一个集合 S S S中的元素规定一种二元关系 R R R,如果该关系对于该集合上的元素满足自反性,反对称性和传递性,那么称 R R R为集合 S S S上的偏序关系,一般记作 ( S , ≤ ) (S,\le) (S,≤)(关系 R R R写作 ≤ \le ≤),对于 a , b ∈ S a,b\in S a,b∈S,我们会写成 x ≤ y x\le y x≤y
1.自反性: ∀ x ∈ S \forall x\in S ∀x∈S,均有 x R x x\ R\ x x R x.
2.反对称性: ∀ x , y ∈ S \forall x,y\in S ∀x,y∈S,如果 x R y x\ R\ y x R y与 y R x y\ R\ x y R x均成立,那么 x = y x=y x=y.
3.传递性: ∀ x , y , z ∈ S \forall x,y,z\in S ∀x,y,z∈S,如果 x R y x\ R\ y x R y与 y R z y\ R\ z y R z均成立,那么 x R z x\ R\ z x R z也成立
生活中较为常见的大于等于,小于等于,等于都属于偏序关系
偏序关系 ≤ \le ≤与实数集 R R R上的 ≤ \le ≤(小于等于)并不一样,而通过定义,我们可以将小于等于归为偏序关系的一种。
∀ x ∈ S \forall x\in S ∀x∈S, x ≤ m a x x\le max x≤max均成立,则我们称 m a x max max为偏序集 ( S , ≤ ) (S,\le) (S,≤)的最大元素。
正文介绍的相关问题都满足这种偏序关系,如删格子游戏中x,y代表方格, x ≤ y x\le y x≤y表示y在x的左上方,而最大元素就是左上角的方格;约数游戏中 x ≤ y x\le y x≤y表示y为x的约数,而最大元素就是1.
小结
文中介绍的问题一般被称为chomp!问题,对该问题的研究讨论属于组合博弈论的范畴,而本问题仅是分析方法较为简单,无需较多数学工具的一类问题。
组合博弈论是博弈论的一个分支,它的主要研究对象是资讯完全、轮流行步且不带几率成分的二人博弈。
除了chomp!游戏外,还有很多组合游戏有着巧妙的数学分析与逻辑证明,和我们的生活也存在着许多联系。
希望本文能让大家更多地了解和体会到组合游戏的精彩与有趣。
参考文献
[1]王晓珂,《解析一类组合游戏》,国家集训队2007论文
[2]Ernst Zermelo,“Über eine Anwendung der Mengenlehre auf die Theorie des Schachspiels”(1913)
[3]百度百科,树(数据结构名词)