選修了人工智能課程,老師布置了調研任務: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