对于大部分游戏来说, 寻找最优解是非常困难的. 以围棋为例, 穷尽所有的计算, 对于全球最快的电脑也几乎是不可能的. 在阿尔法狗出现之前, 电脑只能在小棋盘(如9×9)中变化有限的情况下, 找到最优解.
今天的挑战问题, 与寻找最优解有关. 我们沿着阿尔法狗的步伐, 从一个经典游戏入手, 试图寻找它的最佳解法.
你可以选择先看看这个经典游戏寻找最优解的思路, 也可以跳过阅读直接开始做题.
这个经典游戏叫做“尼姆游戏”, 规则是这样的:
游戏开始时, 有几堆石头;
玩家必须轮流选择一堆石头, 并拿走1块或多块石头;
最后一个拿起石头的人输掉游戏.
我们先以最简单的情况来探索:两堆石头, 每堆有2块石头. 想一想, 先拿石头的人有必胜法么?
因为每一堆都是2块石头, 无论先从哪边开始都是一样的.
那么, 就有两种情况:1)拿走1块;2)拿走2块.
- 对于第一种情况, 如图所示:
你拿走了1块, 对手可以拿走另外一堆中的2块石头. 那么场上只剩下1块石头, 也就是你刚刚拿走的那堆石头中剩下的. 你不得不最后拿走他, 也就输掉了游戏.
- 对于第二种情况, 如图所示:
你拿走了2块, 对手可以拿走另外一堆中的1块石头. 那么场上还是只剩1块石头. 你又输了.
对于尼姆游戏来说, 有2个堆, 每堆有2个石头组成的开始局, 必胜法是让对方先行. 无论对方策略如何, 你都有应对的方法.
以此类推, 有n个堆, 每堆有
现在, 你能想出下面这个游戏的必胜法么?