Nim Game - 尼姆博弈
问题
和两人轮流从堆物品中取出一些物品,堆物品的数量分别为(所有物品数量都是正整数)。
每人每次从一堆物品中至少取个,多则不限,最后取光所有物品的人获胜。
给定和,当我方先手,我方和对方都是高手(在能赢的情况下一定能赢),求我方是否能赢。
解法
当我方面临局势(有堆物品)时,我方必赢,因为我方可以一次把剩下一组的物品取光;
当我方面临局势(有堆物品且均剩个)时,我方必输,因为我方必然留给对方只剩堆物品的局势;
当我方面临局势(有堆物品且均剩个)时,我方必赢,因为我方必然留给对方只剩堆物品且均剩个的局势;
当我方面临局势时,暂时无法看出我方是否必赢;
本问题背后的数学模型叫,堆数组大小的二进制和,上面个局势可以转化为:
可以看出,当我方面临局势时必赢,否则必输。
该算法时间复杂度为。
Nim Sum
- http://www.math.ucla.edu/~radko/circles/lib/data/Handout-141-156.pdf
- https://plus.maths.org/content/play-win-nim
- http://samidavies.com/post/2016/03/09/games-intro.html
- https://paradise.caltech.edu/ist4/lectures/Bouton1901.pdf
- https://pdfs.semanticscholar.org/8ac7/c5d8d56847daafa73ad85ae2ad6f47149096.pdf
- https://www.researchgate.net/publication/220343088_The_game_of_End-Nim