更新時間: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年的美麗,用數學繪制的“二維碼”! - 看!你身邊有一只數學! - 知乎專欄
鞠躬~