📄 棋弈软件基础——残局库对引擎棋力的负面影响.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.elephantbase.net/computer/egtbweak.htm -->
<HTML><HEAD><TITLE>棋弈软件基础——残局库对引擎棋力的负面影响</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 6.00.3790.2759" name=GENERATOR></HEAD>
<BODY background=棋弈软件基础——残局库对引擎棋力的负面影响_files/background.gif>
<DL>
<DIV align=center>
<CENTER>
<DT>《<A href="http://www.chessit.net/" target=_blank>国际象棋译文苑</A>》文摘
</CENTER></DT></DIV>
<DIV align=center>
<CENTER>
<DT> </CENTER></DT></DIV>
<DIV align=center>
<CENTER>
<DT><FONT face=隶书 size=6>残局库对引擎棋力的负面影响</FONT> </CENTER></DT></DIV>
<DIV align=center>
<CENTER>
<DT> </CENTER></DT></DIV>
<DIV align=center>
<CENTER>
<DT><FONT face="Times New Roman">Aaron Tay</FONT> </CENTER></DT></DIV>
<DT>
<DT> 说<FONT face="Times New Roman">EGTB(</FONT>残局库<FONT
face="Times New Roman">)</FONT>有可能降低棋弈引擎的水平,这乍一听起来好像违反了常识。关于全套的<FONT
face="Times New Roman">3</FONT>、<FONT face="Times New Roman">4</FONT>、<FONT
face="Times New Roman">5</FONT>子残局库究竟对引擎的水平有多大帮助大概是有争论,有些人认为能提高<FONT
face="Times New Roman">50</FONT>个等级分,有些人认为最多<FONT
face="Times New Roman">20</FONT>分,甚至有些人认为没有任何提高帮助<FONT
face="Times New Roman">(</FONT>曾有测试指出<FONT
face="Times New Roman">Crafty</FONT>用或不用残局库,棋力并没什么实质性不同<FONT
face="Times New Roman">)</FONT>。持最后一种意见的认为应取决于设计引擎时给它加入了多少残局知识,不过用上残局库也应该不会对引擎有妨碍。但读完此文你会发现,在有些局面里使用残局库的确会导致棋力水平的降低,或者使引擎为寻找最佳着法所花的时间更长。目前<FONT
face="Times New Roman">6</FONT>子残局库还不大采用,本文只研究<FONT
face="Times New Roman">5</FONT>子及以下的残局库。以后的随技术进步以后再说。<FONT
color=#000080>【译注:而且本文只主要说最常用的</FONT><FONT face="Times New Roman"
color=#000080>Nalimov</FONT><FONT color=#000080>式残局库】</FONT>
<DT> 你可能认为那些局面很少出现而不以为意。要说明的是,我们认为残局库的使用能提高引擎棋力,是因为引擎不但在局面已经出现时、而且可能还在搜索时就能调用它们【译注:即哪怕当前局面虽然在残局库里没<FONT
color=#000080>有,但如果即将进入了,于是引擎在进行更深搜索时就已经可以预先探测调用相关残局库了;搜索</FONT><FONT
face="Times New Roman" color=#000080>(search)</FONT><FONT
color=#000080>指只凭引擎的算法进行棋步寻找计算;探测</FONT><FONT face="Times New Roman"
color=#000080>(probe)</FONT><FONT
color=#000080>指对残局数据库进行棋步寻找探查;至少在本译文中如此定义】</FONT>。但我也可以指出,这有些因素反而可能妨碍引擎,以致抵消甚至损害使用残局库的优越性。这里列出一些残局库如何降低棋力的可能性<FONT
face="Times New Roman">(</FONT>从最轻微的到最严重的<FONT
face="Times New Roman">)</FONT>。
<DT>
<DT><FONT face="Times New Roman" size=4><STRONG>1) </STRONG></FONT><FONT
face=楷体_GB2312 size=4><STRONG>不完整的残局库</STRONG></FONT>
<DT>
<DT> 这是第一个可能性。已经“很著名”的了,避免办法也容易,要么使用完整的,要么在引擎设计时解决。之前的文章已谈到过这个问题。
<DT>
<DT><FONT face="Times New Roman" size=4><STRONG>2) </STRONG></FONT><FONT
face=楷体_GB2312 size=4><STRONG>残局库不考虑王车易位</STRONG></FONT>
<DT>
<DT> <FONT face="Times New Roman">Nalimov</FONT>式残局库是不考虑王车易位的。
<DT> 如图<FONT face="Times New Roman">1</FONT>局面,黑先,条件是后翼易位还可行<FONT
color=#000080>【译注:所以如果你在自己的软件上摆这个局面测试时,一定不要忘记设定易位可能】</FONT>。
<DIV align=center>
<CENTER></DIV>
<DT> </CENTER>
<DIV></DIV>
<DIV align=center>
<CENTER></DIV>
<DT><IMG height=256 src="棋弈软件基础——残局库对引擎棋力的负面影响_files/egtbweak1.gif" width=256>
</CENTER>
<DIV></DIV>
<DT>
<DT> 结果<FONT face="Times New Roman">Winboard</FONT>下的使用了有关<FONT
face="Times New Roman">3</FONT>、<FONT face="Times New Roman">4</FONT>、<FONT
face="Times New Roman">5</FONT>子残局库的<FONT
face="Times New Roman">Crafty18.13</FONT>会走 <FONT
face="Times New Roman">1..Kxd7?</FONT>。非常奇怪,它认为 <FONT face="Times New Roman">2
0-0-0+ </FONT>之后白方<FONT face="Times New Roman">17</FONT>步杀是当前局面的最佳路线!
<DT> 假如去掉残局库,<FONT face="Times New Roman">Crafty</FONT>会走 <FONT
face="Times New Roman">1.. Kd8</FONT>,然后白方面临<FONT
face="Times New Roman">h</FONT>兵的升变威胁,最苟延残喘的是 <FONT
face="Times New Roman">2.Ra8+ Kxd7</FONT>,于是随后简单的<FONT
face="Times New Roman">15</FONT>步杀。结果事实上当前局面不是白方,而应该是黑方的<FONT
face="Times New Roman">17</FONT>步杀!
<DT> 我认为这样的局面极罕见<FONT
face="Times New Roman">(</FONT>试问大家见过几次到如此残局了还保留易位权利的吗?<FONT
face="Times New Roman">)</FONT>,所以倒不必过于不安。另外引擎设计者也可以有所改动,加入检查易位权利以避免这个问题。
<DT>
<DT><FONT face="Times New Roman" size=4><STRONG>3) </STRONG></FONT><FONT
face=楷体_GB2312 size=4><STRONG>残局库不考虑50步自然限着</STRONG></FONT>
<DT>
<DT> 我认为这个问题大得多。
<DT> 如图<FONT face="Times New Roman">2</FONT>局面,白先。
<DIV align=center>
<CENTER></DIV>
<DT> </CENTER>
<DIV></DIV>
<DIV align=center>
<CENTER></DIV>
<DT><IMG height=256 src="棋弈软件基础——残局库对引擎棋力的负面影响_files/egtbweak2.gif" width=256>
</CENTER>
<DIV></DIV>
<DT>
<DT> 在短思考时限下,<FONT face="Times New Roman">Crafty</FONT>要走 <FONT
face="Times New Roman">1.Rxf5 Rxf5</FONT>,然后根据王车象对王的残局库所示,是白方<FONT
face="Times New Roman">65</FONT>步杀。可惜根据<FONT
face="Times New Roman">FIDE</FONT>规则,黑方可根据<FONT
face="Times New Roman">50</FONT>步自然限着规则要求和棋的。对于所有需要超过<FONT
face="Times New Roman">50</FONT>步才能胜的残局库<FONT
face="Times New Roman">(</FONT>当然前提是期间没有吃子和没有走兵<FONT
face="Times New Roman">)</FONT>,这个问题都存在。过去<FONT
face="Times New Roman">FIDE</FONT>曾专为一些特殊的残局放宽过限制<FONT
face="Times New Roman">(</FONT>例如王双马对王兵<FONT
face="Times New Roman">)</FONT>,但后来又统一为都是<FONT
face="Times New Roman">50</FONT>步限着。
<DT> 然而这个局面一定是和棋吗?事实上,如果你让<FONT
face="Times New Roman">Crafty</FONT>想得足够长时间,它就会发现先有<FONT
face="Times New Roman">48</FONT>步杀<FONT
face="Times New Roman">(1.Kd8)</FONT>,进而发现<FONT
face="Times New Roman">23</FONT>步就杀<FONT
face="Times New Roman">(1.Kd6)</FONT>;另一个引擎<FONT
face="Times New Roman">Gandalf</FONT>更发现 <FONT face="Times New Roman">1.Kd6
</FONT>之后<FONT face="Times New Roman">17</FONT>步杀,因此我们知道至少有<FONT
face="Times New Roman">17</FONT>步杀存在!主变是 <FONT face="Times New Roman">1.Kd6
Kg7 2.Rf4! Rxf4 3.Bxf4</FONT>,然后……这是我见过的最短路线,尽管未必敢说没有更短的路线。
<DT> 要注意的是,尽管这个问题是因为<FONT face="Times New Roman">Nalimov</FONT>式残局库属于<FONT
face="Times New Roman">DTM</FONT>类型的库。至于<FONT
face="Times New Roman">DTC</FONT>类型的残局库,虽然理论上应可解决这个问题,只需在同一个库里检查最终的杀棋没有突破<FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -