【总结】博弈论
学习链接:
https://blog.csdn.net/jk_chen_acmer/article/details/82082653
https://blog.csdn.net/dgq8211/article/details/7602807
https://blog.csdn.net/YangHao5/article/details/88972326
取石子游戏 2
有一种有趣的游戏,玩法如下:
玩家:2人;
道具: N \rm{N} N堆石子,每堆石子的数量分别为 X \rm{X} X1, X \rm{X} X2, …… X \rm{X} Xn;
规则:
- 游戏双方轮流取石子;
- 每人每次选一堆石子,并从中取走若干颗石子(至少取1颗);
- 所有石子被取完,则游戏结束;
- 如果轮到某人取时已没有石子可取,那此人算负。
- 假如两个游戏玩家都非常聪明,问谁胜谁负?
定理
NIM博弈先手必胜,当且仅当 X \rm{X} X1 ^ X \rm{X} X2 ^ … ^ X \rm{X} Xn ≠ 0
题目描述
Alice 和 Bob 在玩一个游戏。Alice 有一个包含 n \rm{n} n 个整数的数列 a \rm{a} a,Bob 有一个包含 n \rm{n} n个整数的数列 b \rm{b} b。每一回合中,玩家需要从他的数列中删去一个数字。玩家轮流进行回合,Alice 先手。
当两个数列中都只剩下一个数字的时候,游戏结束。令 Alice 的数列剩下的数字为 x \rm{x} x,Bob 的数列剩下的数字为 y \rm{y} y。Alice 想要最大化 x \rm{x} x与 y \rm{y} y之差的绝对值,而 Bob 想最小化这个值。两个玩家都以最优策略游戏。
请算出游戏结束时的结果。
分析:对A或B来说,均有两种选择:维护最优值或去掉最差值。每个人只会从自己最优的角度去游戏
- 首先假设A的策略是去掉最小值,则对 a \rm{a} a i \rm{i} i=1~n找到 b \rm{b} b j \rm{j} j使值最小。A会去掉n组中最小一组的 a \rm{a} a i \rm{i} i
- B有两种选择:
- 维护最小值,因为这n组已经最小了,每个 a \rm{a} a i \rm{i} i对应一个最小值,A只能去掉n-1组,剩下一组是对B而言的最优结果
- 将每个b配对去掉最大值,这样并不一定使B最终结果最小,因为它没有考虑A的策略,A至少去掉n-1组最小,很可能剩下一组最小所对应的b被B自己删去了,这样的策略不如前者
- 所以A每次会删去这n组中最大值,B每次会删去没有被a“匹配”到的b(因为b的数量比a多1,一定有剩余),答案就是n组最小中的最大值
那么为什么A不会维护最大值呢?因为B一定不会删去这n组最小值,假如A不删,最小值就会留到最后,这对A不利,因为结果不如前者
所以,本题思路是分别分析A和B,但彼此要考虑对方的策略,才能使自己的策略最优。这就是博弈论的思想
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17530424.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」