- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
寻找必败态——博弈问题的快速解法
寻找必败态:博弈问题的快速解法
寻找必败态——一类博弈问题的快速解法
博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中
有一类试题更是完全无法用常见的博弈树来进行解答。寻找必败态即为针对此类试题给出一
种解题思路。
此类问题一般有如下特点:
1、博弈模型为两人轮流决策的非合作博弈。即两人轮流进行决策,并且两人都使用最
优策略来获取胜利。
2、博弈是有限的。即无论两人怎样决策,都会在有限步后决出胜负。
3、公平博弈。即两人进行决策所遵循的规则相同。
以下题目都属于这一类:
POJ1740 A New Stone Game
MIPT100 Nim Game -- who is the winner?
POJ1704 Georgia and Bob
POJ1067 取石子游戏
本着先理论后实践的原则,本文先对“寻找必败态”做出理论上的解释:
要理解这种思想,首先要明白什么叫必败态。说简单点,必败态就是 “在对方使用最优
策略时,无论做出什么决策都会导致失败的局面”。其他的局面称为胜态,值得注意的是在
胜态下做出错误的决策也有可能导致失败。此类博弈问题的精髓就是让对手永远面对必败
态。
必败态和胜态有着如下性质:
1、若面临末状态者为获胜则末状态为胜态否则末状态为必败态。
2、一个局面是胜态的充要条件是该局面进行某种决策后会成为必败态。
3、一个局面是必败态的充要条件是该局面无论进行何种决策均会成为胜态。
这三条性质正是博弈树的原理,但博弈树是通过计算每一个局面是胜态还是必败态来解
题,这样在局面数很多的情况下是很难做到的,此时,我们可以利用人脑的推演归纳能力找
到必败态的共性,就可以比较好的解决此类问题了。
下面就通过实际题目来做一些分析:
例 1、POJ1740 A New Stone Game
题目大意是:有 N 堆石子,两人轮流进行操作,每一次为“操作者指定一堆石子,先从中扔
掉一部分(至少一颗,可以全部扔掉),然后可以将该堆剩下的石子中的任意多颗任意移到
其他未取完的堆中”,操作者无法完成操作时为负。
分析:
只有一堆时先手必胜。
有两堆时若两堆相等则后手只用和先手一样决策即可保证胜利,后手必胜。若不同则先
手可以使其变成相等的两堆,先手必胜。
有三堆时先手只用一次决策即可将其变成两堆相等的局面,先手必胜。
有四堆时由于三堆必胜,无论先手后手都想逼对方取完其中一堆,而只有在四堆都为一
- 1 -
颗时才会有人取完其中一堆,联系前面的结论可以发现,只有当四堆可以分成两两相等的两
对时先手才会失败。
分析到这里,题目好像已经有了一些眉目了,凭借归纳猜想,我们猜测必败态的条件为
“堆数为偶数(不妨设为 2N),并且可以分为两两相等的 N对”。
下面只需证明一下这个猜想。其实证明这样的猜想很简单,只用检验是否满足必败态的
三条性质即可。
首先,末状态为必败态,第一条性质符合。
其次,可以证明任何一个胜态都有策略变成必败态(分奇数堆和偶数堆两种情况讨论)。
最后,证明任何一个必败态都无法变成另一个必败态(比较简单)。
由于篇幅关系,这里就不具体证明了,如果有兴趣可以自己试试
接下来的程序就相当简单了,只用判断一下即可。
有些题则比这一题的条件隐蔽许多,例如:
例 2、MIPT100 Nim Game —— who is the winner?
题目大意是:有 N 堆石子,两人轮流取,每次可以从任意一堆中取任意多颗(但至少一颗),
谁先取完谁胜。
分析:
还是用按照“手推小数据 = 猜想 = 证明”的模式。
一堆时先手必胜。
两堆时若两堆相等则先手必败,否则先手胜。
三堆的情况就有点复杂了,此时,我们只好借助博弈树来在小范围内求解,从这些解中
我们可以看出,对于由两个不同数字构成的两元组,都有且仅有一个三元必败态包含它,这
又意味着什么呢?我们定义一个函数 F(a,b),表示“包含 a,b 的三元必败态中的第三数”,
则有:
F(1,2)=3,F(1,3)=2,F(1,4)=5,F(1,5)
文档评论(0)