博弈问题研究

简介SG函数:

       SG函数是对游戏中每个节点的评估函数。它的定义如下:

              F(v)=mex{f(u)图中有一条vu的边}

       其中,mexminmal excludant)是定义在整数集合上的操作。它的自变量是任意整数集合,函数值是不属于该集合的最小自然数。

       

       事实上,所有的SG-组合游戏都存在相应的游戏图,我们完全可以根据游侠的拓扑关系来逐一算出每个状态点的SG函数(事实上我们只需要知道该节点的SG函数值是否为0.这样,我们就可以知道对于某一个状态,是先手必胜局还是先手必败局。对应问题:

经典SG问题:

       取石子游戏:

桌面上有N堆石子,游戏者轮流取石子。每次只能从一堆中取出任意数目的的石子,但是不能不取。      

(1)   最后取走石子的获胜。

(2)   最后取的失败。Pku 3480

(3)   只能取固定数目的额石子。(回到问题的王道,求SG函数)hdu 1536

SG问题的性质:

对于任意局面如果它的SG函数为0,那么它的任意一个后继局面SG值不为0。对于任意的局面如果它的SG值不为0,那么它一定有一个后继局面的SG值为0

(1)              这个问题的SG函数值就等于石子的数目。原因很简单,取石子的时候,除了0个石子,都能拿,也就是除了了n0n-1都是该状态的前继。所以SGn。然后就是多个石子堆的时候,前一个为0,那么下一个状态一定为1。反之亦是如此。故当所有石子的异或结果为0时,为先手胜。

(2)              这个是anti-sg问题。可以分析。

(a)     当所有石子均为1时,先手胜,石子数目必为偶数SG0

(b)    SG不为0时,若只有一堆石子,数目大于1,先手必能采取最有决策。必胜。若有多对石子,先手将SG变为0(因为SG0,是先手必败局)。

(c)     SG0时。先手决策完后,必定至少有一堆石子大于1,且SG不为0,将会进入先手必胜局(先手必败)。

所以,当SG0max(num)1的时候先手,SG不为0max(num)大于1时,先手必胜。

3        这个问题就是求SG函数。遍历求对应节点的前驱。然后从前向后遍历求SG函数值。

参考:贾思豪   组合游戏略述 ——浅谈SG游戏的若干拓展及变形

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值