取格子游戏的构造性策略

作者:
系列:头脑风暴

查看该系列所有文章

在 MIT BBS 上看到一个有趣的题目

一个 M*N 的方阵,每个格子里放一个硬币。甲乙轮流取:选定一枚硬币后,必须取走它上方、右方和右上方的所有硬币(如果有的话)。拿走最左下角那个输。问谁有必胜策略?

有人立即给出了答案:

假设后手有必胜策略。

先手取(M,N),如果后手的必胜策略是取(i, j),那么先手开局不取(M,N)而取(i,j),则先手必胜。矛盾。

所以先手必胜。

这样的解法被称为存在性证明。上面问题可以在两个方面加以扩展:

1、求构造性策略。

即需要给出先手的必胜操作具体是怎么样的。比如当 N=M 时,可以先取(2, 2)处的格子(假设左下方格子坐标为(1, 1)),然后与后手对称地取格子。

2、如果是任意的游戏状态,其各方的必胜策略又是如何?

一个游戏状态可以表示为 \( a_1, a_2, \cdots, a_n\) ,其中 \( a_1\geq a_2\geq\cdots\geq a_n\) ,分别表示第一列到最后一列各列剩余的方格数量。当 \( n=2\) 时, \( \{(a_1, a_2)|a_1=a_2+1\}\) 为后手的必胜状态集。对于较大的 \( n\) 后手的状态集不太好求。

Q. E. D.

系列: 头脑风暴 »
最近看到一个有趣的问题:
网络的力量太大,这两次把问题放到网上不到半天,这些问题不但被解答,而且连出处都被翻出来了。这让我自己少了很多思考的乐趣。以后不能把问题太快放到网上。
最近看了几个风险管理和组合管理系统,有几个系统里附带了组合优化模块,也了解到这一方面工业界的最新成果。最新的组合优化模块被称为第二代最优化模型,主要成果就是二阶锥优化算法的应用,其中一个重要的改进为对 alpha 估计的不准确性考虑在内。
Excel 的数据透视表是一个很好用的功能,我写了一个 Matlab 版本,在处理上和 Excel 的透视表差不多,还差一个 filter 而已。