博弈论的一些证明

博弈论模型

非模型题博弈论题单

第一题

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

显然,当所有有向图的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堆石头,每堆石头有Ai个,两人轮流取石头,最少取一个,而且只能按顺序取,即从第一堆开始取,每一堆取完了才能开始取下一堆,问先手是否必胜

当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是必胜态,故以上结论得证

斐波那契博弈:

image

image

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

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

i>2时,假设我们已经证明n=f[i1]时的结论是成立的,那么f[i]=f[i1]+f[i2]

我们将这一堆石子分成f[i1]f[i2]两部分来看。

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

如果x<f[i2]3,因为n=f[i2]时已经证明后手一定能取到f[i2]个中的最后一个,所以问题转化成了有f[i1]个石子,谁能取到最后一个,这个也已经证明后手必胜,所以当x<f[i2]3时,后手必胜。

如果x>=f[i2]3xf[i1],则这f[i2]个中剩余的小于2x个,后手可以直接取完,那么后手取了f[i2]x个,即y2f[i2]3。我们比较一下2f[i2]3f[i1]2的大小即比较4f[i2]3f[i1]的大小。因为3f[i3]>2f[i3]>f[i2],所以3f[i3]+3f[i2]>4f[i2]3f[i1]>4f[i2],也就是说在后手取完f[i2]那一堆石子后,先手不能取完剩下的f[i1]个石子,问题就有变成了有f[i1]个石子时的情况。

如果x>f[i2],因为f[i1]<2f[i2],所以后手能取走剩下所有的。

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

posted @   最爱丁珰  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示