组合博弈算法笔记

在牛客的寒假训练营里做到了一道组合博弈的题,在看了无数篇博客加自己的模拟后终于理解了SG函数的意义,特此来记录一下,当作是笔记。

SG函数理解

这里只是将个人对SG函数的理解记录一下,至于组合博弈的其他知识点就不在这里赘述了。
定义: SG(x)=mex(SG(y1),SG(y2),…) y为x的后继状态 mex表示没有出现过的最小的非负整数
就以众多教程里所用的取石子游戏为例吧。
有5个石子,每次可以取1,3,4个石子,两个人轮流取,如果到谁那石子取完了就算输。如果用SG(x)来表示输赢情况的话,当SG(x)==0时表示必输,否则必赢,至于为什么,在后面的例子里会作解释。

  • 首先SG[0] = 0 没有石子的时候肯定输了
  • SG[1] = mex( SG[0] ) = 1 这个状态必赢
  • 再看SG[2] = mex( SG[1] ) = 0 这个状态必输 因为2只能到1 而1是必赢态,相对而言2就是必输态
  • SG[3] = mex( SG[2], SG[0] ) = mex{ 0, 0 } = 1; 必赢 因为2是必输态
  • SG[4] = mex{ SG[3], SG[1], SG[0] } = mex{ 1, 1, 0 } = 2; 必赢 因为0是必输态
  • SG[5] = mex{ SG[4], SG[2], SG[1] } = mex{ 2, 0, 1 } = 3; 也是必赢 因为2是必输态

看完了上面的五个SG状态后能看出一点规律了,x必赢当且仅当x的后继状态中出现了必输态(SG(y)==0),因为后继状态的SG里有0,那么作mex运算就取不到0,因此SG(x)>0。 这也就是为什么要定义一个mex运算,就是为了判断后继状态里是否有0出现(其实不止这一个用处,在多个状态下可以异或运算来判断输赢情况)如果没有0出现,也就是后继状态全是必赢态,那么SG(x)就可以取到0,也就是x为必输态。

因此通过判断SG(x)是否等于0就可以知道x是输还是赢了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab博弈算法是指使用Matlab编程语言实现的博弈算法博弈论是一种研究冲突和合作行为的数学工具,用于解决决策者在相互作用中做出决策的问题。在博弈论中,A和B两个决策者通过采取不同的行动来影响彼此,并通过反复博弈最终达到一个动态平衡。Matlab提供了强大的工具和函数来实现各种博弈算法。 关于Matlab博弈算法的具体内容,可以参考博主的简介。博主擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真。如果你有相关的Matlab代码问题,可以与博主私信交流。此外,引用提到了无线通信系统中经典的功率控制博弈算法的Matlab实现,这也是Matlab博弈算法的一个应用示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【混沌博弈优化算法】基于混沌博弈优化算法求解单目标优化问题(CGO)含Matlab源码](https://blog.csdn.net/qq_59747472/article/details/123760193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [无线通信系统中功率控制博弈算法的 MATLAB 实现](https://download.csdn.net/download/weixin_43870101/12460593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [博弈论 —— matlab](https://blog.csdn.net/qq_25990967/article/details/122908868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值