题目描述
给出一个
4×4
的棋盘,其中#是障碍,O是空格,X是棋子。
每一回合可以选择
- 取走一个棋子
- 将一个棋子移到空位上
而且这个游戏禁止同形再现,不能操作者败,问先手胜负。
分析
首先,棋子的数量不同的局面显然是有序转移的,也就是说我们可以按照棋子数量将博弈图分层。
然后考虑每一层,假如存在到后面的层的一个必败态,那么这个点必定是必胜态。
在新的意义下重新分析一下这个问题,就是要求不能走重复的点,问先手是否能够胜利(走到某一个必胜态)。
那么在每一层,我们可以考虑先处理出所有的跨层必胜态,将它从图中剔除。
然后这个博弈图显然是一个二分图。
求出这个二分图的最大匹配,假如起点一定在最大匹配上,那么先手必胜,否则先手必败。
证明?
假如起点不在某个最大匹配上,那么它的所有出边到达的点必定都在最大匹配上(否则就不是最大匹配)。
那么先手只能移动到这些点,也就意味着,后手总是可以找到一条匹配边走过去。
那么无论如何,先手都处于不一定能找到出路的被动状态,换句话说,最终没法走了,停留在必败态的必定是先手。(语言不够准确,需要自行YY一下)
如何判断一个点是否在二分图的最大匹配上,简单脑补一下就可以了。