我們所撰寫的暗棋程式,在CPU:1.83GHz、記憶體:512MB 的環境下,分
別與極真科技的暗棋王還有人類玩家(即本論文作者、網路玩家)進行 20 盤的
是以rule base 來撰寫人工智慧的部份,所以在很多情況下會誤判情勢,而最終被
我們以搜尋演算法為核心的程式給擊敗。再看我們的程式與人類玩家實戰測試的
結果,仍有50%(=
8 8
8
+ )的勝率,可見我們的程式已有接近人類玩家的棋力。
而之所以會有敗績,乃是因為暗棋本屬於不完全資訊含機率性的遊戲,當程式在
嘗試翻子的時候,只能以近似的算法,來算出可能翻哪個位置比較有利,但如果
翻到的棋子真的很差的話,或是對方剛好翻到很好的棋子的話,自然就會導致最
後的敗果。而從實戰測試結果可以發現,即使在含有機率的情況下,我們以搜尋
演算法為基礎核心的方式,還是比用rule base 的方式要來的好。如圖 4-1,紅方
是暗棋王,黑方是我們的程式,現在輪黑方走:
圖4-1 與暗棋王實戰圖
黑方走了F2-F1 的妙著,如圖 4-2,輪紅方走:
圖4-2 與暗棋王實戰圖
紅方走了G2-H2 仕吃卒,準備再吃車,如圖 4-2,輪黑方該我們的程式走:
圖4-3 與暗棋王實戰圖
此時黑方走了E1-D1 象吃兵後,紅、黑方雙進行如下走步:C1-D1 帥吃象,E2-E1
棄士,D1-E1 帥吃士,如圖 4-4,輪黑方走:
圖4-4 與暗棋王實戰圖
黑方最後走了E4-E1 包吃帥。從圖 4-3,紅方走了 G2-H2 吃卒後,黑方一連串棄
象、棄士,而到最後包轟帥的手段,真叫人拍案叫絕。倘若紅方沒有G2-H2 吃卒
,或許可以防止黑方後來的一連串棄子取帥的手段。此例(如圖4-2)輪紅方走,
若改由我們的程式來下紅方,則會走G2-G1 捉包,因而避開被吃帥的危機。由此
可見,搜尋的威力此時勝於rule base 對情勢的判斷。而面對人類玩家是以策略性
思考時,搜尋仍讓我們所走出來的棋步或翻子,具有相當一定的水準,使得與人
類玩家進行實戰測試時,仍有五成的勝率,可以與人類玩家相庭抗衡。
第二節 未來研究方向
我們的暗棋程式是以搜尋演算法為其主要核心,所以若是能將搜尋的部份透
過平行化計算或是多執行緒的處理,則可以提高搜尋的速度。一般而言,棋類程
式的棋力與搜尋深度成正比,當然暗棋程式也不例外,因此若採用平行計算的方
式,將對局樹做適當的切割後,交由給不同的處理器去做搜尋,則能大幅提高搜
尋的速度,加深搜尋深度,進而提高棋力。除了將搜尋改成平行的計算方式外,
其實也可以考慮如何讓比較重要的路徑做延伸搜尋(Extension),而讓比較不重
要的路徑做減少深度的搜尋(Reduction),這樣的做法也可以使棋力提高,是值
得研究的方向。
另一方面就是審局函數的改良,我們目前的審局函數只有單純的子力價值分
數,所以當殘局盤面可能要花十幾手,甚至二十幾手棋才會有吃子的情形時,因
為搜尋的深度有限,無法看到需要花那麼多手棋才會顯示出來的盤面反應,而導
致走出來的棋步,無法以目標導向的朝著正確的路徑前進。所以若是能加入一些
棋形特徵,例如考慮棋子間的位置關係,或是兵種之間的組合,都能幫助我們在
殘局盤面時,在有限深度搜尋的情況下,仍可以有目標導向的朝著較正確的路徑
前進。所以改良審局函數,加入一些棋形特徵的判斷,也是很值得研究的方向。
參考著作
[1] “Wikipedia",網址:http://zh.wikipedia.org/wiki/。
[2] “象棋百科全書",網址:http://www.elephantbase.net/index.htm。
[3] 王小春,“人機博奕",重慶大學出版社,2002 年 6 月。
[4] 吳身潤,“人工智慧程式設計",維科圖書,2002 年 3 月。
[5] 何宏發、謝秋桂,“電腦象棋-原理、設計、實作及工具箱",第三波出版社,
1988 年 12 月。
[6] 方裕欽,“UCT 算法的適用性及改進策略研究-以黑白棋為例",國立臺灣 師範大學資訊工程研究所碩士論文,2008。
[7] 林子哲,“「深象」象棋軟體平行化之研究",國立臺灣師範大學資訊工程 研究所碩士論文,2007。
[8] 涂志堅,“電腦象棋的設計與實現",中山大學碩士論文,2004。
[9] 郭哲宇,“電腦象棋擴大空步剪裁演算法的設計及實作",國立臺灣師範大 學資訊工程研究所碩士論文,2007。
[10] 黃文樟,“電腦象棋深象中局程式的設計與實作",國立臺灣師範大學資訊 工程研究所碩士論文,2006。