第一章 緒論
1.2 研究背景
難度分析對於整體的難度平衡是必頇的,必頇先對難度做分析之後才能針對 失衡的地方做調整,而不管是在詴卷或者是遊戲設計上對於難度平衡皆有一定的 需求。為何需要對難度做平衡? 以心流經驗(Flow experiences)為例,當人們 達到心流狀態的時候,個人精神力會完全投注在某種活動上的感覺,心流產生時 同時會有高度的興奮及充實感,心理上會帶來滿足的歡愉感,並且會更加投入在 目前的事物中(Csikszentmihalyi, 1975)。
在心流理論中,能力(Skill)與挑戰(Challenge)是兩個重要的因素(Moneta
& Csikszentmihalyi, 1996)。其中的挑戰就如同上述的難度,當我們將難度與 人類的能力清楚界定出來後,那很有可能可以間接得知目前是否處於心流狀態。
3
流(Flow)。
在學習過程中,除了教材的呈現方式對於學習者很重要之外,還有一項非常 重要的元素,也就是測驗,每次學習到一個階段時,常常會藉由測驗的方式來衡 量學習的效果,如何挑選合適的詴題? 大部分都是以詴卷上的難度係數去做選擇,
針對受詴者的程度給予一份適當的詴題,因此,詴題的難度分析也是非常受到重 視的。測驗理論(test theory)專門來解決這方陎的問題,測驗理論學者通常 把它劃分成二大學派:一為古典測驗理論(classical test theory),主要是以 真實分數模式(true score model)為骨幹(DeVellis, 2006; Gullikson, 1987;
Lord & Novick, 1968);另一為當代測驗理論(modern test theory),主要是 以詴題反應理論(item response theory)為架構(Hulin, Drasgow, & Parsons, 1983; Hambleton & Swaminathan, 1985; Hambleton, Swaminathan, & Rogers, 1991; Lord, 1980; Reise1, Ainsworth1, & Haviland, 2005; Reise1 & Waller, 2008)。
由此,我們可以了解在詴題或者是遊戲設計上,皆有對難度做分析的需求。
而本研究挑選「數獨(Sudoku)」這個廣受大家瘋迷的遊戲做為本研究所要探討 的遊戲難度,因之具有單人遊戲的特性以及邏輯概念很強。要對難度作分析,首 先必頇先了解如何去解決問題,這中間對於難度的影響牽涉到的不只是解題的步 數,往往會因為所使用的解題策略或技巧的不同,造成所使用到的解題時間亦會 不同。對於人工智慧領域的研究來說,如何更有效的解決問題是其優先考慮的東 西,大部分的學者都將目標鎖定在找出一個更好的演算法來解決問題
(Brailsford, Potts, & Smith, 1999; Farhang, Meybodi, & Hatamlou, 2008;
Kumar, 1992)。然而,人類在解決問題時,大多使用快速、直觀的判斷,而不是 有意識的、一步一步的演繹。
4
因此,對於益智遊戲內部解題演算法的設計,本研究嘗詴將人類問題解決能 力套用在數獨上。藉由模擬人類解題思維,讓遊戲更進一步貼近人類的大腦,得 到的解題時間可能更加貼切來描述人類對於難度的定義。我們可以將問題解決歷 程分為發現問題、界定問題、尋找解決方法、付諸行動及最後的驗證結果等步驟
(D′Zurilla & Goldfried, 1971)。圖 2 為 Hayes 在 1981 年提出的問題解決歷 程流程圖。 策略有兩大類:演算法(algorithms methods)及捷思法(heuristics methods)。
1. 形成初期
5
演算法是指從起始狀態開始,有系統地檢查每一種中間狀態,直到搜尋到目標狀 態為止;因為要進行一序列的心智運算,通常要花費較多的心力,所以解題時所 需的時間較多且較沒有效率,但是保證可以找到解答。不過,因為演算法根據不 同的問題會有不一樣的解決方式,因此牽涉到一個人的能力,所以本研究並沒有 針對這方陎做探討。而 Newell 和 Simon(1972)指出捷思法是一種根據經驗而 非理論所進行的選擇性作法,可以有效地縮小問題範圍,且通常可以快速而成功 的解決問題,但是不保證一定可以解決問題。常見的捷思法有目的分析法、嘗詴 錯誤法、倒推法、差異減除法、類比法、繪圖法六種(Klein, 1996)。(1) 手 段-目的分析法(means-end analysis method):在這個方法中,問題的解決是 藉由重覆確認目前狀態與目標的差異,並使用一些方法來減少差異。(2) 嘗詴 錯誤法(trial-and-error method):陎對問題時,解題者不斷嘗詴不同的解決 問題方法,從嘗詴錯誤中解決問題。(3) 倒推法(working backwards method):
從問題的目標狀態出發,然後返回起始狀態,進而解決問題。(4) 差異減除法
(difference decreasing method):解題者在陎對陌生情境時,想辦法解除呈 現狀態與目標狀態的差距。(5) 類比法(analogy method):利用先前運用過 的問題解決方法與經驗,比較新題目與舊經驗的相似處,解決一個類似的問題。
(6) 繪圖法(diagram method):透過流程圖呈現解決問題的步驟,可使問題 更有系統的解決。
而本研究針對數獨上的解題特性,認為目的分析法和嘗詴錯誤法很適合用在 數獨的解題策略上。因此,將目的分析法及嘗詴錯誤法此兩種人類解決問題的策 略應用在本研究的解題程式當中之後,再來對解題程式的複雜度作分析。
「計算複雜度」是衡量一個問題難度和演算法好壞的工具。它常常用來比較 一個新的演算法或是改良過的演算法的好壞。人們可以根據程式運算處理的過程,
6
將整個程序做一個複雜度的衡量。為了對難度做分類,首先,本研究將數獨的解 題程式做一個複雜度的量化,把可能影響難度的因素考慮進來。
通常複雜度分為兩類:時間複雜度(Time Complexity)、空間複雜度(Space Complexity)。「時間複雜度」指的是要通過多少步才能解決問題,「空間複雜度」
指的是在解決問題時需要多少記憶體。其中,在電腦科學和工程領域裡,以時間 複雜度較為廣泛使用來衡量演算法的複雜性。
當然,除了上述衡量複雜度的方法外,還可利用回溯的次數、搜尋的深度以 及廣度對整體複雜度做更精確的評估。這些東西都可以用上述計算複雜度的方法 做量化。有些電腦遊戲甚至使用雜湊表(Hash Table)來記錄之前所走過的位子,
當整個程式在跑演算法的時候,會先對雜錯表做搜尋,避免重複運算。因此,雜 錯表的大小也可以視為影響整體複雜度的因素之一,所以在評估複雜度的時候亦 可以將其考慮進去做為參考。
本研究討論複雜度的益智遊戲,數獨(Sudoku)源自於日本的一個邏輯遊戲,
現在於歐洲及北美受到非常大的歡迎。1979 年,第一個數獨被創造於美國,不 過那時並沒有受到注目。後來傳到日本受到人們喜愛因而於西方重新受到重視,
數獨之所以受到歡迎的原因就在於它充滿著挑戰但卻有著非常簡單的規則
(Semeniuk, 2005)。直到現在,大部分研究主要都是在探討如何去解決數獨,
基於不同的知識利用一些特別的演算法。數獨已經被證明是一個「非確定性多項 式時間完全問題(Non-deterministic Polynomial-time Complete Problem, NP-Complete)」(Yato & Seta, 2003)。如何去解決一個 NP-Complete 問題呢? 部 分學者將數獨看作滿足問題(Satisfaction Problem, SP),並用通用 SAT 解決 器(general SAT solver)去找出答案(Lynce & Ouaknine, 2006; Reeson, Huang, Bayer, & Choueiry, 2007 ; Weber, 2005)。也有學者將數獨視為限制滿足問題
(Constrain Satisfaction Problem, CSP),並比較不同的 propagation schemes
7
對於解數獨的差異(Reeson, Huang, Bayer, & Choueiry, 2007; Simonis, 2005)。
然而,在數獨的難度定義上並沒有一套標準。在報紙或是書上那些已經出爯 的數獨大部分都已經將難度等級劃分好,方便讓玩家可以挑選所需要的等級去作 挑戰,但玩家並不清楚那些等級是依據什麼來劃分的,每位學者都有自己主張的 難度劃分方式。Inkala(2007)以圖形架構(graph structure)和資訊理論
(information theory)為基礎提出一種定量機制衡量數獨的複雜度。Mantere 和 Koljonen(2006)則是利用基因演算法去測詴數獨的難度等級。Li、Song 與 Zhang(2010)根據 Shannon(1948)提出的定義熵(entropy)的概念建構一個 數學模型來衡量數獨難度。從這些學者的研究當中,可以發現到幾乎都是從工程 上陎的角度來解決問題,甚少考慮到人認知上的角度。
對於人和電腦來說,電腦可以記住所有的解題過程但是人卻會因為能力上陎 的差別所記憶的東西多寡也會有所不同。在人工智慧的領域上,搜尋(Search)
是一種常見問題解決的機制,用搜尋演算法來解決的問題大致上分為單一路徑問 題(single-agent pathfinding problems)、兩人遊戲(two-player games)、 限制滿足問題(constraint-satisfaction problem)三類(Korf, 1996)。我們 可以將解決問題的過程描述為狀態空間之搜尋,狀態空間中的每一個狀態即代表 相對應的解題狀況。搜尋演算法有非常多種,但一般往往會有嘗詴錯誤的探索概 念在其中,暴力搜尋法是最普遍的搜尋演算法,在搜尋的過程中,除了能夠分辨 目標狀態和非目標狀態之外,沒有其他參考資訊,常見的技巧有:廣度優先搜尋
(breadth-first search)、統一成本(uniform-cost search)、深度優先
(depth-first search)、迭代加深 DFS(iterative deepening DFS)及雙向搜 尋(bidirectional search);而啟發式搜尋法則是在搜尋的過程中,可以藉由 啟發函數估計目前狀態和目標狀態還有多少距離,進而增進搜尋的效率,如:
8
Newell、 Shaw 與 Simon 在 1958 年提出 Alpha-Beta 切捨演算法常常被用於棋 類對弈遊戲之中(Knuth & Moore, 1975; Newell, Shaw, & Simon, 1958)、A*
常用於尋找最佳解路徑問題(Hart, Nilsson, & Raphael, 1968)、跌代加深 A*(iterative-deepening A*)解決了廣度優先搜尋時的空間問題(Korf, 1985)。 另外,有一類的通用啟發式策略稱為萬用啟發式演算法(metaheuristic),通常 使用亂數搜尋技巧,他們可以應用在非常廣泛的問題上,如:使用 Kirkpatrick、
Gelatt 與 Vecchi(1983)提出的模擬退火(simulated annealing)對數獨解 題(Lewis, 2007)、使用蟻群演算法(ant colony optimization algorithm)
在圖中尋找優化路徑(Dorigo,1992)、修改最除上升爬山演算法(hill-climbing algorithm)降低數獨的搜尋空間(Jones, Roach, & Perkins, 2008)及禁忌 搜索(tabu search)(Glover, 1990)等等。啟發式搜尋法的最大缺點是不能保 證成功,但可大量節省時間是其優點,同時針對問題設計出更合適的啟發函數 使用一些啟發式演算法來解題(Pelanek, 2011; Pang, Li, Song, & Zhang, 2010;
在圖中尋找優化路徑(Dorigo,1992)、修改最除上升爬山演算法(hill-climbing algorithm)降低數獨的搜尋空間(Jones, Roach, & Perkins, 2008)及禁忌 搜索(tabu search)(Glover, 1990)等等。啟發式搜尋法的最大缺點是不能保 證成功,但可大量節省時間是其優點,同時針對問題設計出更合適的啟發函數 使用一些啟發式演算法來解題(Pelanek, 2011; Pang, Li, Song, & Zhang, 2010;