sg函数的理解

本文介绍了博弈论中SG函数的概念及其应用。SG函数通过计算最小的不属于集合的非负整数来判断游戏的输赢状态。文章通过石子游戏的例子详细解释了SG函数的计算方法,并介绍了如何利用SG函数解决Nimm问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sg,是用来判断博弈问题的输赢的,当sg值为0的时候,就是输,不为0就是赢;

在这之前,我们规定一个对于集合的操作mex,表示最小的不属于该集合的非负整数。 举几个栗子:mex{0,1,2}=3,mex{1,2,3}=0,mex{0,1,3}=2;

而我们要求的sg的值就和这个有关,定义SG函数:SG(x)=mex{ SG(y) | y是x的后继,也就是经过操作可以取得的剩下值 }。

举个栗子:比如一堆石子,我们可以取任意个,那么x个石子的石子的sg值是多少呢?

可以知道,0个石子sg为0,一的时候我们可以取一个,剩下0,的sg是0,那么mex(0)就是1,所以1的sg为1。

递推下去当为x的时候我们可以取1~x个,那么剩下的值石子个数就是x-1到0个,他的mex(...)就是x,所以这个例子的x值得sg值就是x;

那么,sg可以为我们做什么呢?比如Nimm问题,多堆的时候,我们只需要将每个sg值亦或一下,如果是0就会输,不是就赢,也就是将每堆的数量亦或就可以了

转载于:https://www.cnblogs.com/wzl19981116/p/9370380.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值