在本節當中將會介紹將五子棋當中找 VCT 與 VCF 的 AI-Search 迫著搜尋方法(Threat Space Search,後面我們簡稱為 TSS),第 3.4.1 小節介紹基本的演算法。第 3.4.2 小節介紹保守防禦的加速 TSS。第 3.4.3 小節列出相關的比較結果。
3.4.1 迫著搜尋的基本演算法
TSS 是由 Allis 在證明 Gomoku 遊戲是黑子必勝時一併提出:在 一般的 Search 當中,只留下與 Threats 相關的分支(包含進攻、防守 與反攻)做展開,利用迫著之間的相關性和細而長的搜尋樹找尋進攻 方連續迫著獲勝的進攻方式(Winning Threats Sequence),若是失敗的 話回傳沒有找到(Fail) 。
在此另有一個重點需要提出,以往因為五子棋的概念雙方每個回 合僅僅只能下一顆子,所以一旦進攻方有 Threat 出現,防守方僅能下 的那顆子就肯定被牽制下在少數可以防守 Threat 的點上,一旦進攻方 達成盤面上有 2 個以上的 Threats 的話,進攻方即可宣告獲勝。而五 子棋相關棋類遊戲則不然,若是雙方都可以下 p 顆子的狀況的話,進 攻方要能完整牽制防守方的防禦點就必須要在盤面上下出 p 個 Threats,如此一來防守方的 move 才有辦法被預測。一旦進攻方達成 在盤面上有 p+1 個(含)以上的 Threats 才可宣告獲勝。
圖 3-11 TSS 示意圖
3.4.2 保守防禦
TSS 在進攻方下子過後,白方防守往往不會僅有一種擋法,(如圖 3-12,{A,C},{B,C},{B,D}),在搜尋樹(Game-Tree)上頭就會產生數棵 子樹(sub-tree)並在搜尋過三棵子樹都回傳是進攻方必勝的話,那麼我 們就可以說,進攻方可以獲勝。
圖 3-12 保守防禦示意圖
但如果我們採取保守一點的想法:假設黑方此時允許白方把所有 可 以 防 禦 的 點 ({A,B,C,D}) 通 通 下 滿 ( 我 們 稱 之 為 保 守 防 禦 Conservative Defense)的話,進攻方仍就可以找到一組 Winning Threats Sequence 必勝,其實運用同樣的 Winning Threats Sequence 在三組防 守點是拆開防禦的狀況底下,依舊是可以獲勝的。但此時,搜尋樹就 不必搜尋三棵子樹而僅僅做一個 Conservative Defense 的 sub-tree 就 好,藉此我們希望藉此可以提高 TSS 的搜尋效率。
1. 傳統型 TSS (Traditional TSS):僅依據原本 TSS 做搜尋的工作 搜尋典型的分支,不包含 Conservative Defense 的分支。
2. 保守型 TSS (Conservative TSS):所有的 TSS 的防守分支當 中,僅僅執行 Conservative Defense,不執行所有的分支情 況。(圖 3-13(a))
3. 混合型 TSS (Hybrid TSS):所有的 TSS 的防守分支,首先執 行 Conservative Defense,若是沒有辦法回傳進攻方必勝,再 執行點典型的防守分支。(圖 3-13(b))
但是使用保守型 TSS 的狀況底下,若是回傳出找尋失敗(Fail),
其實並不代表進攻方就沒有必勝路線,在下一小節我們提出一個例 子,在傳統型 TSS 下是可以取得 Winning Threats Sequence 而在 保 守型 TSS 是找不到的,並且在下一節以傳統型 TSS、保守型 TSS、
混合型 TSS 做實驗比較。
圖 3-13 非典型 TSS 示意圖 (a) 保守型 TSS (b) 混合型式 TSS
3.4.3 實驗比較結果
在做三種 TSS 的數據比較實驗之前,由於五子棋相關棋類的遊戲 人類對局的棋譜並不多,我們採用 AI 自動對局的棋譜來作測試。首 先我們讓 AI 對局的時候,每一次都展開最好的 10 個 move 紀錄完整 的三層 Mini-Max Game Tree,扣除盤面重複與對稱的一共有 683 局,
以這些對局,讓我們設計的 AI 自動對局到遊戲結束,一共會產生
12743 個盤面,平均每局約 18 個著手盤面。這些盤面我們可以拿來 測試三種 TSS 的效能,並且可以把這三種盤面分類如下:
1. 每一種 TSS 都可以找出進攻方獲勝的盤面。此種狀況共有 3054 個盤面,例如圖 3-15(a)即為其中一個例子。
2. 保守型 TSS 找不出進攻方獲勝的盤面。此種狀況共有 77 個 盤面,例如圖 3-15(b)即為其中一個例子。
3. 三種 TTS 都沒有辦法找出進攻方獲勝的盤面。此種狀況共 有 9612 個盤面,例如圖 3-15(c)即為其中一個例子
圖 3-14 每種討論情況佔總盤面的比例
圖 3-15 TSS 盤面分類的實例
我們以上述的 12743 個盤面來測試三種 TSS 找出 Winning Threats Sequence 的成功率與效能,我們針對每一個不同的分類三種 TSS 作 測試,得到的平均數據結果列在表 3-12 中。
(a) (b) (c)
表 3-16 三種 TSS 在三種盤面狀況的效能數據表
從上面三個表得知,三種 TSS 的方式在效率方面以 Conservative TSS 的 效 能 最 為 優 越 , 唯 獨 美 中 不 足 的 狀 況 是 , 若 是 一 個 具 有 Winning Threats Sequence 的盤面,Conservative TSS 沒辦法百分百的 確定可以找出來(如圖 3-15(b))。在上述的實例中,所有能找到 Winning Threats Sequence 的共有 3131 個盤面,發現保守型 TSS 可以解決當 中的 3054 個盤面,成功率高達 98%。而混合型 TSS,雖然可以找出 必勝的 100%成功率,但所需要的搜尋節點數,卻是比傳統型多,甚 至更大於傳統型 TSS 與保守型 TSS 的總和。
因此,在要求 100%成功率的時候,我們應該採用傳統型的 TSS,
在比較在乎效率的時候,我們可以採用保守型的 TSS。