博弈论基础和SG函数

 Bashgame,Wythoffgame,Nimmgame都是ICG游戏的一种即:

1.游戏有两个人参与,二者轮流做出决策。且这两个人的决策都对自己最有利。

2.当有一人无法做出决策时游戏结束,无法做出决策的人输。无论二者如何做出决策,游戏可以在有限步内结束。

3.游戏中的同一个状态不可能多次抵达。且游戏不会有平局出现。任意一个游戏者在某一确定状态可以作出的决策集合只与当前的状态有关,而与游戏者无关。

总的来说就是两个人做选择,每轮一个人选择一次(固定顺序),最后谁先选择不了就失败

必胜态必败态

定义P-position与N-position

P-position:必败态(简记为P),即Previous-position,你可以直观的认为处于这种状态的人一定会输

N-position:必胜态(简记为N),即Next-position,你可以直观的理解为处于这种状态的人一定会赢

这仅仅是最直观的定义

更严谨的定义为:

1,无法移动的状态(即terminal-position)为P  

2,可以移动到P的局面为N  

3,所有移动都会进入N的局面为P  

SG函数

1,SG() = 0 是必败态,SG() != 0是必胜态

2,SG(x) = n 表示 x 有 n 种到达SG() != 0 的点的情况

mex()的定义:一个集合中出现的最小非负整数。例如mex({0,2,3}) = 1;

而SG函数的重要定义是:SG(x) = mex(SG(y1),SG(y2),……)(yi是所有的x的后继节点的集合)

                                        {  如果没有后继则:SG(x) = 0;(其实不用管,对空集合求mex就是0)}

通过这样就可以求出SG是否为0,如果为0就是必败态

上图可以简单看出取石头时不同N的SG函数值

构建SG函数步骤:

1,将后续可能的情况加入set中;

(一共有一堆石子,一次拿1-3个,当还剩7个石子时就行该加入{SG(4),SG(5),SG(6)})

2,将mex(set<>)存入数组dp中

3,dp中就是SG的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值