哈希技术在中国象棋机器博弈系统中的应用研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8卷 第17期 2008年9月167121819(2008)1724869204
科 学 技 术 与 工 程
Science Technol ogy and Engineering
Vol 18 No 117 Sep 12008
Ζ 2008 Sci 1Tech 1Engng 1
哈希技术在中国象棋机器博弈系统中的应用研究
高 强 郭 琛
(大连交通大学软件学院,大连116052)
摘 要 论述了哈希技术在中国象棋人机博弈系统的搜索引擎和开局库中的应用以及实现原理,论证了基于哈希技术的编码方式的开局库的优越性,对基于哈希技术的置换表算法分析了使用单一的置换表所存在的缺陷,并通过数据证明了一种双置换表的优越性,使置换表这一启发式搜索算法在搜索引擎中的作用更加合理。
关键词 博弈树 置换表 搜索引擎 开局库中图法分类号 TP319; 文献标志码
A
2008年5月4日收到
第一作者简介:高 强,(1980—),男,辽宁沈阳人,硕士。
研究方向:机器博弈。
中国象棋是历史上最为悠久的棋类,早在两千多年前的战国时代就有了中国象棋的记载,它至今仍是华人最喜欢的棋类之一。
而人机博弈问题是近年来比较热点的问题,机器博弈被专家们描述为人工智能的果蝇
[1]
,就是说人类对机器博弈的研究
衍生了大量的研究成果,这些成果对更广泛的领域产生了重要影响。
国外的研究人员经过五十多年的对国际象棋博弈系统的探索,终于I B M 公司在1997年开发出了超级计算机“深蓝”,并且战胜了世
界国际象棋大师卡斯帕罗夫;而中国象棋的历史更为悠久,中国象棋人机博弈系统一般被分为:
[2]
数据表
示、走法生成、搜索引擎、估值核心、开局库、残局库。
搜索引擎在人机博弈系统中起着举足轻重的作用,也是国内外学者研究的重点。
而基于哈希技术的置换表是启发式搜索中最为重要的算法,在人机博弈系统中起着十分重要的作用。
作为混合博弈树搜索引擎中的一种启发式搜索算法,在搜索中如果有和置换表中相同的节点,不用再向下搜索,可以直接调用表中的记录,这样省去了很多时间,从而提高了搜索引擎的效率。
而开局库是当前具有较高水平的象棋软件不可缺少的一个重要组成
部分,数据结构采用哈希技术的开局库无论在占用空间或者在搜索效率上都有很大的优势。
1 置换表的实现原理
如果要利用已经搜索过的节点的结果,我们就要用一张表把搜索过的节点记录下来。
然后在后续的搜索中,察看记录在表中的这些结果,如果将要搜索的某个节点已有记录,就直接利用记录下来的结果
[3]。
这种方法叫做置换表(Trans positi on Ta 2
ble,简称TT )。
如果将A l pha 2Beta 搜索过程中每一节点的结果都记录下来,则在任意节点向下搜索之前先查看这些纪录,就可避免上述重复的操作。
通常情况下,实现置换表采用的是哈希技术,因为这一技术可以解决置换表中容易出现的大部分冲突问题。
对要搜索的每一节点,计算出它的一个哈希值(hash I ndex,通常是一个32位数对哈希表大小取模)以确定此局面在哈希表中的位置。
计算另一个哈希值(Checksum )来校验表中的数据项是否是所要的那一项。
这通常是一个64位数。
基于哈希技术的置换表算法表示棋盘状态的方法:
(1)生成当前棋盘上的各个位置上的棋子的64
位随机数:hashkey64[将],hashkey64[车],hash 2
key64[马],…;
(2)将这些随机数进行加总,即进行异或操作:
hashkey64[将]σhashkey64[车]σhashkey [马]σ…。
这就是描述当前棋盘状态的64位数;
(3)如果某一棋子移动了,那么要进行如下操作:
hashkey64[总]σhashkey64[提址]σhash2 key64[落址]。
因此本文的置换表算法就是基于Z obrist哈希技术[4]的一种启发式算法,也是各种启发式搜索[18]中最为重要的一种搜索算法。
哈希表[4]的结构如下: HASH I TE M hashtable[HASH_T ABLE_SI ZE];
其中HASH_T ABLE_SI ZE表示哈希表的大小,该结构中的元素类型为HASH_I TE M,可以是一个结构体。
2 一种改进的置换表启发式搜索算法
通常情况下,在搜索引擎中使用单一的置换表存在一些缺陷:
(1)对于始终替换表,你可能在做6层的搜索,但是如果你在散列项中得到10层搜索的结果,就可能根据这个值来截断。
在后来的搜索中,这个散列项被覆盖了,因此你在这个结点上得到了两个不同的值。
这就出现了什么时候才替换的问题。
(2)如果你使用“同样深度或更深时替换”的策略,那么你的散列表可能最终会被过期的但很深的结点所占满,这样的结点可信度不高。
211 改进的置换表的替换策略
本文提出使用两个置换表来记录搜索过的结点信息,并且加入了一个判断。
两个表中的第一个表采用了深度优先策略,第二个表采用了始终覆盖策略[5]。
记录置换表时,如果第一层没能覆盖(因为深度太浅),那么覆盖第二层;读取时,如果第一层没有命中,那么读取第二层。
212 双置换表的优点
在中国象棋人机博弈系统中采用双置换表可以提高系统读表的命中率,从而减少了由于搜索而耗费的时间;它既避免了使用单一的深度优先表所存在的更新的但是相对较浅的记录无法存入表中的问题,也避免了使用单一的始终替换表所存在的表中只存储更新的记录,而忽略了记录的搜索深度的问题。
双置换表的存取结构如图1所示。
图1 双置换表的有取结构
3 测试分析
前面提到,双置换表算法提高了系统查表的命中率,因此它相对于单置换表,电脑平均每走一步系统搜索的节点数应更少。
本人将单置换表和双置换表分别加入到相同的搜索引擎中并采用同一步走棋测试二者在搜索节点数上的差异:
搜索引擎+单置换表搜索引擎+双置换表
第一层4545
第二层155155
第三层20511642
第四层110156554
第五层12398956368
第六层1126494292064
通过测试可以看到,双置换表搜索的节点数少于单置换表,从而提高了搜索效率,因此得出双置换表要优于单置换表。
0784科 学 技 术 与 工 程8卷
4 基于哈希技术的开局库的设计原理
无论我们的搜索引擎如何出色,我们还是很容易发现,程序在棋局的开始显得有点不知所措,而且在棋盘上双方态势近似相等的情况下,象棋程序的搜索效率非常低,浪费了很多时间。
因此,在开局阶段,如果通过读库来代替搜索,既可以节省很多比赛用时,而且可以避免系统走“傻棋”。
开局库的设计分为制作和读取两部分,制作开局库的流程图如图2。
图2 开局库制作的流程图
基于哈希技术的开局库文件的数据结构与置换表相似
[6]
,开局库中的局面同样采用一个64位整
数表示,使用一个32位整数表示该局面的状态。
存储方式采用了聚簇索引,即取64位整数的前15位作为聚簇索引来存放相应听得开局库文件。
这种开局库的数据结构如图3。
图3 开局库结构
在读取库文件的过程中,首先要根据当前棋局通过博弈树展开一层搜索,并采用走法产生器将展开后的子节点转换成64位哈希值,再通过位操作取哈希值的前15位作为索引,在库中进行查找,对于找到的一组库文件再利用库中存放的相应的32位状态值,评价其优劣。
具体的流程如图4。
图4 评价优劣的流程图
目前还有一种比较常用的开局库的数据结构是FE N 串的形式,表示中国象棋初始状态的FE N 如下:
rnbakabnr/9/1c5c1/p1p1p1p1p /9/9/P1P1P1P1P /1C5C1/9/RNBAK ABNR w --01。
如果将FE N 串按长度为50来计算,那么一行表示一个局面的FEN 串占400个机器位,而基于哈希技术的开局库中每个用来表示某一局面的哈希值只占96个机器位,所以基于哈希技术的开局库占
用的存储空间相对来说要更小。
由于基于哈希技术的开局库在系统读库的过程中采用了聚簇索引,所以查找效率更高;而对于FE N 串形式的开局库,系统采用的是顺序查找的方
式,所以查找速度相对较慢;基于哈希技术的开局库的每个棋局都有评价值,在每盘棋结束还会根据结果修改该值,所以这种数据结构的开局库更加的合理,并且能够提高象棋软件的胜率。
5 结论
本文论述了基于哈希技术的开局库和置换表算法在中国象棋人机博弈系统中的实现原理,论述了基于哈希技术的开局库的设计原理及优越性;针对单置换表所存在的缺陷,构造了一种双置换表的替换策略,采用数据集证明了双置换表算法的优越性。
1
78417期高 强,等:哈希技术在中国象棋机器博弈系统中的应用研究
参 考 文 献
1 徐心和,王 骄,徐 峥,等.中国象棋计算机博弈问题研究(一)中国象棋计算机博弈的难点分析1
2 王小春.游戏编程(人机博弈).重庆:重庆大学出版社,2002
3 B reuker D M,U iter wijk J W H M,van den Herik H J.I nf or mati on in trans positi on tables.Advances in Computer Chess81edit ors H.J.van den Herik,J.W.H.M.U iter wijk,1997,199—212.University of L i m2 burg,Maastricht,The Netherlands.4 Zobrist A.A ne w hashing method with app licati on for ga me p laying.
technical Report88,Computer Science Depart m ent,University ofW is2 consin,Madis on.1970
5 B reuker D M,U iter wijk J W H M,van den Herik H J.Rep lace ment sche mes f or trans positi on tables.I CCA Journal,1994;17(4): 183—193
6 L incke T R.Positi on value rep resentati on in opening books1Sp ringer Berlin/Heidelberg,2003
Technology of Ha sh i n g and Its Appli ca ti on Research i n
Hybr i d Gam e Tree Search Eng i n e of Ch i n ese Chess
G AO Q iang,G UO Chen
(Soft w are I nstitute of Dalian J iaot ong University,Dalian116052,P1R1China)
[Abstract] The app licati on and the realized theory of trans positi on table in searching engine are expounded and opening book of Chinese chess man2machine match syste m,p r oved the advantage of coding of opening book based on hashing and analyzes the defects which the single trans positi on table based on hashing could be.A trans positi on table2double trans positi on table is app lied in the hybrid ga me tree search engine of Chinese chess man2machine match syste m1The advantage of the i m p r oved trans positi on The article is p r oved with data collecti on.It makes trans2 positi on tableπs affect on search engine more reas onable.
[Key words] ga me tree trans positi on table searching engine opening book
2784科 学 技 术 与 工 程8卷。