電腦象棋

電腦象棋

一般來說,象棋劃分成開局、中盤、殘局三個階段,在製作電腦象棋時,這三個階段的演演演算法也會不同,開局階段大多以資料庫儲存開局棋譜,下棋時就由資料庫查詢得知下一手,當然啦,棋局不可能儲存無限多,當局勢發展超出資料庫範圍,就進入了中盤。如果不要求棋力很高,或是初次製作電腦象棋,中盤和殘局可以不用細分,用同樣的演演算法就行了,一般來說程序中一定會有個審局函數和一個對局樹,這也是這篇文章的重點,當進入殘局階段,因為象棋的殘局有許多特例,通常電腦象棋會特別為這些特例建立一個殘局資料庫和特殊的演演算法,這裡先不討論。

審局函數


評估盤面形勢

審局函數是作用在於評估盤面的敵我形勢,玩過象棋大師2的人就會知道,在對奕中畫面會有個數字隨盤勢而變化,那就是審局函數算出來的值,電腦透過這個值可以判斷目前的局勢。審局函數判斷棋力的依據,主要根據下列三項:

子力

圖表
圖表
子力是評做局勢最簡單的方法,高手讓對手雙馬或一車來平衡棋力,就是最好的說明,我們可以看看前人怎麼來設計,應該特別注意的是,象棋的規則勝負在於吃掉對方的主帥,所以將(帥)的值應大於所以其餘子力的總和。

位置

圖表
圖表
在象棋的開局裡,對局雙方通常會儘速的將車馬炮移到重要位置上,尤其是車一定要搶住要線,可見位置對局勢的影響。在為位置評分時,可以為每個不同的棋子設計一個二維陣列,用以記錄棋盤上每個點的重要性,下面以馬()為例。

靈活度

在象棋里,每一種棋子都有它自己的限制,如果在下棋的過程中,讓棋子限制變很多,將會使棋子的能力降低,所以在評估局勢時,棋子的靈活度也是考慮的重點。

電腦象棋對局樹


圖表
圖表
下象棋時,棋力越高的人,就能看到越遠的著手,一個能看到十三步以後著手的人,比一個只能看到五步著手的人棋力肯定是要高。在電腦象棋里,使用對局樹來達到往前看的能力。如下圖是對局樹的一個範例。當建好對局樹之後,再用廣度優先搜索或深度優先搜索將最佳著手找出來,在象棋比賽里會有時間限制,所以通常會以廣度優先搜索先搜尋到某個深度之後,再針對幾個重要著手做深度優先搜索。要特別注意的是,審局函數設計越精準棋力固然會越高,但是,越精準的審局函數也會計算越久,因為對局樹每個結點都要調用審局函數一次,如果審局函數計算太久,在有限時間內,對局樹就不能建立太多層,這將影響到電腦的棋力,如何在兩者間取得一個平衡,就要靠經驗了。
因為象棋的變化很多,如果所有可能著手都要建立對局樹,那麼對局樹將會非常龐大,所以又有各種演演算法被發展出來,用來對對局樹進行剪枝,將不必要的著手先剪枝,目前最常用的當屬Alpha-Beta剪枝法。

電腦象棋大事紀


1988,宏碁電腦與象棋協會舉辦第一屆電子計算機象棋大賽,《象棋大師》程序獲得冠軍
1989,《象棋大師MS2》參加新秀杯升段賽,升為二段棋士
1990,第一屆計算機奧林匹克大賽
1991,《將族》電腦象棋遊戲公開發行
1998,《ELP》參加昭榮杯升段賽,晉陞為五段棋士
1999,開始舉辦人腦對電腦象棋大賽
2001,《ELP》參加新莊市長杯全國比賽,晉陞為六段棋士
2004,第一屆世界電腦象棋爭霸賽
2004,《棋海無涯》參加啟泰杯八段賽,獲得冠軍。
2006,首屆中國象棋計算機博弈錦標賽暨2006中國機器博弈學術研討會
2006,《棋天大聖》兩和象棋等級分第一的許銀川
2007,第二屆中國計算機博弈錦標賽,《象棋旋風》獲得冠軍
2008,The 13th International Computer Games Championship,《倚天》獲得冠軍
2009,2009年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2009,在人機大戰中,象棋軟體《象棋名手》、《佳佳象棋》、《陶情弈趣》以4勝2和的總成績贏得和劉星、黃海林、朱琮思三位大師的比賽
2010,2010年中國計算機博弈錦標賽,《新象棋旋風》獲得冠軍
2011,2011年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2012,2012年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2013,2013年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2014,2014年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2015,2015年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2016,2016年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2016,2016年楚河漢界杯亞洲象棋人工智慧對決邀請賽,《象棋名手》獲得冠軍
2017,2017年中國計算機博弈錦標賽,《象棋名手》獲得冠軍
2017,2017年第二屆楚河漢界杯亞洲象棋人工智慧對決邀請賽,《象棋旋風》獲得冠軍
2018,2018年中國計算機博弈錦標賽,《象棋名手》獲得冠軍