博弈论学习

硬币游戏1:给x个石子,然后给k个数字,首先取完所有石子的获胜。

可得x=0时,为必败态;如果j-ai为必败态的话,j即为必胜态;如果对于任意的j-ai都是必败必胜态的话,那么j就是必胜态。可用动态规划从小到大求出胜负态,这样就能知道谁会获胜。

像这样,通过考虑各个壮态的胜负条件,判断必胜态和必败态,是有胜败的游戏的基础。

A Funny Game:给定n枚硬币,围成一个圈,每次可以取走一或两枚硬币,问谁最后能赢。

事实是,除了特判条件下,先手的必输。在这类游戏中,作出对称状态后在完全模仿对手的策略是常常有效的。

综上所述,要灵活考虑当前游戏的胜负状态,最优策略往往是唯一的,对胜负态提前规定好的游戏来说。

Nim(又叫Grundy值,国内常说SG函数)

取石子游戏:给定n堆石子,每堆各有ai个石子,轮流从非空堆中取走至少一个石子,谁最终获胜?

该游戏的策略是众多游戏的基础,要判断游戏的胜负用异或运算就好了。(从二进制的角度考虑问题)。可以证实必败态只能转移到必胜态,必胜态也总是能转移到必败态。(注意,两者有一定区别)

Grundy数

硬币游戏2:给定n堆石子,然后k个数字。谁赢?先手还是后手?

Grandy值:是任意一步所能转移到的Grandy值以外的最小非负整数。这是一堆石子的grandy值求法,可以将其看作Nim中的一个石子堆。

因此,ans=各堆石子的grandy值的异或。

其实就是由于转移条件的限制,然后将新的转移条件用Grandy值封装一下转换一下。

核心还是Ni m.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值