对SG函数(Sprague-Garundy函数)及其应用的简单解释与证明

前置知识:Nim博弈(还没接触过的可以顺便学一学把模板题做了,本文求简洁,不再解释此知识)
参考文章:博弈论 SG函数(需要更详细的解释的可去此处)

正文:

提出问题:给定多个有向无环图,每个图有一个起始顶点,起始顶点上有一枚棋子,两名选手交替地选择一个图将其上的那枚棋子沿有向边进行移动,无法移动者判负。

接下来分析一个图的情况:
首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。
对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Garundy函数g如下:g(x)=mex{ g(y) | y是x的后继 }
我们令各个结点x的值为g(x)。 例如:
在这里插入图片描述

可推得g(x)有如下性质:
(1)当g(x)=0,其后继结点都非0;
(2)当g(x)>0,其后继结点中都存在所有0~g(x)-1的点;

起始结点为0的情况,先手将使棋子走向一个非0结点,则后手必能使棋子继续走向一个为0的结点。先手者无可奈何,无法使棋子结点值改变。
(若先手必胜,先手不必在这里走;若后手必胜,先手也无法改变什么,局势尽在后手掌握之中。于是该情况可以不予理会了。)
在这里插入图片描述

起始结点为k(k>0)的情况,先手能使棋子走向0 ~ k-1值任意一个结点。
(如果存在值大于k的后继结点,先手走向该后继结点结点后,后手能继续走向该后继结点的一个值也为k的后继结点,所以先手者无法使棋子结点值变大,只能使其走向0 ~ k-1值的结点。若先手必胜,不会走大于k的点;若后手必胜,先手也无法改变什么,局势尽在后手掌控之中。于是该情况可以不予理会了。)
在这里插入图片描述

即可转化为Nim博弈问题,从k个石子的堆里取石子,使堆中石子数变为0~k-1。

 `Conclusion(Nim博弈):
 记每个堆的初始结点值为t(i),则
 if	t(1)^t(2)^...^t(x) = 0	:	先手必败; 
 else	先手必胜`;

此类似问题都可用SG函数解决,其实际上是个解决问题的工具。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值