博弈论
博弈问题:在小说《天才基本法》男主人公裴之与林兆生的初见故事中见到,故记录。
问题如下:给定a个红棋子,b个蓝棋子,每次可以取走1或2枚红棋子或蓝棋子(要么红要么蓝,不可以取走一次取走两枚不同颜色的棋子),取走最后一枚或者两枚棋子的人是赢家。
分析:只看红棋子,这个游戏有着必胜策略,设x=a%3,r若x==0,则先手必输(在后手知道必胜策略的情况下),原因:不论先手取走一个还是两个,后手都可以凑齐三个,始终将状态保持在x==0,知道胜出;否则后手必输(若先手知道必胜策略),原因:先手可以通过取走一个或两个的方式始终维持x!=0的状态,直到胜出。
用SG值记录状态:SG(a)=a%3,若SG==0则必输(若玩家是先手)。
SJ定理:每个小状态SG的异或和(相同则0,不同则1)若为1则必胜,若为0则必败。原因:若为0,假设只有一个状态,输了。假设有两个状态,也就是两状态相同,还是输,输完这场输那场。若为1,假设只有一种颜色,赢。假设有两种颜色,也就是一必胜一必败,没事,先打比败局,等必败局打完再打必胜局即可,最终的胜利才是胜利。如果先打必胜局,打完必胜局以后你就是必败局的后手啦,那么此时必败局就会因为先后手的改变而成为必胜局。
总之必胜策略如下:SG(A,B)=SG(A%3)^SG(B%3),令SG==0,即令A,B之差是3的倍数。
总结:小球有两种颜色时,保持双方差值是3的倍数同时自己是后手。小球有一种颜色时,保持小球个数是3的倍数同时自己是后手。
再总结:保持异或和为0,且自己是后手。
类似博弈游戏举例:
游戏1:给一个数n,两个人轮流进行倒数,每次只能倒数1或2或3个连续的数,不能跳过某数也不能重复,倒数到0的一方失败。例如n=10的时候一个合理过程为:A:10.9.8。B:7.6。A:5。B:4.3。A:2.1.0。此时A失败(当然A的最后一步可以选择不说0,这样A就可以获得胜利了,这里例子只是为了说明游戏规则)。
解答1:定义n表示当前需要从n开始倒数,由SG值定义可知SG(n=0)=0,SG(n=1)=1,SG(n=2)=2,SG(n=3)=3,SG(n=4)=0,以及SG(n)=n%4。所以两个人从10000开始倒数的话,先手就输了。这个游戏是比较常见的游戏,而且很多人可能自己有计算方法,不过真实支撑它的策略的是这个博弈理论。
游戏2:给三个数a,b,c,两个人轮流进行操作,每次可以在abc中选一个非0数,将它减小(至少减少1,至多变为0),没有办法操作的一方失败(a=0,b=0,c=0)。
解答2:这是一个可以拆分的游戏,定义一个简单游戏为只有一个数的情况,设n表示当前这个数为n,那么SG(n)=n。这是因为显然每个状态都可以转移到n-1,n-2,....0。所以前面的0到n-1每个数都出现了一次,SG(n)也就变为n了。那么根据SJ定理,游戏必败当且仅当SG(a,b,c)=a异或b异或c=0。例如SG(a=45,b=45,c=0)=45异或45异或0=0,对于这个状态的简单解释可以是“无论对a进行什么样操作,对方总能对b进行同样的操作,反过来先操作b也是一样的道理”。那么SG(a=1,b=2,c=3)=0,即该状态必败,可以自行试一试。
(119条消息) [学习笔记] (博弈论)Nim游戏和SG函数_nim博弈_A_Comme_Amour的博客-CSDN博客
1.A状态必败
2.B可以到A,B必胜
3.C的所有next state都是B,C必败
4.与出手人无关
__EOF__

本文链接:https://www.cnblogs.com/-ark/p/16555884.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)