欢迎您访问【干货】8年前一个的问题及解决办法(上)!

【干货】8年前一个的问题及解决办法(上)

更新时间:2022-07-02 17:07:44作者:佚名

这是一个有趣的问题。在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年的美丽,用数学绘制的“二维码”! - 看!你身边有一只数学! - 知乎专栏

鞠躬~