计算机象棋,是指人工智能象棋对弈软件。计算机象棋软件的制作,分成开局、中盘、残局三个部分,各自有不同的算法,开局主要以存储的开局棋谱为本,中盘与残局则运用审局函数和对局树的计算,但残局必须考虑特例的计算。
最早的计算机程序的象棋游戏是1986年的洛斯阿拉莫斯象棋。由于象棋与国际象棋许多相似之处,再加上计算机国际象棋发展较为成熟,计算机象棋软件设计的架构跟方法大致上都是参考计算机国际象棋。
2006年最好的计算机象棋软件,已可以和顶尖棋士相抗衡。
最早由宏碁计算机开始举办计算机象棋比赛,从 1988 年到 1990 年止。另一个是计算机奥林匹亚竞赛中有计算机象棋的项目,从 1989 年办到 1992 年暂停,2001 年起继续每年举办。最近几年计算机象棋发展越来越热络,2004 年起世界计算机象棋争霸赛每三年举办一次。中国机器博弈锦标赛 2006 年起开始每年举办。
1985 年到 1990 年宏碁计算机就曾办过人对计算机的竞赛。之后偶有计算机程序参加人类的象棋比赛或检定赛,但时常遇到阻挠,譬如不予排名甚至不准参赛。 人脑对计算机象棋大赛 (页面存档备份,存于互联网档案馆)自 1999 年开始每年举办。
为了让象棋程序与程序之间能够自动下棋,因此必须定出了一些共通协议(protocol),譬如棋盘如何表示、棋步如何表示、或是复杂一些的时间控制。比较早公开提出的有 cxboard 及 浅红 plugin spec。现在比较广为流行的是基于国际象棋协议修改而来的 中国象棋通用引擎协议(UCCI)。
由于人类已累积相当丰富的开局知识,因此开局纯用计算机计算是无法胜过人类的。普遍的做法是搜集棋谱,统计分析各种走法,制成开局数据库。更进一步则会透过人类专家订正开局库的内容/加入最新的开局研究成果。
计算机象棋对残局的处理主要有两种方法,一是编写大量规则,当盘面符合某些条件则调整评分函数,这个方法的优点是可以将棋谱或专家研究的结果编写入程序内,缺点是例外可能很多。另一种则是利用计算机强大的计算力与存储空间,穷举一个兵种所有的状况,做成数据库,优点是数据库内的资料都很精确(某个盘面的输赢,距离输赢步数),但缺点是建造数据库旷日费时,在实战中还不够实用。因此实战程序都是采用第一种方法,少数程序会再利用残局库作辅助。
残局库研究困难在于象棋棋规的处理,还有如何快速建造大数据库。