博弈论的一些证明

博弈论模型

非模型题博弈论题单

第一题

对游戏和必胜必败局面的证明

显然,当所有有向图的SG都为0的时候,游戏和的SG也为0

当游戏和的SG不为0的时候,设此SG为x,x二进制下最高位1的位置为k,那么肯定至少存在一个有向图的SG的第k位也是1,设这个有向图的SG为y,那么这个有向图此时可以移动的后继显然0~y-1都出现过,所以可以将这个有向图的SG变为y xor x,之后游戏和的SG就变为了0

当游戏和的SG为0时,根据NIM游戏的证法,利用反证法即可证明无论怎么移动,一定会使游戏和的SG不为0

综上所述,当游戏和的SG不为0的时候,一定可以移动而且可以使游戏和的SG变为0;当游戏和的SG为0的时候,接下来不一定可以移动,即失败,或者可以移动,但是SG一定不会为0。所以前者为必胜,后者为必败

对anti-nim游戏定理的证明

主要是对论文的补充

第一种情况不说了,只说明其他情况

为什么当SG不为0时,若有两堆及以上的石子数目大于1,先手将游戏的SG变为0就可以让游戏必胜?我们要是证明了游戏的SG为0时先手必败就行了?下面证明游戏的SG为0时先手必败

仔细阅读论文对SG为0时先手必败的证明,当SG为0时,先手操作完后就一定会回到当SG不为0的情况,而不可能胜利(当然也不会失败),而当SG不为0的时候,要么只有一堆石子多于1了,那么先手必胜了;要么有两堆及以上的石子数目大于1,但我这个时候先手又可以把游戏代入SG为0的局面。经过若干次操作,一定会判胜负,所以证明就完毕了

可以看看对应附录下的思维导图,更加清晰

对multi-SG游戏的证明

感慨良多,因为下面的东西真的都是我自己想出来的

首先,先给出multi-SG游戏的定义,他是一个DAG,每个节点有明显的后继节点(即与普通的有向图游戏一样),也可以选择把节点分解成若干个节点(这个分解可以有很多种分的方法,假设能够枚举),每个节点都是单独的有向图游戏(这个有向图游戏的连边只与分解出的节点本身有关系,因为可能有不同的节点可以分解出某一个相同的节点;其实也没有必要只与分解出的节点本身有关系,只要我们能够算出分解出的每个节点的SG就好了,当然如果是前面这种情况我们就可以利用记忆化搜索了),之前的那个源节点代表的有向图游戏就不再考虑了,最后不能行动(包括走一步和分解)的人失败

同样的,还是对每一个节点定义一个SG,若一个节点既没有明显的后继节点,也不能被分解成若干个节点,那么他的SG就是0

对一个普通的节点的SG,定义为mex(其所有后继节点的SG以及所有分解情况的SG)

这里某一种分解情况的SG是其分解出来节点的SG的异或和

比如说一个节点有三个明显的后继节点,SG分别为2,3,5;也可以被分解成四个节点,SG分别为6,7,8,9;还可以被分解成三个节点,SG分别为1,2,3.那么这个节点的SG=mex(2,3,5,(6 xor 7 xor 8 xor 9),(1 xor 2 xor 3))

先手胜负情况的结论其实和普通的有向图游戏和的结论是一样的,即当游戏和SG为0时先手必败,不为0时先手必胜,下面是证明

首先,当所有的节点都没有明显的后继节点且不能继续被分解时,游戏和SG显然为0,此时先手必败

当游戏和SG不为0时,设此时游戏和SG为x(注意这里是游戏和的SG,不是某个节点的SG),一定存在一个节点的SG不为0且此SG最高位的1与x最高位的1是相同的,显然可以通过操作这个节点(不论是走一步还是分解,注意分解操作也是可以的哦,看看对分解SG的定义)来让x变为0

当游戏和SG为0时,如果此时先手能够行动,无论他如何操作节点,肯定都会使游戏和SG变为非0(注意分解SG的定义!!!)

证毕

下面是例题,可以结合理解:剪纸游戏HDU 3032

对阶梯博弈的证明

先阅读这篇文章

一些对这篇文章证明的补充:奇数堆异或和不为0,最后的状态就是奇数堆都没有石子了,偶数堆还有一些石子,这个时候轮到最开始的后手先手,那么无论后手怎么移动,最开始的先手只需要把后手移动的石子移动到前一个偶数堆即可。由于最后胜利时是要把第一(奇数)堆的石子移动到第零(偶数)堆,所以最开始的后手是不可能胜利的,只有先手才能胜利;最开始奇数堆异或和为0可以自己证明一下先手必败

例题:acwing 236(小小的转化)

渐进NIM游戏

哈哈这个是我自己定义的

定义:有N堆石头,每堆石头有\(A_{i}\)个,两人轮流取石头,最少取一个,而且只能按顺序取,即从第一堆开始取,每一堆取完了才能开始取下一堆,问先手是否必胜

当N=1时,先手显然必胜

若N大于1,从最后一堆依次考虑,设f[i]表示若从第i堆开始取先手是否必胜,若为1则先手必胜,若为0先手必败

那么若第i堆只有一颗石头,那么f[i]=f[i+1]^1

若第i堆有大于一颗石头,f[i]=1。若f[i+1]为1,则先手把第i堆取到还剩一个即可;若f[i+1]为0,则先手取完第i堆即可

最后看f[1]即可

例题。看看我的代码就知道怎么转换了。当然也可以看看这篇题解(思路跟蚕食游戏一样)

威佐夫博弈(这里有些证明的补充没写完)(代码见洛谷对应题目的提交)

见这篇文章

为啥第\(i\)个奇异局势的差值是\(i\),每一个状态的都是以前没有在奇异局势里面出现过的最小整数?

首先是一个很显然的引理:对任意一个数字,最多只会参与一个奇异局势的形成

因为如果一个数字参与了两个奇异局势的形成,那么我先手就可以把其中一个奇异局势变成另一个奇异局势,即从先手必输变到了先手必输,这是不可能的

还有一个:不可能存在两个差值相同的奇异局势

因为我先手也可以从其中一个奇异局势变成另外一个奇异局势(同时取即可)

然后我们用数学归纳法证明上述命题

假设我们已经知道了前\(i\)个奇异局势

根据第一个引理,下一个奇异局势的较小数字不可能是已经出现过了的数字

在没出现过的数字中,我们找到最小的数,设为\(x\)

我们直接考虑\((x,x+i+1)\)这对数字。如果我们能够证明其是奇异局势,那么根据第二个引理,差值为\(i+1\)的奇异局势就是\((x,x+i+1)\)

如果我们同时取,那么差值显然不变,但是较小数字就会是前面已经出现过的数字\(j\);然后根据第一个引理,\((j,j+i+1)\)一定不会是奇异局势,因为\(j\)参与形成了另一个差值不为\(i+1\)的奇异局势,所以\((x,x+i+1)\)就输了

如果我们取一个:如果取的是\(x\),那么差值增大,但是\(x\)变成了之前出现过的数字,根据第一个引理,\((x,x+i+1)\)就输了;如果取的是\(x+i+1\),那么差值减小,根据第二个引理,\((x,x+i+1)\)就输了

综上所述,\((x,x+i+1)\)为第\(i+1\)个奇异局势

证毕

约数NIM博弈

自己取得名字

定义:有一堆个数为n的石子,每次能取n的约数个石子(除了n),问先手必败还是必胜

答案:偶数必胜奇数必败。因为奇数的任意一个约数都是奇数,然后就会回到偶数;偶数取一个就会回到奇数。由于1是必败态,2是必胜态,故以上结论得证

斐波那契博弈:

设石子数n为\(f[i]\)(斐波那契数列第i项)

\(i=2\)时,\(n=2\),显然先手只能取一个,后手必胜。

\(i>2\)时,假设我们已经证明\(n=f[i-1]\)时的结论是成立的,那么\(f[i]=f[i-1]+f[i-2]\)

我们将这一堆石子分成\(f[i-1]\)\(f[i-2]\)两部分来看。

假设先手第一次取\(x\)个,后手第一次取\(y\)个。

如果\(x<\frac{f[i-2]}{3}\),因为\(n=f[i-2]\)时已经证明后手一定能取到\(f[i-2]\)个中的最后一个,所以问题转化成了有\(f[i-1]\)个石子,谁能取到最后一个,这个也已经证明后手必胜,所以当\(x<\frac{f[i-2]}{3}\)时,后手必胜。

如果\(x>=\frac{f[i-2]}{3}\)\(x\le f[i-1]\),则这\(f[i-2]\)个中剩余的小于\(2x\)个,后手可以直接取完,那么后手取了\(f[i-2]-x\)个,即\(y\le\frac{2f[i-2]}{3}\)。我们比较一下\(\frac{2f[i-2]}{3}\)\(\frac{f[i-1]}{2}\)的大小即比较\(4*f[i-2]\)\(3*f[i-1]\)的大小。因为\(3*f[i-3]>2*f[i-3]>f[i-2]\),所以\(3*f[i-3]+3*f[i-2]>4*f[i-2]\)\(3*f[i-1]>4*f[i-2]\),也就是说在后手取完\(f[i-2]\)那一堆石子后,先手不能取完剩下的\(f[i-1]\)个石子,问题就有变成了有\(f[i-1]\)个石子时的情况。

如果\(x>f[i-2]\),因为\(f[i-1]<2*f[i-2]\),所以后手能取走剩下所有的。

综上三种情况可以推知,当\(n=f[i-1]\)时结论成立,那么\(n=f[i]\)时结论必然成立。

posted @ 2023-09-10 22:15  最爱丁珰  阅读(22)  评论(0编辑  收藏  举报