C/C++中国象棋程序入门与提高
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 中国象棋程序

中国象棋程序,也即中国象棋机器博弈,是一种能够自动下中国象棋的程序,根据当前棋局的状况,走出一步合理的棋。象棋程序既可以与人下棋,也可以与另一个象棋程序进行较量。中国象棋程序在中国发展得比较晚,研究的人不多,了解的人也不多。

1.2.1 中国象棋博弈程序组成

中国象棋博弈程序主要由局面表示、走法表示及生成、局面评估、搜索算法、界面控制等5大部分组成。

局面就是一盘棋经过若干回合之后当前所处的形势,包括棋盘、红黑双方所剩棋子及其在棋盘上的分布、当前该走棋一方、双方所剩时间、双方所剩走棋步数等内容。局面表示是象棋程序的基础,局面表示的好坏直接关系到走法生成、局面评估和搜索算法的效率,从而影响象棋程序得到的最佳走法。

象棋程序每一次思考的目的是获取一个最佳走法(至少在程序看来是最佳的),要实现这一目的的简单方法就是生成全部所有可能的走法,然后再一个一个的比较,找出最佳的一个。实际上程序也是这样做的。

局面评估就是判断局面对红方(或者黑方,或者是当前走棋一方)的优势,并把优势进行量化。由于象棋程序搜索复杂度太大,搜索函数不可能搜索到棋局终了的状态,所以必须在某个深度的结点上结束并返回上一层,这个结点并没有达到棋局结束(胜平负),应该给它一个值,反映局面状况,对红方有利还是对黑方有利,有多少优势。必须把这种优势量化,以便于不同结点的优势可以比较,以确定哪一个结点更好。

中国象棋的局面变化实在是太多了,有时候一个局面可能走法达100多种,一般局面也有40多种走法。要完全搜索10步棋需要3.3年,即使完全搜索7步棋也要27分钟(按每秒搜索108个结点计)。按一盘棋平均100步(50个回合)计,要完全搜索100步是绝对不可能的。如何让计算机在有限的时间内搜索到更多的空间,搜索到更深的步数,是计算机博弈程序必须考虑的问题。这除了与计算机硬件有关之外,与搜索算法关系很大,这是因为在搜索树空间中有些分支是多余的,搜索的时候可以跳过某些分支。跳过的分支越多,搜索的速度越快,但漏掉最优解的可能性也在增加。搜索算法必须又快又准的找到最优解。

一般棋手不可能理解计算机内的数据结构,同样计算机也很难看懂普通的象棋棋盘,所以要实现人与计算机博弈程序的较量,必须要有一个中介,在人与计算机博弈程序之间传递信息。这个中介就是一个图形界面程序,它将局面及计算机走棋以图形界面展示给棋手,将棋手的走棋以特定数据结构传递给计算机博弈程序。博弈程序可以自带一个图形界面,它接收用户(棋手)的输入,即棋手所走的棋,然后将自己思考后所走的棋以图形显示在屏幕上,展示给棋手。

1.2.2 中国象棋程序研究现状

中国象棋程序的研究是从国际象棋程序中延伸而来,中国象棋与国际象棋有很大的相似性,国际象棋程序研究的很多理论与技巧都可以很好应用到中国象棋程序中。目前中国象棋程序大概可以分为两类,一类是商业应用研究,另一类是理论研究。

从目前来看,商业应用研究的水平比较高,也有很多款商业中国象棋软件在市场上销售。商业软件要迎合市场用户的需要,自身要有很高的水平,同时要简单易用性,有学习教学的功能。既可以作为初学者的教学软件,又能够作为专业的训练软件。

作为中国象棋程序的理论研究型,则主要从人工智能的角度,研究中国象棋程序中所包含的人工智能知识,尽可能快的搜索,并行搜索技术,机器学习等,同时将这些研究成果应用到其他的领域。

从技术上看,中国象棋程序中涉及到的基本技巧都有比较深的研究,包括数据结构的设计、搜索算法的应用,局面形势的估计等。近年来发展的新趋势有:

随着多核和多处理器的快速发展,2CPU,4CPU,8CPU,以及更多CPU处理器应用到中国象棋程序中,并行搜索技术自然而然的得到研究和应用。

搜索深度一再得到提高,10层搜索树眨眼间就搜索结束了,搜索深度有的已达到18层。

中国象棋的棋规非常复杂,在长将、长捉、长打、循环走法的处理上,非常难以处理。软件开发人员和一般象棋爱好者,如果没有经过长期研究,极难理解透彻。这一点也对象棋及象棋博弈的发展十分不利。

博弈引擎概念得到广泛的应用,在第二届中国象棋博弈锦标赛上,有8支中国象棋参赛队使用象棋巫师作为界面,而只开发引擎程序。在自己开发界面的软件中,商业软件占去绝大部分。

1.2.3 全国计算机博弈锦标赛

机器博弈在中国起步较晚,科研经费不足,研究人员少,群众基础不够,不论是在人工智能领域或者是棋类游戏领域都还不是特别重视。以比赛提高影响、促进学习交流成了人工智能学者的共识。

第一届全国计算机博弈锦标赛。

2006年,为庆祝人工智能学科诞生50周年,浪潮集团赞助、中国人工智能学会举办了了“浪潮杯”首届中国计算机博弈锦标赛暨2006机器博弈学术研讨会,“浪潮杯首届中国象棋人机大战”。2006年8月,来自全世界18支中国象棋计算机博弈软件代表队参加了锦标赛,分别是棋天大圣,象棋奇兵,象眼竞技,理治棋壮,棋乐无穷,棋之梦,将神传说,落花,青羽堂,天机,象棋ABC,象棋旋风,宝岛一号(台湾),兵芯(台湾),深象(台湾),梦入神机(美国),神乎棋技(美国),谢谢大师(法国)。

前五名棋天大圣,象棋奇兵,象棋旋风,天机,将神传说分别与徐天红,卜凤波,柳大华,张强,汪洋进行了中国象棋人机大战。结果棋软以3胜5和2负略占上风。

第二届全国计算机博弈锦标赛。

第二届全国计算机博弈锦标赛暨2007全国机器博弈学术研讨会于2007年10月3日至8日在重庆工学院举行。虽然没有进行人机大战,但博弈的棋类大大扩展,除了中国象棋,还包括围棋,9路围棋和六子棋。

中国象棋参赛队共有16个,分别是:象棋名手、棋王、将神传说、理治棋壮、3D象棋、佳佳象棋、象棋交龙、花溪棋友、YSSY、棋天大圣、棋之梦、天机、象棋ABC、象棋奇兵、象棋旋风、决战象棋。最后获得中国象棋的前三名分别是,象棋旋风,天机,棋天大圣。

六子棋参赛队共9个,分别是:巴将军、理治棋壮、飞飞翔宇、连棋之星、珠连棋合、棋开得胜、长江后浪、棋天大圣、花溪棋友、六子棋星。

9路围棋参赛队共7个,分别是:理治棋壮、长江后浪 、北邮2队、北邮3队、手谈、珠连棋合、断。

围棋参赛队共9个,分别是:断、九头鸟、理治棋壮、围棋之星、手谈、海洋、北邮1队、北邮2队、北邮3队。

第三届全国机器博弈锦标赛。

第三届全国机器博弈锦标赛于2008年10月在北京举行。同时还进行了国际奥林匹克博弈比赛。