这是对先前问题的重述。
考虑以下两个爱丽丝和鲍勃之间公正, 完美的信息游戏。给玩家一个从1到n的整数的排列。在每个回合中,如果当前排列增加,则当前玩家输掉,另一玩家赢。否则,当前玩家删除其中一个号码,然后将游戏传递给另一位玩家。爱丽丝先打。例如:
(1,2,3,4)-根据定义,鲍勃立即获胜。
(4,3,2,1)-不管别人怎么玩,爱丽丝在三回合后获胜。
(2,4,1,3)-鲍勃可以在第一回合获胜,无论爱丽丝如何比赛。
(1,3,2,4)-爱丽丝立即通过移除2或3获胜;否则,Bob可以通过删除2或3来赢得第一轮胜利。
(1,4,3,2)-爱丽丝在第一回合拿下1 最终胜出;否则,Bob可以在不移除1的情况下赢得第一轮胜利。
是否存在多项式时间算法来确定假设完美玩法的情况下哪个玩家从给定的起始排列中赢得这场比赛?更笼统地说,因为这是标准的公正博弈,所以每个排列都有Sprague-Grundy值;例如(1,2,4,3)的值为* 1,而(1,3,2)的值为* 2。计算此值有多难?
尽管可以通过动态编程将其减少为时间,但显而易见的回溯算法以O(n!)时间运行。