Chess_Bridge 版 (精华区)
发信人: goes (从头再来), 信区: Chess_Bridge
标 题: “手谈”的编程技术
发信站: 紫 丁 香 (Sat Apr 29 04:29:53 2000) WWW-POST
“手谈”的走棋主要决定于静态评价。直至1994年的早期版本, 走棋选点没有用到搜索
法。1995年试把搜索法用于走棋选点, 但棋力未见提高。近年虽有些提高, 搜索法的作
用还是不能满意的。最近我做了一个选点不用搜索的“手谈”版本。它在与有选点搜索
法的版本对弈时似乎差些, 但对其他程序时显得与有选点搜索法的版本一样强。
“手谈”的棋力主要依靠静态评价的精细计算。关键是棋子分块和块安全性的估计。
棋子的分块
“手谈”的棋子分块与陈克训提出的相似, 首先决定于棋子的“影响”, 再辅之以某些
连接模式。
**影响
“手谈”的影响函数与陈克训的明显不同。一个正常白子的影响是:
对其邻位为 4;
对其斜邻位为 3;
对其关位和小飞位为 2;
比关和小飞稍远的某些位置,影响为 1。
黑子辐射出负数的影响。
死子辐射出反号的影响。半死或受伤的棋子辐射出较少的影响。
多个棋子对一个点的影响可以叠加,但非线性叠加。例如,某点若同时与黑子和白子相
邻,则其值为0,不问有多少个黑子和白子。若某点影响的代数和为 1 或 -1, 则取为
0 (保留 1|-1 表示假眼位)。若影响值大于 2, 则先作为白方的全控制点, 再作圆滑处
理(见下); 若影响值小于-2, 则先作为黑方的全控制点再作圆滑处理。黑|白全控制点取
值 6|-6。
影响的单位称为小点(dot)。
圆滑处理方案包括如下规则:
与0或负影响相邻的点,不得超过3小点;
与1或2小点相邻的点,不得超过5小点;
负值(黑影响)有类似的规则;
1|-1小点代表白|黑假眼位。
**块的构成
相互邻接的白非死子、黑死子、以及 1 或超过 3 小点的空点合并成一白块; 邻近的、
相互不能分割的白块再合成一白块。黑块亦按类似的方法构成。
块危险性估算
块危险性可表为有适当单位的一个量。围棋中常用于形势判断的单位为目。块危险性也
可以用目为单位。
块危险性的因素为:1. 不足两眼, 2. 没有足够的自由度。作定量估算时, 还要计及块
的大小。因此, 块危险值应为3个自变量的函数:欠眼数、自由度、大小。函数的具体
形式应经验地确定,并可在调整时改变。
**自由度
陈克训把自由度解释为块周围的敞开程度。
块的自由度可表为封锁它所需的手数。业已探明,有关的函数应为指数型的:封锁手数
每增1,块危险值应减半。
然而,封锁手数恐怕不容易由程序计算。这就有必要设计适当的方案来计算自由度,以
代替封锁手数。
“手谈”有两个自由度方案。
早期方案:自由度由与块(棋子或空点)的邻位和斜邻位计算。
第二方案:自由度由属于块的棋子的关位和小飞位计算。
第二方案视野较广,似较合理。然而围棋编程中,模糊的估算常会有某些优越性,故第
一方案在某些情况下会较合适,并使棋走得更好。“手谈”的近年版本计算越来越精细
,就需要更精细的自由度第二方案。
近年还用过一个第三方案,但已发现它有错误。修正了的方案已用于另一程序“弈侣”
的新版本。
模式与效率
“手谈”棋力的另一关键是进子价值的效率修改。好着点(急所、手筋等)设为正效率
,而坏着点(愚形、俗手等)设为负效率。
进子价值被乘以一个因子:正效率对应的因子大于1,负效率对应的因子小于1。
效率主要由模式识别来赋值。不过“手谈”用了笨拙的模式识别方法:只用指令来处理
而没有用模式库。这就使模式难以修改补充,只能包括少量模式。
模式的大小是不固定的,但不超过下列范围:
...
.....
.......
...*...
.......
.....
...
这份材料由“手谈”的作者陈志行提供。
1999-03-14
--
※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: 202.97.187.184]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.330毫秒