• 沒有找到結果。

1.1 研究背景

在電腦發展的領域裡有許多以機器代替人類智力的相關課題,而電腦對局是

其中的課題之一。在許多遊戲裡,電腦程式已被拿來和人類的玩家對抗,例如圍 棋、象棋、西洋棋、麻將和橋牌等等。西洋棋程式已可以打敗人類棋王;象棋程 式已經具備人類頂尖高手的棋力;但是圍棋程式目前還難以和人類高手抗衡。

遊戲可分成完全資訊遊戲(Perfect Information Games)和不完全資訊遊戲

(Imperfect Information Games)。前者是玩家可以完全看到遊戲的資訊,例如西 洋棋和雙陸棋;後者是玩家不能完全看到遊戲的資訊,例如盲西洋棋和橋牌。這 兩類型的遊戲又可以各自分成機率型的遊戲和非機率型的遊戲。雙陸棋和橋牌是 機率型的遊戲,而西洋棋和盲西洋棋是非機率型的遊戲。在非機率型的完全公開 資訊遊戲裡,電腦程式的實力很大程度上取決於遊戲的複雜度。暗棋屬於機率型 不完全資訊遊戲,玩家們難以找到通用的制勝策略取勝。

目前台灣電腦對局學會(Taiwan Computer Game Association, TCGA)、中華 民國人工智慧學會(Taiwanese Association for Artificial Intelligence, TAAI)和國際 電腦對局學會(International Computer Games Association, ICGA)的電腦奧林匹亞 比賽(Computer Olympiad)已經將暗棋列為比賽項目之一。

1.2 研究目的

暗棋是由象棋演變的一種玩法,使用象棋棋盤的一半,共有 32 格,剛好可

以放置象棋雙方共 32 個棋子。暗棋的棋子一次只能走一格,可以吃對方的棋子 中不大於自己的棋子,但是炮(包)的吃子步是隔一個棋子然後吃對方的棋子。

有時候下一盤象棋可以耗費一個小時甚至更久,但是下一盤暗棋很難達到這麼長 的時間。暗棋規則簡單,是人們打發時間的一種選擇。象棋是擒王戰,帥(將)

的重要性遠大於其它棋子。暗棋是殲滅戰,帥(將)的重要性不像象棋裡那樣重 要。另外,暗棋有運氣成分,有時候翻出一個暗子會對盤面產生巨大的變化。就 遊戲的本質而言,暗棋和象棋是不同類型的遊戲。

電腦暗棋程式不斷改良,目前還難以證明能和人類高手的對局中能佔到上 風。暗棋的對局結果取決於運氣和技術,運氣的部分難以掌握,而技術的部分可 以分成翻子和走子兩方面。翻子或走子除了要考慮能不能吃對方的棋子之外,還 要考慮能不能保護自己的棋子,或者佔據重要的位置。有時候一個棋子的存活與 否,或者是盤面上棋子的佔位,會對局勢造成很大的影響。如果翻子和走子之中 有幾個比較好的選擇,這時候要評估它們可能的效益和風險。另外,盤面的優劣 程度或多或少會影響到策略的進取程度。

實作電腦暗棋程式的搜尋樹有兩種較常見的方式,一種是使用 Minimax 搜尋 樹搭配 Alpha-beta Pruning(本程式使用的方式)或是類似的方式,另外一種則是

使用 MTCS(Monte-Carlo Tree Search)演算法[1]。前者可以找到確定的一組解,

而後者則是運用模擬的方式搜尋,每次找出的解未必是相同的。

在沒有殘局庫的情況下,程式要搜尋才能找到對局的最後結果。在雙方剩下 最後幾個棋子的時候,程式有可能找不到必勝的步或是沒有避開必輸的步。建立 殘局庫可以幫助程式更快找到最後結果,在雙方剩下最後幾個棋子時的走步會變 得更精準。

我們的目的是研究出一個具有一定棋力的程式,可以對當前的盤面做出評 估,同時具有良好的出步速度。

1.3 研究意義

暗棋和象棋的不同之處之一,在於暗棋有運氣成分。象棋棋力差很多的兩人

對弈,棋力較低的那方幾乎沒有勝算。但玩暗棋即使雙方棋力差很多,棋力較低 的那方偶爾也能贏。暗棋程式除了在盤面上做出足夠深的搜尋之外,還要考慮暗 子的不同種可能,以及在翻開暗子之後對於盤面的影響。

程式在搜尋時要找出所有可能的走步,以及這些走步產生的後續發展。搜索 得愈快代表程式可以在有限的時間內搜索得愈深。另外,審局的準確性也是棋力 強弱的一大指標。

對於人類來說,翻子和走子之間的選擇可以按照當時的局面來判斷,程度好 的棋手也容易做出相對較好的選擇。目前程式和人類的高手比起來可能缺乏足夠

的大局觀,程式較難預測在十幾回合後潛在的機會或威脅。在短兵相接的盤面上 程式也許能發揮得不錯,但是程式在某些盤面上的走步可能會缺乏一個好的方 向。程式開發者設計的策略使程式可以應付許多盤面,但也可能使得程式在某些 情況下走出很差的棋步。如何讓程式的策略不要出現大錯誤並且有良好的棋力是 程式開發者得思考的問題。

1.4 論文架構

本論文共有五章。第一章介紹研究的背景、目的和意義。第二章介紹暗棋棋 規、相關論文介紹以及近幾年 Computer Olympiad 暗棋項目的比賽結果。第三章 介紹本程式使用的資料結構和搜尋演算法。第四章介紹本程式的改良方式,包括 棋子的分數設置、預測搜尋時間、殘局庫、翻子策略和其它在盤面上的特殊處理 方法。第五章是結論和未來的研究方向。後面還有附錄和參考資料。

相關文件