“关灯游戏”(Lights Out) 是一款经典的单人逻辑益智游戏 。在一个 $5 \times 5$ 的方格矩阵中,每盏灯都有“亮”或“灭”两种状态。 游戏的规则是邻域联动机制:当玩家点击盘面上的任意一盏灯时,该灯自身以及它上下左右相邻的灯,状态都会发生反转(亮变灭,灭变亮)。
在 $5 \times 5$ 的棋盘上,并非所有的初始盘面都能被全部关灭 。判断一个局面是否有解,可以通过两个特定的“模具”进行奇偶校验 。
由于游戏规则的代数对称性,无论玩家在盘面上按下任何一个开关,它对这两个模具区域内造成的亮灯状态改变,永远是偶数个(0个、2个或4个)。因为游戏的最终目标是“全灭”(亮灯数为 $0$, $0$ 属偶数),所以如果初始状态在模具内的亮灯数为奇数,那么无论怎么操作,奇偶性都被死死锁住,绝对无解。
| 第1列 | 第2列 | 第3列 | 第4列 | 第5列 | |
|---|---|---|---|---|---|
| 第1行 | 1 | 0 | 1 | 0 | 1 |
| 第2行 | 1 | 0 | 1 | 0 | 1 |
| 第3行 | 0 | 0 | 0 | 0 | 0 |
| 第4行 | 1 | 0 | 1 | 0 | 1 |
| 第5行 | 1 | 0 | 1 | 0 | 1 |
| 第1列 | 第2列 | 第3列 | 第4列 | 第5列 | |
|---|---|---|---|---|---|
| 第1行 | 1 | 1 | 0 | 1 | 1 |
| 第2行 | 0 | 0 | 0 | 0 | 0 |
| 第3行 | 1 | 1 | 0 | 1 | 1 |
| 第4行 | 0 | 0 | 0 | 0 | 0 |
| 第5行 | 1 | 1 | 0 | 1 | 1 |
为何恰好存在这两个校验模具?这可以通过“逐行扫地递推法”结合线性代数来严格证明,并确凿地解释:只要满足这两个偶数校验,就一定 100% 可以全部关闭。
为实现全盘熄灭,我们从底部的第一层开始操作。设第一层的 5 个开关状态为独立变量 $x_1, x_2, x_3, x_4, x_5$ 。一旦第一层的按法决定,为了熄灭第一层的残余灯光,第二层的按法被强制锁定;进而第三层、第四层、第五层的按法均被逐层死死锁定。整个 $5 \times 5$ 空间的 25 个动作,完全被第一层的 5 个变量唯一决定。
当按键动作推导至最顶层(第五层)后,第五层自身的灯光也必须自然熄灭。这相当于虚拟的“第六层”(天花板)不需要任何操作即可全灭。底层 5 个开关对天花板产生的扰动叠加后,必须满足以下 5 个约束方程:
将上述方程组提取为系数矩阵,并在 $\mathbb{F}_2$ 域下进行高斯消元,得到最简行阶梯矩阵(RREF):
矩阵的底部出现了两行全零,表明这 5 个约束条件中只有 3 个是线性独立的(矩阵的秩为 3)。 根据线性代数定理:$\text{零空间维度} = 5 \text{(总变量)} - 3 \text{(有效方程)} = 2$ 。
从最简行阶梯矩阵中,可以直接提取出变量间的依赖关系:
由于维度为 2,我们拥有两个自由变量 $x_4$ 和 $x_5$ 。通过对这两个自由变量分别赋值,即可得到第一层($x_1$ 到 $x_5$)的两个最基础的按键模式 :
[1, 0, 1, 0, 1] (将此底层按法通过联动规则向上推演至第五层,最终在盘面上形成的 $5 \times 5$ 按键全貌,正是前面的“校验模具一”。)[1, 1, 0, 1, 1] (同理,将此起手式向上推演,形成的按键全貌即为“校验模具二”。)零空间的维度精确为 2,说明整个系统只有这两个“基本模式”(瞎忙活组合) 。
由于通过安检的总数与真实存在的解的总数分毫不差地吻合($2^{23}$),数学定理保证了没有混入任何无解的杂质。因此,满足双偶数检验和“必定有解”构成了完美的等价条件。