关于组合游戏

来源:互联网 发布:阿里云服务器搭建云免 编辑:程序博客网 时间:2024/05/22 07:52

这几天初步了解了组合游戏和博弈,在这里写一个总结。

首先说说状态图。状态图,顾名思义就是将游戏的各个状态作为一个节点表示在图中。在状态图中存在两种状态。一种就是P-position(先手必败状态),一种就是N-position(先手必胜状态)。对于状态图存在几个结论:1.一个状态是必败状态当且仅当它的所有后继都是必胜状态。   2.一个状态是必胜状态当且仅当至少它有一个后继是必败状态。   3.没有后继的状态是必败状态。


然后总结一下几种游戏模型:

1.Chomp!游戏:有一个N*M的期盼,每次取走一个方给及其右边和上边的方格,拿到左下角的棋子者输,问先手必胜还是必败。

结论:除了1*1的棋盘,先手均为必胜。

证明:可以采用反证法。即假设存在后手必胜的走法,那么后手的这一个走法,先手可以提前走出,先手取得胜利,与假设矛盾。所以除了1*1的棋盘,先手必胜。

约数游戏:有N个数字,两人轮流选取一个数将它和它的约数去掉,去掉最后一个数的人赢。(结论与Chomp游戏类似,证明也可采用反证法。)


2.Ferguson游戏:有两个盒子分别装有N和M个石子,每次可以选取一个盒子,将里面的石子清空,并将·另一个盒子的石子移一些到这个盒子,最后使得两个盒子都有石子,不能移动者输。

结论:若N和M均为奇数,则先手输,否则先手胜。

证明:可以知道(1,1)为终态。采用分类讨论。对于当前的状态,存在这么三种(不考虑顺序):1‘(奇,奇);2’(奇,偶);3‘(偶,偶);对于(偶,偶)状态可以转变为对手为(奇,奇)的状态,且可以知道最后的状态在(奇,奇)和(奇,偶)中交叉转化。这样,我们知道(1,1)为(奇,奇)且必败,所以以为状态交叉转化,所以进行一轮游戏后双方的状态的性质是不会改变的,那么我们可以得出若当前状态N和M均为奇数,则先手必败,否则,先手必胜。


3.Nim游戏:有三堆火柴,每堆分别有a,b,c根,每次可以任意选取一堆火柴拿走一根及其以上的火柴(可以拿走整堆火柴),最终无法拿火柴者输。

结论:状态(a,b,c)为必败状态当且仅当a^b^c=0,否则先手必胜。

证明:证明什么的由于涉及神奇的位运算,还有数学归纳,所以就免了吧= =。。。


最后讲讲SG函数和定理。定义SG(x)=mex{S},其中S和x的后继的集合,mex的值为最小的未出现的非负整数。其中SG(x)=0时为必败状态。对于有多个局面的游戏的SG值为各个子游戏的SG值的Nim和,即为各个子游戏的SG值的异或值。

其中,单堆Nim游戏的SG函数满足SG(x)=x。证明:因为当先前的x全部去掉,则其不存在后继,其余的去掉小于x的存在后继,对于当前状态SG(x)为mex{S},所以SG(x)=x。

以上就是蒟蒻的总结= =。

0 0
原创粉丝点击