这是一个有趣的问题。在8年前,当我还是个初三的孩子时,我曾经探索过这个问题。(链接如下:
有关“十全十美”的研究
,我的ID “仙灵魂”,当时还是吧主)
当时用文曲星的 计算到n=14,因为文曲星性能问题没有继续算下去。
在这里贴一下当时(2006年)的一些结论。
(1)显然,点灯游戏的解,和点下方格的次序无关,仅和点下方格的位置有关。
(2)在一个方格下累计点下两次,和没有点下过的效果是一样的。所以最优解必然只是在某些格子下点下过一次。
(3)当第1行被点下的格子确定时,若存在方案,则方案唯一。
这是因为一个格子(坐标[a,b])的灯是否点亮只和其初始状态以及以下五个点:
[a-1,b][a,b-1][a,b][a,b+1][a+1,b]是否被点下有关,其中只有[a+1,b]是位于第a+1行,其它均在第a行之前。
举例说明:如下图所示
5×5的方格,假设紫色格一开始是暗的,我的目标是把它点亮,而前两行点下的位置已经确定(如图中的1),那么由于紫色格的状态只与自身以及周围4个被按下次数有关(总和应是奇数),而绿格和紫格累计被按下2次,所以在第3行,红色格必须被按下。
所以,当我固定了第一行的点灯位置(共
种状态,考虑对称性的话能去掉接近一半的状态),那么,剩下的步骤是确定的,点完第n行可以让第n-1行的灯全亮,所以,我可以确保除最后一行外,所有位置的灯都能点亮,而最后一行是否恰好都被点亮,要看天意。但是暴力求解并不麻烦。
(4)因为题主说初始亮灯位置随机,所以没有确定的解,甚至是否一定有解也不能确定(这点待证明)心有千千结游戏规则,只能按照(3)的方法一一尝试。但是如果初始状态是全部灯暗,是有确定方案的。
如,5×5共有4个解,如果考虑对称性和旋转性,此解是唯一的。
下面是5×5的方案,可以看到,它在斜对角线有一条对称轴:
(5)这个问题其实很棘手。即使用计算机算心有千千结游戏规则,在我目前的算法下,复杂度达到了
,随着n的增大,复杂度指数增长,所以能算得的n也并不是太大,一般微机在一天之内能算到n=33大约就已经是极限了。当然算法可能还有改进空间。
(6)由于这个问题确实很有趣(很美~),八年后的今天,我又重启了对这个问题的探索。
具体结果请移步
点灯游戏:迟到8年的美丽,用数学绘制的“二维码”! - 看!你身边有一只数学! - 知乎专栏
鞠躬~