博弈论入门

博弈论

有向图游戏

Nim 游戏

Nim游戏的定义是,给定n堆石子,两个玩家去交替的拿石头,每次只能拿某一堆的石头,如果此时有一个玩家无法进行这个游戏了,则游戏结束。为了解决这个问题,比较直接的会先想到一个类似于DP的思路,考虑当前每个状态,去将其划分为两个状态,这里我们定义为P:N:,将现在的Nim游戏看作是一个有向图上进行的过程,每个结点就是现在游戏的状态(还剩多少堆,每堆还有多少个),直观的去想,出度为0的点可以直接成为P状态,然后我们考虑能走到最后状态的结点,是不是一定就是N了,因为一次操作可以直接让其走到必败,所以我们就可以类似递归的去定义,如果当前结点,他能走到的点有P状态,则他为N状态,否则为P状态。

但这样递归的定义复杂度是爆炸的,然后就有了一个神奇的定理,如果当前所有石子堆数异或和不为0,则是必胜态,否则则为必败态,简单证明,全为0的时候异或和也同样为0,如果此时不为0,所以他一定是某几个二进制位产生了奇数个1,我一定可以通过去操作某一堆来得到一个答案,把奇数个1给抵消掉,这样就走到0了。所以转移就成立了。

SG函数

通过Nim游戏,我们可以引入SG函数。把Nim游戏一般化,不要去思考什么堆数,现在就是在一个有向图上做游戏,终点结束游戏,定义终点值为0,为必败,我们可以计算每个结点的mex值,现在也将游戏分为两个状态,一:mex=0,此时能走到的点不存在必败态,所以必败。反之大于0说明存在一个子结点mex=0,所以必胜。

现在我们把这个问题进一步复杂化,假设只是有一个无向图,而是好多个无向图,每个图上有一个棋子,表示初始状态,那我们怎么确定是否存在必胜必败关系呢?我们可以对一个有向图先去考虑这个问题,假设一个棋子的SG值为k,说明 他的能走到的结点里,mex包括了0,1,2,...,k1,这不就是Nim游戏,n堆石头,每次可以拿走一些,变成比他小的值,所以结论一样,异或和大于0必胜。

posted @   zwhqwq  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示