首页 > 代码库 > 博弈论:寻找先手必胜策略——Grundy值
博弈论:寻找先手必胜策略——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
博弈论:寻找先手必胜策略——Grundy值