博弈论:寻找先手必胜策略——Grundy值
选修了人工智能课程,老师布置了调研任务:Grundy,开始看了一些资料并没有看懂。
后来找到了一篇文,写的很棒,里面有好多博弈相关的问题与分析,分享出来给大家:
http://endless.logdown.com/posts/2014/05/05/find-out-the-winning-strategies-of-the-game-nim-and-grundy-number-notes
这个服务器可能是外国的?打开的很慢,不要认为自己的网炸了。。。哈哈哈
下面就贴一点自己为了做海报(Grundy相关的)所摘取的一些描述:(具体的还是看上面链接的原文吧~)
对于Grundy值的计算,对应Sprague-Grundy定理:游戏和的Grundy值等于各游戏Grundy值的异或和。
而一个游戏可以切分成若干个子游戏,对于每一个子游戏,我们都可以计算一个Grundy值,
此时对若干个游戏全部异或,就可以得到整体这个游戏的Grundy值。
这里我们理解为:如果两个玩家再进行博弈,那么每一个玩家在行动之后,局面都会增加一个,
我们把每一个局面视为一个游戏,那么整个游戏就可以视为若干个游戏的拆分,此时对每一步计算一个Grundy值,
然后进行异或处理。此时我们就可以将问题转化为Nim问题,而又根据1902年,L.Bouton的对于Nim游戏提出的定理:异或和值为零则后手胜,否则先手胜。
如果每个玩家都按照最优策略进行,那么最终的Grundy值为0,那么后手赢,否则先手赢。
所以,对于我们来说,SG函数与“游戏的和”的概念不是让我们去组合、制造稀奇古怪的游戏,
而是把遇到的看上去有些复杂的游戏试图分成若干个子游戏,对于每个比原游戏简化很多的子游戏找出它的SG函数,
然后全部异或起来就得到了原游戏的SG函数,就可以解决原游戏了。(引自百度百科SG函数)
具体问题可以poj的Cutting Game(http://poj.org/problem?id=2311)
题解也有很多,我是看了这位大神的:http://blog.csdn.net/mikasa3/article/details/51385538
- 171230 编程-井字棋(逆)的先手必胜策略
- Three Man Morris(米字棋)先手的必胜策略
- 策略的多米诺骨牌(博弈论的诡计)
- 猪圈里的跟随策略(博弈论的诡计)
- 编程之美4.7蚂蚁爬杆扩展问题附猎人抓狐狸(必胜策略)
- 异或法求两个人取石子的必胜策略-应聘常考的笔试算法题
- 猪圈里的跟随策略(博弈论的诡计)
- 猎人抓狐狸:寻求必胜策略
- 编程之美4.7蚂蚁爬杆扩展问题附猎人抓狐狸(必胜策略)
- 笔试题中的必胜策略
- 博弈论入门(1)——游戏与必胜策略
- 《挑战程序设计竞赛》4.2.1 游戏必胜策略-推理与动态规划算法 POJ2484 2348 1082 2068 3688 1740(1)
- 相继出招的策略(博弈论的诡计)
- 创造优势策略,强迫自己成功(博弈论的诡计)
- 编程之美4.7蚂蚁爬杆扩展问题附猎人抓狐狸(必胜策略)
- [转载]估值逻辑和分步建仓策略-----寻找正收益
- 相继出招的策略(博弈论的诡计)
- 创造优势策略,强迫自己成功(博弈论的诡计)
- 编程之美4.7蚂蚁爬杆扩展问题附猎人抓狐狸(必胜策略)
- 拿球问题,必胜策略