第一章 緒論
第一節 問題描述
假設有一大小為 n×m 的棋盤狀盤面,盤面上每一格代表一個燈 泡,而每盞燈只有燈亮與燈暗兩種狀態。當我們在盤面上任點一格,
其上、下、左、右的鄰居包含自己的狀態會同時改變,也就是亮的變 暗,暗的變亮,這條規則稱為 σ+-rule,如圖 1 所示。另外,若點其 中一格,其上、下、左、右的鄰居的狀態會同時改變但不包含自己,
這條規則稱為σ--rule。本論文的內容將只討論 σ+-rule。
● ●
●
(a)先點左上黑點處 (b)再點中間黑點處 圖 1:σ+-rule 規則圖示
給定一初始狀態全為亮的盤面(如圖 2),若能找到某種點燈法則(如圖 3),使得整個盤面點成全暗即達成目標。這就是所謂的全一問題(以 下 統 稱 All-Ones Problem),也就是網路上常看到的點燈遊戲(all lights 、lights out game)。而如何找出最少點燈數的解法的問題叫做
最小全一問題(Minimum All-Ones Problem)。
圖 2:5×5 All-Ones Problem 的初始盤面,所有燈全亮
● ●
● ● ● ●
● ● ●
● ● ●
● ● ●
圖 3:黑點為此5×5 All-Ones Problem 的一種解答
若以圖論的觀點來看這個問題,給定一graph G = (V, E),其中 V 為 G 上面的 vertex-set,E 為 edge-set。X 為 V 的子集合,若 V 中每 一個 vertex v∉X的四周有奇數個vertex x∈X與之相鄰,且 X 中每 一個元素的四周包含自己在內都有奇數個vertex Xx∈ 與之相鄰,則 X 即為該盤面的一組解。其中 X 就叫做 odd parity cover,或稱 odd dominating set(簡稱 ODS)。
All-Ones Problem 有一些值得注意的特性。第一,同一格子按偶 數次將會回到它原先的狀態,其作用等同於沒有按過。第二,點燈的 順序改變並不會影響結果,也就是說,我們所找的解答是ㄧ組點燈的
另外,假使初始盤面是ㄧ不全為亮的盤面,也就是有些燈是亮的 有些是暗的,是否能夠找到一組解能將那些亮著的燈變暗,最終達到 所有燈全為暗的盤面,這個問題稱為全零問題(All-Zeros Problem)。
Tiger Toys 公司所生產的著名的電子玩具”Lights Out”系列便是以盤面 大小為5×5 的全零問題為基礎而製作[22]。以圖論的觀點來說,這個 問題其實是在找圖中的even dominating set(簡稱 EDS),但是並非任 意的圖都可以找到一組 EDS,也就是說並非所有的初始盤面都會有 解,因此許多的研究者投入在找出有解的初始盤面的研究,其中最有 名的是John Goldwasser 與 William F. Klostermeyer 等人利用線性代數 去分析,見[10]。
圖 4:Tiger Toys 的 Lights Out 2000 [22]
本論文將把重點放在All-Ones Problem 上。
第二節 研究背景與目的
All-Ones Problem 最早是由 Sutner 於 1988 年提出的論文[12]中所
定義的名詞,並於 1989 年利用 cellular automata 證明了任意大小的 n×m 的盤面都必定有解,也就是說,任意一個圖中都必定存在ㄧ組 ODS。但並非任意的圖都必定存在 EDS,因此,雖然 All-Ones Problem
ㄧ定會有解,但 All-Zeros Problem 卻未必有解的原因便在於此 [10][13][18][21]。另外 Lossers 也利用線性代數證明了任意大小的 n×m 的棋盤狀盤面的All-Ones Problem 都必定有解的事實[16],因此後來 許多研究者都是利用線性代數來分析這個問題,但其解法需耗費 Ο(n3×m3)的時間。
Sutner 接著又提出了 Minimum All-Ones Problem 也就是尋找最少
點燈數,即求最佳解的問題,並証明了任意盤面的Minimum All-Ones Problem 是一種 NP-Complete 的問題[13],也就是說很難找出多項式 時間的解法。但是對於某些較簡單的盤面而言卻仍然有可能找出多項 式時間甚至線性時間的演算法來求解。William Y. C. Chen 等人提出了 一種針對求解 Minimum All-Ones Problem 於樹狀圖以及 unicyclic、
bicyclic graphs 的盤面的線性時間演算法[20]。
本校蔡明原學長與林順喜教授提出了一種搜尋演算法[1]能夠有 效率的找出All-Ones Problem 在較小 n×m 盤面上的所有解法。根據他 們實驗後的結果,12×12 以下的盤面幾乎都能在一秒內找出一組答
案。但是當處理的盤面更大時,解題時間卻呈指數成長,其演算法仍 有改進的空間。該論文中也提出了一些有趣的觀察,例如,大部分的 解法都具有對稱性,但也有不對稱的解法。另外他們還發現了所有的 解法都是取決於第一行的點燈法則,但是卻尚未發現有效率的演算法 來 決 定 第 一 行 的 點 燈 法 則 。 該 篇 論 文 提 供 了 我 們 針 對 All-Ones Problem 的研究一個主要的思考方向,也啟發了撰寫這篇論文的靈感。
我們知道所有的解法都是取決於第一行的點燈法則,因此本論文 中將會依據這個想法提出ㄧ種演算法能夠有效率的決定第一行的點 燈法則,並在 Ο(n×m+n3)的時間內找出任意大小的 n×m 盤面的 All-Ones Problem 解法。
第三節 論文組織
本 篇 論 文 的 組 織 架 構 如 下 : 第 一 章 先 描 述 什 麼 是 All-Ones Problem,做一些詳細的定義與解說,並介紹這個領域的研究背景、
前人的一些研究成果與重要發現,和希望達成的目標。第二章會詳述 重要的證明,以及現有的求解 All-Ones Problem 的演算法,並做一些 分析比較。第三章是本篇論文的重點,也就是我們所提出的新的改良 演算法,能夠更快的找出 All-Ones Problem 的解法。我們將提出一些
有趣的方法及發現,希望提供研究者一個新方向來研究這個問題。最 後一章將會把整篇論文做個總結,並提出未來可能的研究議題。