博弈论的一些证明
博弈论模型
非模型题博弈论题单
对游戏和必胜必败局面的证明
显然,当所有有向图的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的定义!!!)
证毕
对阶梯博弈的证明
先阅读这篇文章
一些对这篇文章证明的补充:奇数堆异或和不为0,最后的状态就是奇数堆都没有石子了,偶数堆还有一些石子,这个时候轮到最开始的后手先手,那么无论后手怎么移动,最开始的先手只需要把后手移动的石子移动到前一个偶数堆即可。由于最后胜利时是要把第一(奇数)堆的石子移动到第零(偶数)堆,所以最开始的后手是不可能胜利的,只有先手才能胜利;最开始奇数堆异或和为0可以自己证明一下先手必败
例题:acwing 236(小小的转化)
渐进NIM游戏
哈哈这个是我自己定义的
定义:有N堆石头,每堆石头有
当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]即可
例题。看看我的代码就知道怎么转换了。当然也可以看看这篇题解(思路跟蚕食游戏一样)
威佐夫博弈(这里有些证明的补充没写完)(代码见洛谷对应题目的提交)
见这篇文章
为啥第
首先是一个很显然的引理:对任意一个数字,最多只会参与一个奇异局势的形成
因为如果一个数字参与了两个奇异局势的形成,那么我先手就可以把其中一个奇异局势变成另一个奇异局势,即从先手必输变到了先手必输,这是不可能的
还有一个:不可能存在两个差值相同的奇异局势
因为我先手也可以从其中一个奇异局势变成另外一个奇异局势(同时取即可)
然后我们用数学归纳法证明上述命题
假设我们已经知道了前
根据第一个引理,下一个奇异局势的较小数字不可能是已经出现过了的数字
在没出现过的数字中,我们找到最小的数,设为
我们直接考虑
如果我们同时取,那么差值显然不变,但是较小数字就会是前面已经出现过的数字
如果我们取一个:如果取的是
综上所述,
证毕
约数NIM博弈
自己取得名字
定义:有一堆个数为n的石子,每次能取n的约数个石子(除了n),问先手必败还是必胜
答案:偶数必胜奇数必败。因为奇数的任意一个约数都是奇数,然后就会回到偶数;偶数取一个就会回到奇数。由于1是必败态,2是必胜态,故以上结论得证
斐波那契博弈:
设石子数n为
当
当
我们将这一堆石子分成
假设先手第一次取
如果
如果
如果
综上三种情况可以推知,当
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构