• 沒有找到結果。

第一章、 介紹

1.3 研究目的

由於六子棋在大多數盤面可以直接利用迫著空間搜尋(Threat Space Search,簡稱 TSS[1][4][14])來找到某一方的必勝解,因此迫著空間搜尋的 搜尋效率變得格外的重要。NCTU6 在這部分的表現已經非常優越,但是 在中盤甚至終盤時,只要盤面變得很大,搜尋時就容易在各個區域來回找 尋可能的迫著攻擊,造成搜尋時間過長以及效率低落,使得很多必勝的盤 面 因 時 間 限 制 而 無 法 被 搜 尋 到 , 也 就 是 區 域 相 關 攻 擊 搜 尋 (Dependency-Based Search,簡稱 DB-Search[1][2])的問題。而此篇論文的目 的就是為了解決此一問題而提出適用於六子棋的解決方法。

圖 3. 五子棋 DB-Search 代表盤面

Allis 對於DB-Search 問題的敘述是以五子棋為例,考慮圖 3 的盤面。

若將此盤面進行直接的搜尋,大約要搜尋 8! × 28 ≃ 107 個盤面,非常耗 時。即使搭配了 Transposition table 的技術,避免搜尋重複的盤面,也仍然 需要搜尋約 38 ≃ 6000 個盤面。以人類玩家而言,可以立即看出無論從這 16 個攻擊位置的任一處進攻,都無法找到必勝解。因此在五子棋的迫著空 間搜尋時,只需考慮一連串 Dependency 性質的攻擊迫著,在一個區域內

攻擊並找尋必勝解,而不用費時在不同的區域間來回搜尋,這是 DB-Search 最重要的特性。

圖 4. 五子棋 DB-Search 存在必勝解的盤面

圖 4 為存在必勝解的盤面。依照 DB-Search 的方式,從 A 開始,接著 攻擊 C,最後是 D,黑方就能因形成活四而勝利。這一連串的攻擊,前後 手都是互相相關的,B 造成的迫著包含著 A,C 造成的迫著也包含著 B,

直到勝利。因為相關性,將攻擊的棋串集中在一個區域,而不是四處分散。

圖 5. 五子棋 DB-Search 需合併的盤面 圖 6. 圖 5 的 DB-Search 樹 Initial

A D

B C

Live-3, Win 14

E F

不過在完全考慮 DB-Search 的情形下,無法找到所有可能的必勝解,

如圖 5。其中一條攻擊的路徑為 AC,之後便沒有其他與 C 相關的迫著 攻擊。另一條攻擊路徑為 DF。兩條攻擊路徑看似都沒有後續攻擊,但 是當這兩條攻擊路徑同時存在時,C 和 F 便可合併形成活三,使得攻擊得 以延續(圖 6)。因此當兩條或更多攻擊路徑盤面沒有衝突,且能夠形成額外 的攻擊迫著時,應該要予以合併。這是 DB-Search 另一個重要的特性:

Combination。

這種 DB-Search 的問題同樣也發生在六子棋的盤面,且六子棋又較五 子棋的問題更為複雜。主要的原因是六子棋一手有兩顆子,所以會有額外 的一些問題,例如多重區域搜尋、反手問題以及演算法架構上的問題。

圖 7. 六子棋多重區域搜尋問題

六子棋的迫著攻擊時,攻擊方可以不斷以兩個迫著來進行攻擊。若考 慮圖 7,攻擊方可以任意選擇兩個死三來搭配,形成兩個死四,迫使防守 方兩顆子各需擋住一個死四。依照圖 4 複雜度的計算方式,可以推測出直 接的迫著搜尋會搜尋𝐶28 × 9 × 𝐶26 × 9 × 𝐶24 × 9 × 9 ≃ 1.6 × 107 個盤 面,即使搭配了 Transposition table 的技術也仍然需要搜尋約 48 ≃ 65000 個盤面。但實際上人類玩家仍可以立即看出這個盤面不存在必勝路徑。

圖 8. 六子棋反手問題

考慮圖 8,在黑方進攻過程中,白 2 造成了反手。黑 3 雖然能擋住白 2 的反手,卻不相依於黑 1。之後黑 5 繼續以相依於黑 1 的迫著進攻,不過 白 6 再次造成反手。若以圖 8 的順序進攻至白 6,便因黑方無法找出能擋 住反手的攻擊步而頇終止搜尋。

圖 9. 六子棋反手問題

若以圖 9 的順序,相較於圖 8,黑 5 先從盤面右上角進攻,下至黑 7 之後,再次從黑 9 的位置進攻。此次白 10 雖然與圖 8 的白 6 是在相同的 位置,但由於黑 7 已經擋住了白 10 原本可能造成的反手,而使得黑方可 以繼續從黑 9 進攻。

由此範例可明顯看出六子棋的反手問題搭配雙重區域搜尋,使得迫著 搜尋變得更加的複雜,尤其是要考慮攻擊的順序,以及兩顆子搭配的問題,

避免重複測詴搭配盤面周遭的死三,才能減低搜尋的時間,。

相關文件