电脑围棋领域的研究概述

 

电脑围棋领域的研究概述
原著:Jay Burmeister
   Janet Wiles
澳大利亚昆士兰州大学计算机科学与心理学系
Departments of Computer Science and Psychology The University of Queensland, QLD 4072, Australia
编译:George Zhong

本译文纯属志愿工作,如有不当之处,请参见原文:http://www.psy.uq.edu.au/~jay/
(原文也在增补中,故本译文也是不完全的,但将随原著的变动而变动)。
另外,译者本人的著作也将上网,敬请留意。

目录
1.0 概述
2.0 围棋常识
2.1 气与提子
2.1.1 自尽
2.2 块棋
2.3
2.3.12.4 死活
2.3.2 假眼
2.3.3 Seki
2.4
2.5 打将
2.6 征子
2.6.1 引征
2.7 联络
2.8 棋块
2.9 棋势
2.10 数棋   
2.11 让子与段级位
3.0 围棋编程的挑战
3.1 围棋与国际象棋的比较
3.2 围棋的复杂性   
3.3 为什么围棋无法象国际象棋那样编程
4.0 电脑围棋的历史
4.1 学术著作     

    4.1 学术著作
      4.1.1 Zobrist
      4.1.2 Ryder
      4.1.3 Reitman and Wilcox
      4.1.4 其他
  4.2 程序
      4.2.1 The Many Faces of Go
        4.2. 1 .1 G2
        4.2.1 .2 Cosmos
        4.2.1 .3 其他
      4.2.2 Go4++
        4.2.2 .1 着手选择
        4.2.2 .2 评估函数
        4.2.2 .3 性能和用时
      4.2.3 Handtalk(手谈)
  4.3 电脑围棋比赛
      4.3.1 应氏杯

5.0 围棋程序的结构

6.0 目前程序的性能
  6.1 程序之间的对抗
  6.2 人机对抗

7.0 今后在性能上的改善

8.0 Internet上围棋和电脑围棋资源
  8.1 电脑围棋资源
      8.1.1 匿名 FTP Archive 及镜像站点
      8.1.2 The Internet Go Server (IGS)
      8.1.3 棋局存储格式
      8.1.4 The Computer-Go Mailing List
      8.1.5 The Computer Go Ladder
      8.1.6 电脑围棋比赛和结果
      8.1.7 电脑围棋大全
      8.1.8 棋局库
  8.2 围棋资源
      8.2.1 棋规,入门指南
      8.2.2 围棋入门指南及演示
      8.2.3 The Go News Group
      8.2.4 围棋FAQ

9.0 结论

附录 术语汇编及英文对照

参考




1.0 概述
本文旨在向读者介绍电脑围棋领域的状况及 Internet 上的相关资源。
为照顾尚不熟悉围棋的读者,第2部分介绍了围棋的基本常识和规则,熟悉这些的读者可以跳过它,或在必要时参考。
第6部分将告诉读者,由于各自的特点,目前围棋程序的水平与国际象棋程序相比差距极大,有待于进一步投入力量开发; 第3部分给出了其理论和实践的依据,并指出围棋程序是不可能仿照国际象棋程序那样开发的(参见 表一)。
第4部分简要回顾了电脑围棋的历史,同时介绍了一些以围棋为对象的学术著作、电脑围棋比赛及结果和一些为围棋程序。
第8部分介绍了有关围棋和电脑围棋的Internet资源,其中包括网上对弈服务器、FTP 站点、邮件表等。
2.0 围棋常识
围棋是一种二人对弈的棋盘智力游戏,没有任何运气成分。它出现在2,500到4,000年前的东方,它在日本、中国(含台湾)和韩国(朝鲜)等国家的地位就如同国际象棋之于西方国家。
围棋的棋盘是由一些经纬线组成的网格点,通常是19 x 19的,称19路棋盘,但9路及13路棋盘也有使用,棋子分黑白两色,黑棋先行,对弈双方轮流落子,棋子就下在网格交叉点上。最后占据交叉点多的一方即为胜者。
2.1 气和提子
与棋子相邻的空点称该棋子的(如图1标L的点)。没有的棋子将被从棋盘上提起,称为提子(如图2中的白子)。提子又称吃棋,是一件很愉快的事,当然对手不见得如此,除此之外,落在棋盘上的棋子是不能移动的。
 
2.1.1 自尽
如果棋子落下后即处于没有气的状态,即要被提子,称为自尽。这是棋规所不允许的(如图3中的X)。(在应氏规则中允许块棋自尽)
 
2.2 块棋
同色的棋子在经线或纬线上相邻,称为连接。(如图4)连接在一起的棋子组成了一块棋,当然单一一颗棋子也可以称一块棋块棋是组成它的所有棋子的的总和,(如图5标L的点);也就是说,要提掉一块棋,必须包围它?⒉皇?A HREF="#2.1.1">自尽,因为要先提掉对方的子,它的气就有了。有两眼的块棋是永远不可能被提掉的,(如图9中标E的点),因为对方不可能同时落下两颗棋子填眼,而单在一眼中填子不能提子就是被禁止的自尽了。
2.3.1 死活
有两眼的棋称为活棋,通常而言,如果即使对方先行也不能被提掉的就是活棋;而即使已方先行也不可能避免被提掉的就是死棋
2.3.2 假眼
有时眼是由两块或更多块棋围成的,这时要看它们之间的连接是否真实;它们之间肯定有一个或多个目前尚不属于已方的连接点,如果这些点都被对方占据,则这块棋围出的眼也会对方占据,是假眼。如果围成眼位的棋至少有一个对方无法占据的空连接点,或至少有两个空连接点,则该眼是真眼因为已方始终有机会将其连接。
2.3.3 Seki
2.4 劫
为了避免无休止的棋着循环,棋规规定对弈者不能奕出使棋局与上一手时相同的着法。通常这种情形发生在劫争的时候。如图10白子落在1位提掉了黑子2,此时由于白1只有1气,也可以在2位被黑提掉,反过来白又可以在1位提回来;这是被禁止的情形,当白1提子后,黑方不能立即着2位,而要在别的地方寻劫(一般是对方需要应付的地方),待对方应劫后再在2位提劫,这就是劫争
 
2.5 打将
高手有时可以通过打将引导棋局按自己的部署发展,这时他的着手使得对手只有唯一的应手。
2.6 征子
征子是一种吃子的方法,如图12,不管怎么走,黑棋注定要被提掉,因为白1打吃,黑只有2位逃,白再3位打,最后这个梯形延续到棋盘边黑棋被提掉。
 
2.6.1 引征
当棋子被征时,可以在征子的梯形路线着子接应,使得对方征子失败,称为引征。
2.7 联络
围棋规则中两棋子的连接仅指经纬线上的连接,又称。但实际的棋局中可以有许多连接方式(见图13)如并、关、二间关、尖、飞、大飞等,成为联络。如果两块棋没有联络,则称为开的。
2.8 棋块
两块或多块互相紧密联络的同色块棋组成棋块,如图15中的A和B以及C1、C2、C3和C4。由于互相之间有紧密的联络,它们可以被看作是一块棋。棋块是对局中棋手分析棋局的基本单位,其最重要的属性是它是否是活的,或是否可以做出两个眼,或是可以与一个已有两眼的活棋块联络
 
2.9 棋势
两块或多块联络松散的同色块棋组成棋势,如图15中的AB棋块与C1C2C3C4棋块组成棋势。这两棋块之间没有对方的棋子,似乎是围成了一块很大的地域,但这并没有保障;所以对于棋手而言将棋势转化为实地是很重要的。而对方侵入这块地域则称为打入
2.10 数棋
当对局完了时,从棋盘上提掉死子,分别数出双方的提子数和围空数之和,多的一方为胜者。
 
2.11 让子和段级位
围棋有着独特的让子和段级位制度。棋手按棋力分为30级。下过10到15局棋后棋手大致为20级,达到1级以后便是段位了,业余段位是1到6段,职业段位为1到9段。
随着级位的提高,升级越来越难,从20级升到10级需要一年每周下1、2局,再看一些棋书 ,而要达到职业段位的水平,则需要多年的专业训练。职业段位之间的差距相对业余的要小,初段和九段的差距大约相当于业余段位的两段之差。
为平衡高手和下手之间的棋力差距,下手可以被授先。在应氏规则中,授子是由下手先行奕出的若干步棋着,而在中国/日本规则中,授子是有固定位置的。授子数根据棋力的差距而定,例如10级棋手可以对15级棋手授5子。其确定的原则是使得下手对高手的胜率为50%,或可以按每输10子授1子概算。如果使用小棋盘,则授子数相应减少。如9路上授1子相当于13路授2子或19路授1子。
没有授子时,先行的效力大致为5目。下手一般执黑先行。如果对弈双方段级位相当,则先行的黑方要贴还白方5目。在正式比赛中为避免平局,贴目为5目半。中国规则由于采用数子法,应贴2又3/4子。
3.0 围棋编程的挑战
同国际象棋编程相比较,围棋编程领域的发展尚处于初级阶段。在国际象棋的编程研究领域中曾出现过象60年代和70年代时投入了强大的研究力量的情形,在围棋编程领域从来没有过。在两者之间有着本质的区别,使得国际象棋受人青睐成为研究对象,同时,即使也有力量投入围棋编程,其结果也无法赶上国际象棋编程的进步。这里有几大原因,一方面是由于围棋本身的复杂性,另一方面是由于在国际象棋领域取得的编程技术无法恰当地运用于围棋领域。
3.1 围棋与国际象棋的比较
1. 围棋棋子的类型简单,只有1种,而国际象棋则有6种;但围棋的棋盘为19x19,要远远大于国际象棋的8x8棋盘。
2. 棋盘的大小以及着手的相对自由,使得围棋棋局的平均手数大约为300步,大于国际象棋的平均80步。
3. 着手的相对自由,使得每步棋着的选择(分支因子)可以高达平均200个,而国际象棋中由于棋子走步的限制平均只有40个选择;随着棋局的进展,国际象棋棋子减少,使得分支因子降低,而围棋中则没有这种优势。分支因子还影响棋局的各个阶段(布局、中盘和官子)。在国际象棋中, 开局有许多著名体系,通常深达10步之多;而在围棋中,布局种类非常之多,而深度很少有超过3手的。当然,在边角上围棋也有定式可循,但定式的选择仍要考虑周围棋子的配置等等,需要一定的技巧。
4. 围棋与国际象棋棋局都有两种终了的方式:认输和自然终局,国际象棋的终局比较容易判别,就是将死,而在围棋中终局是由双方同时认可的,但初学者又很难判别是否已经没棋可下,所以他们下出的棋局往往比高手之间的要长,围棋程序也会犯同样的毛病。如果按照日本的比目法计算胜负,则多余的着手会因为填在己方的空里或变成对方的提子而减少目数。
5. 围棋和国际象棋的棋子都有一定的威胁度,就国际象棋而言,棋子的威胁度仅是它所能走到的格子,而在围棋中,棋子着下后就不再移动(仅当提子时例外),但可以对棋盘上其他的棋子产生影响,如引征可以改变某块棋的征子关系。
6. 国际象棋的棋局随棋子的移动立即发生变化,而在围棋中,这种变化并不显著,从而需要大容量的记忆分析棋局。即使是一个初学者也可以看出60步以后的征子结果,这是一个很深但很窄的算路。只有最后当棋子被提掉的时候,棋盘的物理状态才发生显著变化。在围棋中,价值30目的棋经常作为交换被提掉,而最终胜负却可能只有2目。
7. 在国际象棋和围棋的棋局中,棋手通常要考虑全局策略和局部战斗两个因素。在国际象棋中,由于存留棋盘上的棋子的数量和质量与棋局形势基本相关,所以在电脑国际象棋中基本并不把全局策略考虑在内。而在围棋中,局部战役的得失与全局的胜败并不完全相关,在开局时,棋手要考虑棋势而不是实地。所以大多数围棋程序都包含一个棋势的估价算法,但除了实战解决无法评价这类算法本身。
8. 综上所述,国际象棋的编程可以通过优秀的评估函数和修剪搜索树解决,而这样的方法在围棋中则行不通,因为后者的分支因子太大,又没有合适的评估函数用于修剪。
9. 人类棋手在国际象棋和围棋中的思维也是不同的。初学者都只能看几步,但在围棋中,类似征子之类的棋形,初学者可以不费力气地一目了然,因为这一连串的着手都是打将。在典型的国际象棋棋局中,专家可以计算出10步左右,但每步只有几种变化而已,在围棋中,每步的变化就非常之多,其中也可能有很深的如征子手段,这样用广度搜索和深度搜索都是无法很好把握的。
10.地平线效应,即在深度搜索取得一个评估之后,如果再深算几步,该评估就会被修正,例如在弃子的战术中。地平线效应在国际象棋领域只在大师级水平中才出现,而在围棋中,即使在初级棋手对局中也有,例如征子。
11. 国际象棋在70年代早期被用来作为人类思维的研究对象,Chase和Simon于1973年表明专家棋手使用的是棋子分级思维;而Reitman1976年的研究结果则表明归于围棋棋手正相反,使用的是棋子交叉思维。确定棋子的联络与分割,是决定棋子死活的关键,Reitman的研究表明,只有到终局,棋子间的关系才能澄清,这一研究结果显示了在围棋编程中使用分级理论产生评价函数可能带来的问题。
12. 在国际象棋和围棋的实际对局中,对手的水平是影响棋局的一大因素。在国际象棋中只有两位旗鼓相当的棋手才可能奕出可观的棋局,而在围棋中,由于存在授子制度,高手的水平可以由授子来抵偿,在这种比赛中,下手总是力图简化棋局,保持优势,而上手就不得不出险着引得对方犯错误;尽管最终的目数可以反映双方的棋力差距,但对局者更多关心的是输赢,宁可少赢也不肯冒险多赢,所以在许多棋局中对手的水平可以决定棋手的战略。棋手需要在各个方面下工夫,而不是偏重某种技巧的原因,这样才能有效地攻击对方的弱点。根据电脑围棋程序对某人的首次对局确定其棋力是通常的做法,同一个人第一局输给了电脑,以后几局很可能都会赢,因为他发现了对手的弱点,而电脑程序则没有任何改变。
3.2 围棋的复杂性
一个有限时间可求解的算法可以应用于现实世界的问题解决,而不能在有限时间求解的算法则称为指数时间算法,这类算法只能应用于非常小的问题。在计算机的有限内存空间中可解的问题称为P-空间可解问题。
研究表明,对任意给定的n路棋盘围棋棋局,确定胜者这一问题是P-空间难解的。 (Lichtenstein and Sipser, 1980)另一项研究还涉及了劫争问题以表明,对任意给定的围棋棋局,确定胜方和选择着手都是指数时间问题。 (Robson, 1983)因此,在解决一些围棋问题时使用模糊算法以取得接近最优解是必要的,而单纯的搜索很快就会导致困难。
在Allis et al. (1991)一文详尽地分析了围棋与其他棋类相比的复杂性,文中定义了两个术语:可求解完全可解;并演示了搜索空间的复杂度决策复杂度的区别。 如果一种棋类在任意棋局中都可以通过程序得到最优解,称为可求解的;如果这一正解可以由人类语言解释,则它是完全可解的。演示是通过一种围棋的抽象模型完成的,该模型规定双方轮流落子或放弃着手,先占据181点的获胜,它具有与围棋相同的搜索空间复杂度,但只要先行一方不放弃着手就肯定会赢,所以没有决策复杂度
Allis et al 就16种棋类按可解与不可解分类给出了其搜索空间复杂度的复对数指标和决策复杂度的对数指标图,图中显示围棋的两项指标都是最复杂的,而且是不可解的。对于围棋与国际象棋的比较,研究结果表明9路棋盘围棋的复杂度与国际象棋近似,搜索空间以10为底的指数为35对50,而19路棋盘围棋要复杂得多,所以如上所述是不可解的。(Allis et al. 1991).
3.3 为什么围棋无法象国际象棋那样编程
国际象棋程序中使用了启发式搜索和评估技术,搜索树是固定深度的,根据对棋局的评估启发修剪,该项技术在国际象棋中应用得很好,因为其棋盘足够小且从本质上更注重局部战术而不是全局战略。
在围棋中评估棋局遇到了在国际象棋中不曾有的问题,围棋与后者相比更注重全局战略。围棋不象国际象棋那样注重单个棋子的得失,而棋势又是在漫长的对局中逐渐形成的,在对局中有着各种各样直接的和间解的战略以赢得胜利,如围取实地、扩张外势、攻击弱子、防守、打入等等。由于棋盘很大,围棋棋局还包含了许多局部定式。如果把国际象棋成为一场战役的话,那么围棋就是一场战争。许多局部战斗的应手都要根据全局战略做出选择,因此棋手必须掌握局部和全局的均衡。
由于棋局评估带来的种种问题,在国际象棋编程中使用的人工智能优先搜索技术在围棋中无法适用。围棋在人工智能和认知科学中更有研究价值。Hans Berliner前国际象棋世界冠军、美国著名棋手、著名国际象棋编程专家曾就围棋说过"... 围棋必将取代国际象棋作为人工智能的研究对象" (Berliner, 1978).
4.0 电脑围棋的历史
  关于围棋编程的著作最早出现于60年代末,最初是纯学术性的,只是把围棋作为某些研究进一步深入的研究对象,而不是试图探索围棋的编程理论。真正开始投入力量开发商业围棋程序还是在个人电脑走入家庭和应氏电脑围棋奖金设立之后被推动起来的。
4.1 学术著作
4.1.1 Zobrist
最早的围棋程序是由Albert Zobrist作为他模式识别专业博士论文的一部分提出的(Zobrist, 1970)我们在此主要涉及与电脑围棋相关的部分。
效果函数
Zobrist引入了效果函数的方法将棋盘分为黑方和白方地域。效果函数计算棋盘上每一个交叉点的数值量,黑子取值+50、白子取值-50而空白点为0;正数效果的点要给其邻接点加+1,同样负数效果点的邻点加-1,这样的算法递归执行4次,将棋盘最终数值化(如图17).
程序由此建立了一个19x19的数组来表达棋盘的状态,包括:
交叉点的状态(黑子、白子还是空)、邻点的黑白子个数(水平的、垂直的和对角方向的)、棋块的棋子数和气数、空白点邻接的空白点以及块棋包含的空和棋子数。
该程序还使用了另一个效果函数来表达棋子自身的效力,它与上述函数相似,但棋子的初值设为+100,正数效果的点对邻点的增量为+3,而负数效果的点为-4,这是由于计算机是执黑方,所以把对手的形势估计得乐观一些。
选择着手
建立内部表达诸侯,程序对棋局进行模式识别在自身的模式库中寻找匹配。模式库中包含着着手及其评估值,得到一个匹配后,就在该点加上它的评估值,在匹配过程中需要使用旋转和对称等技术。最后把取得评估值最高的点选择为着手。Zobrist的程序大致是使用了累加评估值的方式。
Zobrist试图弥补该程序在对局中表现出的弱点,他把棋局分为四个阶段:布局时的边角定式、挺进中腹、防守与打入、官子。为使程序能在棋局都能正常应对,各个阶段使用了不同的模式库。
结果与改进
该程序的另一个改进是限制性计算也即启发搜索,在模式识别中,局部可以深算三步使得程序可以掌握救孤和吃棋、连接和切断、征子、做眼。
Zobrist的程序性能一般,它击败了两个初学者,但对熟练的棋手表现较差。
4.1.2 Ryder
Jon Ryder(Ryder, 1971)的程序是Zobrist研究的深入,同样使用效果函数和累加评估选择着手。但Ryder增加了全局战略和局部战术考虑,并增强了算路的深度,Ryder在短线目标中考虑局部战术而在长线目标中使用全局战略。
由于在围棋中使用完全搜索树是不切合实际的,所以需要有一种方法取而代之,Ryder的程序使用了许多象局部战术分析这样的组合分析方法。
Ryder把围棋视为实地、棋势与避免被吃棋之间的均衡,他将这三者公式化以维护这样的均衡:棋盘组织显示对棋盘区域的控制度、形势判断以选择双方着手最佳方向、棋块分析以确定其安危。
着手选择
着手选择分两层完成,第一层确定所有块块的局部战术状态、识别棋块、棋势并分别进行分析以确定双方的地域以及对对方棋块的威胁度。最后从所有的可能着手中选出15个以备下一层分析。
第二层使用局部战术和朴素的全局战略理论对第一层产生的15个着手进行分析,将两次的分析值相加,取最高值。如果能够确定一个“明显的”好棋,第二层分析可以简单地终止。
Ryder的程序对深算产生的搜索树使用了向前修剪的方法,应用不同的方案决定是否有必要跟踪搜索树的某个分支,也就是说某一着手是否值得考虑。终止搜索的放;方案包括目标块棋已有两眼、逃棋是否长出5气或是使块棋得救。向前修剪的风险在于最佳着手可能在被发现以前就被忽略了。
效果函数
象Zobrist一样Ryder也使用了一个效果函数提供每个棋子对其周围影响度的量化。他的效果函数与Zobrist的类似,也是黑方取正数、白方取负数,某点效果的取值由其邻点的效果传播累加形成。Ryder的效果函数较Zobrist的简单,传播系数是固定的(如图18)
 
Ryder的效果函数
对某点的效果估计过高或过低都将给判断带来问题,估计过高会使在该处过分注重而因此忽略大局,估计过低则可能被对手抓住要害。最优着手应当是接近效果估计曲线峰值的点。Ryder把棋子的效果视为棋子的局部属性,尽管他也承认在某些情形下棋子可能对距离较远的棋子有影响,例如引征。在这种效果函数无法准确表达的情形中,使用局部战术评估以弥补效果函数的缺点。
联络度是效果函数不能很好评估的一个环节。Ryder定义了两个术语:联络强关联,某点对于某方联络是指该点上是该方的非死子,或指至少有一个该方邻子且没有对方邻子的空白点。完全联络的一个延伸定义为半联络,指一个空白点至少有二个某方邻子及至少一个对方邻点。强关联是指某点由某方子占据或与某方子连接,某点与某子对角线连接且共有至少一个空白点(尖),以及某两子之间只间隔一个空白点(关)这两种情形也被认为是强关联的。棋块就是由一组联络半联络的点组成的。
效果函数部分使用于确定棋势。棋势是由一组联络的点组成,其效果函数不小于程序预定义的阈值,又分为强势与弱势。
程序中使用的局部战术概念包括数气、劫争、征子、眼和假眼。Ryder认为程序中的局部战术能力还需要改进,他称之为“躲闪袭击”。
变量描述
变量描述需要包含以下信息:基本的在计算中需要使用的、重点对象需要多遍重计算的、经常需要多次访问的变量。
棋势是由指针方式表达的,对每个点都维护一个向其所属棋势的指针;而每个棋势都有一个向其所属某点的指针,称为基点,其他点通过基点搜索。
棋盘的全局描述为一个21x21数组(19x19棋盘加上两边框),包含以下点信息:区域指针、弱势指针、强势指针、棋块指针、块棋指针以及状态(黑、白或空)。
结果与改进
Ryder发表的结果只是一局输棋,对手是一位刚刚学会了棋规和基本局部和全局技巧的初学者。作为Ryder研究的主要方面,他发表的结论认为在战术分析上,通过搜索技术已经足以完成与初学者水平相当的着手选择,而且只需略加改进就可以提高程序的局部战术水平。
Ryder提议的进一步改进方案包括搜索初期信息的复用、引征问题和弱势的定义,Ryder指出在处理中占10%时间的棋局阶段分析值得注意。Ryder程序的结果不甚理想,其原因也在于它对于开局、中盘和官子没有一个清晰的区分,因此特别是在官子中使用了不恰当的局部战术,Ryder认为以后的改进应对此加强。
4.1.3 Reitman and Wilcox
Walter Reitman和Bruce Wilcox于1972年开始将围棋作为研究对象,作为研究结果的程序分别命名为Reitman-Wilcox和INTERIM.2。研究中断后Wilcox重写了INTERIM.2程序而产生了一个商业围棋程序NEMESIS。
Reitman和Wilcox应用围棋开始的研究主要集中于人工只能领域,包括模式识别(Reitman et al., 1978; Reitman and Wilcox, 1975,1978)、规划(Reitman and Wilcox, 1974)以及人类在围棋中的感觉与认知过程再现。事实上,程序的目的是与人类棋手对弈并将结果记录事后由高手复盘以发现人类的思维特点。
根据Reitman和Wilcox围棋程序的三个基本方面是认知、知识和综合(Wilcox, 1988)。他们在程序中尽量加入描述以获得与熟练棋手相当的认知水平,识别并存储了两类围棋知识:着手决策知识包括如何吃棋、如何围空等;形势判断知识包括确定棋块的属性及相关的量化分析等;通过适当的控制结构综合程序的认知和知识以选择着手。
INTERIM.2程序建立并维护了一个选择更新、多层网络的描述,Reitman和Wilcox介绍这是模拟熟练围棋棋手思维建立的。专家和评论员对于选择着手的分析是分层的,算路不是涉及全盘的,而是目标驱动的。
INTERIM.2程序
INTERIM.2采用了汇总-回馈技术(Wilcox, 1988)。信息中包含低层对象的描述如块棋,被汇总并在高层描述如棋块中使用,程序在高层对象中选取重点进行决策,决策结果回馈并修正低层对象的描述。
流控
程序将棋局描述存储在一个称为GAMEMAP的结构中,包含着一组称为GAMEBOARDS的数组变量中。在每个GAMEBOARD数组中都有向各种特殊数据结构的指针,如STRING-BOARD包含向棋盘上所有块棋的指针。GAMEBOARDS变量由简单而复杂:TYPEBOARD、STRINGBOARD、LINKBOARD。特殊的GAME-BOARDS变量如LENSBOARD、WEBBOARD、SECTORBOARD和TACTICSBOARD是为描述熟练的人类棋手的感觉与认知过程相应设计的。
INTERIM.2程序的流控分别在MOVE和REFLEX之间切换,当落子后MOVE选择更新GAMEMAP受影响的组成因素,REFLEX负责在排序表中选择着手。
战术
程序的战术部分,即PROBE是用于解决特殊问题的,取代通常的全盘考虑的目标驱动的算路。PROBE基于这样的假定,即如果对于一个给定的问题,一组智能选择逻辑都返回同样的结果,则可以认为这是正解。这样的假定并非总是有效的,但Reitman和Wilcox认为这是为加速搜索而付出的小代价而且与人类因类似原因误算造成的损失无法同日而语。PROBE是模拟人类围棋棋手进行选择性计算的过程设计的(Reitman and Wilcox, 1979).
PROBE可以用来解决一个特定的问题并给出一个适当的着手,最初的着手选择后可以得到一个假定落子后的棋局形势。PROBE根据这一假定继续计算下一手,知道得到该问题的结果。如果结果是成功的PROBE返回初始着手,否则推翻假定重新计算,在非限制性的计算中,要遍历所有的着手以求的正解。但在PROBE中不是所有的着手都计算,每方的失败都被限制在2到3次以返回失败结果。
着手的选择和检查是由一组专家知识形成、评估并实现的直指目标的思维链(Wilcox, 1988).,其中包括各种各样的专家知识,如产生目标和子目标的、建议着手以明了目标的、当前棋局和目标专用的、使用所有目标与子目标的。专家知识包含了许多特殊的围棋知识。Reitman和Wilcox在PROBE中实现的控制结构使得各种专家知识得以组织、便于测试并可扩展(Wilcox, 1988)。. The goal-directed behaviour of PROBE的直指目标的方式使得在特定情形下搜索可以深算到60-80步(Wilcox, 1988).
认知与描述
INTERIM.2在描述棋局时维护了许多数据结构。点状态(黑、白或空)用以确定块棋,块棋的一个基本属性是死活。INTERIM.2可以识别尖、关、 二间关、小飞、大飞等联络,联络又分为普通联络、可能联络和死棋联络。联络的基本属性包括它们是否能连接或切断,是否与对方联络交叉,及建立联络的原因,还可识别盘边四线以内的特殊联络。分界线即长距离的联络用于棋形评估及着手选择,不可能被切断的几块棋可以认为是成块棋形,而相互联络的块棋称为棋块,由块棋、块棋联络及盘边围成的包含空点和对方死子的区域称为封闭区域。着手的动机也记录下来以增强选择水平并便于调试。
效果是根据Ryder算法传播的,Reitman和Wilcox发现在某些形势下效果可能是一种误导,所以改进了效果的概念。大块的同号值效果区域结构中并没有包含联络信息,其边界是通过效果传播的收缩形成的,在此过程中没有考虑棋子及其连接的属性,因此区域确定的最终结果可能是弧形的或带状的。独立的区域结构最后又合并成为效果块,在效果块中越处于中心位置越有可能成为实地。
在INTERIM.2中Reitman和Wilcox建立维护的棋局描述,即认知与数据结构有时也称认知表达,在INTERIM.2程序中使用的两个认知元素特别有趣,其一是网格,用于确定由棋子效果形成的区域,另一是透镜,用于通过程序本身的模式库确定棋局中的实际棋形。
网格是围绕棋块建立的气数圈,向外发散最高可达9层,到其他棋子为止,不论是哪一方的。棋子之间的联络或棋子与盘边的联系(最多距离3点)也可以终止网格。最外层的网格点构成其边界,网格边界对于识别可能的攻击来自何处、在何处可以躲避攻击、周围己方棋块的位置、如何断开联络等。
Reitman和Wilcox认为,局部棋形及行棋次序是围棋的一个基本方面,优秀的棋手掌握各种普通棋形的行棋次序,如联络的攻防等。透镜就是设计用以此类的模式库。
透镜包括几个域,每个域都包含某个次序的着手及其估值,提供被推荐着手的相关信息和战术的全局信息。当某个域识别到一个棋形后,就向透镜提供推荐着手及相关信息,否则就被忽略以节省时间,这样使得透镜可以聚焦。
性能
INTERIM.2程序的3个对局结果在Reitman & Wilcox (1978)中发表,其中两局分别战胜了22级和34级棋手,一局输给了一位4级棋手,由此计算得出INTERIM.2程序的级位为27级。
Reitman和Wilcox对INTERIM.2程序首次模拟人类对弈的结果非常满意。它弈得较为保守,防守多于攻击,它防守得很好,除了程序错误外唯一被吃棋的情况是几块棋同时被攻击的时候。
4.1.4 其他学术著作
下面列出了一些使用围棋作为对象的学术著作,它们都属于高层次的,一般没有提供关于围棋编程的细节问题。
Lehner
Paul Lehner是Wilcox的学生,他在围棋战略规划领域获取了科学博士学位(Lehner, 1981) ,他的著作是Wilcox曾发现这在围棋棋手中经常表现出的基于替代搜索(Kerwin and Wilcox, 1973)。
替代搜索可以通过检查许多可能的次序中的一个而提供其战略全貌。Lehner的结论显示替代搜索不仅足以能够评估战略规划,还可以快速地淘汰不适当的规划,他发现应用替代搜索可以减少精确计算体系中必须的搜索层数。
Stoutamire
David Stoutamire (1991)以围棋为对象研究机器学习,是通过专家知识库获取着手选择而不是运用围棋战术/战略知识组合。Stoutamire接着开发了一种名为模式优先的分类技术以自动获取好棋的模式表达;由于模式库呈指数增长,还开发的一个补救程序在内存需求增加时降级处理。
Sander
为避免由于使用搜索树评估和选择着手带来的指数爆炸,Peter Sander (1979)用自顶而下或目标导向的组织结构设计了一个选择着手的程序。Sander的程序名为Kyu,创建了一个随棋局进展变化的自底向上的组织结构,将战略简化为目标,并据此选择着手。Kyu只能从开局走到25手,且没有后续的计算逻辑。
Kyu的数据结构是基于块棋、棋块和棋势的联络记录,从棋盘上的任意点都可以访问其所属或影响的块棋、棋块和棋势。在每个棋步之后,数据结构就相应改变,这种改变是从低到高的,即从点到块、从块到群再从群到势。
Kyu中引用的结构是Sander根据多层结构数据表达和分层组织规划系统综合得到的,将战略与目标紧密地相结合,他还认为这样的结构也可以应用在围棋以外的各种对象。
Friedenbach
Kenneth Friedenbach以围棋为对象研究感觉和认知在解决复杂问题中的交互作用(Friedenbach, 1988),他基于图论将层次抽象化并应用于围棋。他之所以使用围棋作为研究对象是因为其理念与多层组织相关。
Friedenbach的感觉-认知模型包括三个部分,首先是包含五层的静态组织:棋盘点、同类点块、相关块群、松散群(势)和全局的属性摘要;其次是对由于棋局进展而产生的结构变化的分析层次;最后是各种分析的综合考虑。
需要执行四种类型的分析,战术安全分析在块棋层次运行,涉及块棋的攻防;战略安全分析涉及棋块的攻防,包括眼位和联络的分析;战略发展分析在棋块层次运行,涉及开放区域、均衡衡量、新棋块以及棋块的合并;全局均衡分析是所有分析的最高层次,设计棋局整体战略。
Friedenbach用三种条件规定一个分析:启动条件、终止条件和继续条件。以战术分析为例,其启动条件是有一少于三气的块棋,终止条件是所有块棋都至少有三气;其继续条件包括打吃提子和防守方的新增棋子,在分析过程中如果一个着手导致了气数的变化,则需要重新分析。
4.2 程序
以下给出了关于目前围棋程序中可获取的细节资料的部分,其他的将在第6章列出。

4.2.1 The Many Faces of Go
The Many Faces of Go (MFG)是目前最好的商业围棋程序之一。David Fotland从1981年起开始利用业余时间编程围棋并于1990年发表了MFG。Fotland此后还不断的改进MFG并在电脑围棋邮件列表中经常就电脑围棋编程和MFG发表论题。MFG发展为两个著名的程序:G2和Cosmos。
 
4.2.1.1 G2
Fotland的第一个围棋程序使用辐射效果函数确定边界。不幸的是,它很容易被一个简单的收气算法所击败,于是他又设计了G2。G2的内部结构分为数据结构、战术分析和着手选择(Fotland, 1986)。G2使用了全盘考虑逐一评估有效着手并侧重战略部署,最后选择最高估值的着手。
数据结构
G2中的大多数代码是用来更新数据结构,棋子占据点(称格)并组织成块棋(称群)最后形成棋块(称大群)。数据与盘上每点相联系,包括到最近纵横边界的距离、邻接点和对角点列表、块棋指针、气数及其列表、邻接点棋子颜色(黑、白或混合)、效果函数以及各个方向的最近邻接点。
在纵横方向上互相邻接的同色棋子构成块棋,块棋包括颜色、气数和列表、邻接列表、邻接的对方块棋列表、所在大群及其自由度(以下介绍)。
G2识别的联络棋形包括单关、二间关、尖和小飞,联络数据包括其所属块棋、颜色、位置和状态。
棋块包括又不可分割的联络组成,或是同时与对方的死棋邻接的块棋,棋块数据包括其组成块棋、对方死块棋、棋子数目和气数、眼数以及自由度。
战术分析
战术分析评估棋盘位置以给出选择着手,每个棋块都有一个自由度并由其组成块棋继承。G2的棋力主要是由战术分析决定的而Fotland也在此花费了最大的精力(Fotland 1986)。由于程序的大多数时间花费在战术分析中,所以搜索树的修剪需要既快速又有效。
自由度由一个多层处理获得:可被提块棋识别为死棋;由眼位识别器识别眼位;识别不可分割联络;联络的块棋识别为棋块;由边界识别器识别边界;由死活识别器给出自由度。
战术分析检查每一个五气以下的块棋确定其死活,五气以上的块棋被认为是活的。在计算中推荐有趣的着手以确定块棋状态。有趣的攻击着手包括可长气收气的着手,有趣的防守着手包括尖入未定区域、单关、长、连接等。
有趣着手被启发估值,最高值选为进一步分析,作为假定应手后以对方的视角评估全局。同样,又选出最佳着手假定,在每一步都使用回溯和最大-最小过程修剪。因此要建立一个先深搜索树直至棋块被确定死活,搜索树深度最多可达80手,使得征子可以精确地计算出。“最佳”着手数(1到3个)取决于当前着手在搜索树上的深度:在树根附近多在树叶附近少。由于其终止节点的取值只有两种(吃住或逃跑),所以最大-最小过程修剪非常有效(Fotland, 1996)。
眼位分析器用以维护关于眼、半眼(一手可成眼)和准眼(两手可成眼)等通过评价眼位得到的信息。G2能识别一些基本死形和基本的眼形如直三、方四、梅花五、丁四、曲四等。
棋块是由不可分割联络的块棋组成的,战术分析器试图切断其联络以测试其强弱。死棋也可以作为活棋的连接。
边界分析器确定边界。G2可确定封闭区域以及接近盘边的不完全封闭区域。在盘边,棋子与盘边或者联络与盘边都可以构成区域,这样的棋形一般出现在盘边的四线以内。
死活分析器分析每一个棋块。棋块的自由度由它的气数、眼位、所控制的区域、是否沿盘边延伸、大小、是否与对方块棋接触、是否完全被包围等条件决定。自由度本身有20级包括“两眼”、“大眼可成两眼”、“未确定”、“无足够眼位”和“无法做两眼”。
着手选择器
使用含65条规则的战略评估器通过两步估值选择着手。第一步先评估战略着手,第二步评估所有着手。数据结构和战术分析的信息在这两步中都用来评估棋局。Fotland 感到由于数据结构的弱点使得G2在这方面也是弱点(Fotland, 1986)。
那些规则可以提供战略着手如在空角落子、做shimari或kakari、joseki着手、从盘边扩展、打入、接触战斗、分割、切断、联络、攻击打入、打劫。
在第一步,要评估所有推荐的战略着手。假定落子后评估战略着手的棋局结果,评估过程包括对盘点的赋值并将其汇总返回。盘点的估值由控制它的块棋的自由度决定。如果战略着手的棋局评估不能满足战略目标,此着手即被忽略。
在第二步,包括第一步中已考虑的着手在内的所有着手都被进一步分析。其评估值由盘中各块棋所控制区域的自由度、大小和数量决定。
在两步中均被考虑的着手,其估值累加,最后得分最高的被G2选择为下一手。
大小、性能和时间限制
在1981和1988年间Fotland花费了将近四年的业余时间编写G2,由于计算机的速度不能满足更强的围棋程序的需要,他终止了几年在G2上的工作(Fotland, 1996)。G2大约有11000行C代码占用了700k左右的代码和数据内存。在此期间,Fotland的围棋水平由15级增强到1段。G2大致水平为25-20段,不费太大力气就可以战胜初学者(Fotland, 1986)。Fotland在电脑围棋比赛中也获得成功,G21997年在台湾世界电脑围棋比赛中排名第四、在美国电脑围棋冠军赛中获得第一。
 
4.2.1.2 Cosmos
Fotland converted G2 into Cosmos in 1988. The main difference between Cosmos and G2 was that instead of evaluating all legal moves, only suggested moves were evaluated. This transition was achieved by increasing the number of move suggestors to over 250. Quiescent search was added and the connection, eye, and territory evaluations were made more accurate (Fotland, 1996).
Data Structures
The data structures used in Comos were basically the same as those used in G2. The eye information included the number of eyes achievable in gote, the number of eyes achievable in sente, the number of eyes achievable if the opponent moved twice, a list of vital points, and eye type. The information contained in the data structures was updated either incrementally (e.g., lists of liberties) or after every move (e.g., influence).
Tactician
Essentially, Cosmos had the same tactician as G2 but better move generation and sorting. In Cosmos, the tactician was only used to determine dead and threatened strings by trying to capture them. Its parameters were maximum liberty count, maximum, depth, and maximum search size. The maximum liberty count was 4, and therefore as for G2, strings with more than 4 liberties were assumed to avoid capture.The maximum depth allowed was 100. The search size determined the playing level (Stoutamire, 1991) and since forcing moves were not counted, ladders could be accurately read even at low playing levels.
Influence Function
Territory was determined by radiating positive influence from alive groups and negative influence from dead groups. Radiated influence did not pass through stones or connections and was inversely proportional to distance.
Board Evaluation
Life and death of groups was the primary concern dealt with by the evaluation process. Board positions were evaluated by a similar process to that used in G2 with the addition of quiescent search.
The tactician was used to determine dead and threatened strings (those that could be captured if they moved second) and whether the stones at the diagonal of eyes could be captured. This information was useful in identifying unbreakable connections and forming strings into groups.
Eyes were analysed to determine their potential and then allocated to groups. False eyes were identified by checking the diagonals of eyes and some dead shapes were also known by Cosmos. Any group with enough eyespace to make two eyes was considered to be alive. Potential eye space could be gained by extensions along the edge, possible connections, being adjacent to a threatened enemy group, and by controlling territory which was not already considered to be an eye.
There were 25 values that described a groups strength in terms of its life and death status. The values were divided into five main categories which included very alive, alive, unsettled, weak and dead. Determining the strength of a group included considering potential connections, potential eyes, and potential extensions along the edge. Positive influence was radiated from alive groups and negative influence was radiated from dead groups with black and white influence being maintained separately.
Weak groups which were contacted by the influence from friendly alive groups were considered not to be surrounded. Weak groups were further divided into those that could run and fight and those which would almost certainly die.
In general, board points were scored according to the radiated influence values. However, occupied board points, board points adjacent to a stone and board points between a stone and an edge were scored differently. Unsettled groups were scored according to who as to play next.
Move Selection
Cosmos had over 250 rules that suggested moves which included fuseki moves (including shimari, kakari and joseki moves), edge moves, playing in the centre, playing safe when ahead of opponent, "squirming" around when behind opponent, pattern matching, saving weak friendly groups (including making eyes, running, or fighting semeais), killing weak enemy groups, cutting, connecting, contact fights, ko threats, and filling dame. Cosmos had a joseki library which contained around 5000 suggested joseki moves and a pattern database which had 60 patterns which were 5 x 5 in size. Whenever a match was made, the rule (code) associated with the pattern was applied (executed) and would then suggest a move. The addition of extra moves to be suggested could easily be accomplished by the addition of new move suggestor rules or the addition of patterns.
The rules would supply a guess value (probable evaluation of the move), bonus value, minimum aliveness value, and would indicate which groups were being attacked or defended if any. The moves were sorted by their guess values and, depending on playing level, a certain number were "played". Moves could be rejected before being evaluated if they did not "apply". A move applied if it accomplished what it was intended to do: if a move was intended to defend a group and the group ended up weaker than it started the move was rejected. Surviving moves were awarded a sente bonus if they achieved sente. The position resulting from the move was then evaluated. The evaluation score, the sente bonus and the rule bonus were summed together and the highest scoring move was selected as the next move.
Size, Performance and Timeline
It took Fotland nine months to compress G2 down to 512 k and add a new user interface. In 1988 Cosmos was released by Ishi Press for IBM-PC as Cosmos, The Computer Go Partner and was released a second time in 1989. Due to the amount of time spent on the user interface, Fotland was unable to devote sufficient time to improving Cosmos' playing level and its performance in various world computer Go championships was modest coming 8th in 1988 and 7th in 1989 (Fotland, 1996).

 
4.2.1.3 Many Faces of Go
After a rewrite of the user interface and addition of professional graphics and new features, Cosmos was released as The Many Faces of Go in 1990. Additions to MFG included a limited full board lookahead capability, consideration of the value of sente, and a strategy function which is used to focus attention on the important areas of the board and to identify urgent moves. The number of patterns in both the joseki and pattern databases were increased. The pattern database was also improved by increasing the pattern size from 5x5 to 8x8, by storing many suggested moves for each pattern in a move tree (rather than just one per pattern as for Cosmos), and by a complete rewrite which encompassed algorithms, code, and data structures and lead to an increase in speed (Fotland, 1996).
Data Structures
The dynamic data describing a board position is stored in three classes of data structures: incremental, locally recalculated, and globally recalculated. The data in the incremental data structures is updated upon addition or removal of a stone and includes low level information such as lists of empty points, number of liberties etc. Locally recalculated data is updated as it is needed i.e., it is only updated for regions of the board which have been affected by a particular move or move sequence, and includes connection strength, and eyes. Globally recalculated data is updated for the whole board and includes group strength and influence. The locally and globally recalculated data structures are maintained by the evaluation function.
The dynamic data is stored globally and is generated progressively in several passes of increasing abstraction. The dynamic data used in MFG includes point environment, string data, connection data, eye data, potential eye data, group data, territory, and score.
An instance of the connection data structure stores information pertaining to connectivity between two strings. Each connection has a list connection points i.e., a liberty of one string which is no more than three points away from the other string. Thus, the connection recognised by MFG include hane, one point jump (ikken tobi), knights move (kogeima), two point jump (nikken tobi), large knights move (ogeima), three point jump, and bent three point. Other special connections near the board edge are handled through the pattern database. The data stored in the connection data structure includes the strings involved in the connection(s), the number of and lists of one, two and three point connections (i.e., as measured from the connection points), the type of each connection, and the strength of each connection (e.g., already cut, cuttable, shared connection, connected with aji, connected solidly). Other than the type and strength data which is stored in a locally recalculated data structure, the connection data is stored in an incremental data structure.
The eye data structure records information pertaining to either a block of empty point or dead enemy strings which are partially or completely enclosed by friendly stones. Data stored in the eye data structure includes colour, a list of the points in the eye, vital points, and eye type (e.g., one point, two point, line eye, big eye, and dead group eye). The number of eyes (to a resolution of 1/8 of an eye) achievable under various conditions were recorded including the number of eyes if opponent moves twice, number of eyes if opponent moves next, and number of eyes if program moves next. A board point can only be recorded as belonging to one eye. The eye data structure is a locally recalculated data structure since eye data does not lend itself to incremental update. In hindsight, Fotland says that a pattern based approach to recognizing eyes would be preferable (Fotland, 1993).
The evaluation of group strength and the generation of attacking and defending moves involves identifying potential eye space and running points. The potential eye data structure contains type, value and location data for potential eyes. An examples of data stored in the potential eye data structure is "extend along edge" (type), value is number of new points of eye space, and location is the liberty to extend from. Running points are stored by type (e.g., running towards friendly/unfriendly stones) in several different lists. Potential eyes and running points are stored in a globally recalculated data structure.
Tactician
Every string with three or less liberties and many strings with four liberties are read by the tactician. Each string is read twice, once with White moving first and once with Black moving first. The tactician determines whether a string is captured (i.e., can not live even if it moves first), threatened (i.e., it lives if it moves first and dies if it moves second), or stable (i.e., lives regardless of who moves next). The tactician relies on simple heuristics concerned with the number of liberties and connectivity; pattern matching is not used in the tactician.
The tactician has two separate move generators; one to generate attacking moves and one to generate defensive moves. The moves suggested by the move generators are sorted according to criteria which include second order liberties, cut points, and simple eye shapes. Once sorted, an alpha-beta depth-first search is employed with the performance of the search depending on the quality of the move sorting (Fotland, cgm1 5 Mar. 1993).
Tactical searches are goal directed and are limited to a maximum number of nodes. For string captures this is around 100, however, when only one move is suggested, it is not counted towards the node limit. In this way, ladders can be read without problems (Fotland, cgm1 14 Oct. 1993). The number of nodes for a search are allocated to the branches according to the value given to the moves by the first ply move generator and thus different branches may end at different depths. The branching factor at each successive ply is progressively constrained by the tactician. The branching factor falls from five at the first ply to one or two by the fifth ply.
Since the data structures in MFG are separated into incremental, locally recalculated and globally recalculated, low level local tactical searches can be executed quickly by only updating the incremental data structures. However, the possible goals of such a search are limited since the high level data structures are not recalculated. It is not possible, for example, for MFG to search for x liberties and two eyes (Fotland, cgm1 3 Nov. 1993).
The tactician is used to read connections and eyes. A cutting stone can be examined by the tactician to determine whether or not it will be captured. Stones on the diagonal of eyes can be examined to determine whether they can be captured. These types of search do not exceed around 12 ply since the program actually plays worse if more plies are considered (Fotland, 1996).
MFG uses caching to reduce the amount of time spent reading. Since strings are read twice, tactical results related to eyes, capture or threat, and cuts are cached rather than re-evaluated. Life and death analysis are cached as trees since they are smaller than the trees which would result from tactical searches (Fotland, cgm4 16 Aug. 1994).
Influence Function
The influence function radiates influence which is inversely proportional to distance. Influence is radiated to a fixed maximum distance of nine although when lower playing levels are chosen, the distance is smaller. Stones and connection impede the radiation of influence. Black and White influence are radiated separately (i.e, they are not summed together to give a single value for each board point) so that their relative values can be compared. Dead stones radiate negative influence and thus, since Black and White influence is maintained separately, dead stones reduce their own influence rather than increase their opponents influence. The initial influence value radiated from a stone depends on its strength.
Influence is not used to determine group connectivity. The use of influence in MFG includes determining thickness and territory, identifying surrounded groups, and generating moyo building or reducing moves. Another way in which influence is used is to determine a group's running ability. A group's ability to run towards a liberty depends on the relative values of friendly and unfriendly influence nearby. The sum of a group's ability to run toward each of its liberties determines its running ability whilst the gradient of the influence determines the direction in which it should run.
Evaluation
Board positions are evaluated in a multiple pass process. The evaluation function consists of many components which include the tactical analyser and evaluators for connections, eyes, group strength, and territory. A score for the position being evaluated is achieved by assigning a value between -50 and +50 to each board point to indicate the level of Black or White control exerted on them. The overall score for the board position is the sum of these values for each board point.
In order to try and overcome the difficulties associated with the horizon effect, Fotland chose to use quiescent search rather than modify the evaluation function. In quiescent search, positions are evaluated when they become quiet rather than when they are in a state of flux (e.g., such as in the middle of a piece exchange in chess). Positions which are not quiet are characterised by oscillations in the evaluation values returned for successive moves which makes it difficult to make good decisions based on the evaluations. MFG uses quiescent search as part of the evaluation function for full board evaluation to overcome this problem by either calling itself recursively (i.e., generating further moves) until a position becomes quiet or by using patterns suggested as obvious local answers to make the position quiet. MFG will generate up to six plies of moves in a quiescent search which improves its performance by up to four stones (Fotland, cgm1 30 Sep. 1993).
Move Suggestion
Moves are suggested by a rule-based expert system and include fuseki (e.g. shimari, kakari, and joseki moves), moves on the edge (e.g., invasions and extensions), playing in the centre, conservative play when ahead, risky play when behind, pattern matching (e.g., cutting and connecting, surrounding and escaping, invasion and defence, endgame, killing and saving groups, and shape-based moves), group defensive moves (e.g., making eyes, running, and fighting semeais), contact fights (e.g., blocking, extending for liberties, and hane), ko threats, and dame.
A limited form of full board lookahead is achieved by storing move sequences in the pattern and joseki databases. Move sequences attached to patterns in the pattern and joseki databases are played onto the board and evaluated at their endpoints. Thus if a particular joseki is suggested as appropriate, the stones in that sequence are played and the resulting board position is evaluated. This enables MFG to "play" to the end of a lookahead sequence and minimax the score returned by the evaluation function for the resulting board position.
Pattern Database
Each pattern in the pattern database has a a move tree associated with it. The pattern database contains around 1200 patterns of size 8x8 and around 6900 suggested moves with the average number of moves stored for each pattern being about 5.
Each point in a pattern is marked as black, white, empty, white or empty, black or empty, black or white, or anything (i.e., do not care). Patterns are categorised according to whether they are in the middle of the board or whether they contain edges and/or corners.
A successful match of a pattern depends on both matching the stones in the pattern with those on the board and matching any attributes associated with the pattern. Each pattern has as many as 10 attributes which pertain to stones and include whether they were dead or alive, minimum number of liberties, and connectivity between stones.
To match over a 1000 patterns on a 19x19 board in 16 different orientations requires around 3 million primitive operations. Since performance is a big issue, the patterns are compiled into a bit array which facilitates fast bit-parallel comparisons. By using an 8-bit hash function and bit-wise operations, the number of primitive operations is reduced to around 350000. This number of operations still takes enough time to make it too expensive to match all patterns more than once per move.
Patterns from the pattern database are evaluated after being played on the board in their entirety i.e., they are evaluated at the endpoints of their move trees. A small subset of patterns are used to read local sequences based on shape. Fotland has recently begun evaluating the strength of one point jump connection using patterns (Fotland, 1996).
A fast pattern matcher is necessary for a strong Go program according to Fotland. Pattern matching can be used to suggest and sort moves, and to classify connections and eyes. Reading is employed to determine whether eyes are false. Pattern matching on its own is not adequate for life and death and group strength determination (Fotland, cgm1 8 Apr. 1993). The eye and connection patterns are hand coded decision trees.
One method that Fotland tried to increase the number of patterns in the pattern database was to take them from professional games.When replaying a professional game, if MFG didn't consider the move played by a professional or the move played was low on the suggestion list, Fotland would manually cut-and-paste an 8x8 section from the game into the pattern database using a self-written graphics pattern database editor. Fotland discontinued this method since most of the missed moves were tactical (i.e., based on read-out not shape) or depended on a larger context than the 8x8 section that was placed in the pattern database. Fotland found that the cut-and-paste approach to patterns was more profitable from even games played on the IGS (Fotland, cgm1 13 Jan. 1994).
Joseki Database
The joseki database contains around 45000 moves. Joseki sequences are stored as directed acyclic graphs (i.e., they contain no loops) having empty corners at their roots. Moves in a joseki sequence can be one of several types including urgent, complex, trick, and bad. The urgent move have priority whilst the complex and trick moves are only played if MFG is behind. The bad moves are not for the program to play, rather they are used by the program to know how to respond to bad moves played by its opponent.
Joseki patterns are evaluated by being played on the board in their entirety and evaluating the resulting board position. MFG selects joseki sequences that are appropriate given the status of the other corners (Fotland, 1993).
Strategy
A strategy function is used to focus attention on important areas of the board before each move (Fotland, 1993). The dynamic data is examined to determine what phase the game is in, the relative score, the value of taking sente, and whether there are any urgent offensive or defensive moves that need to be made.
Urgent offensive and defensive moves are examined initially and if sufficiently urgent are played without any further considerations. Urgent moves can be suggested by the pattern matcher or by examination of groups which are determined to need urgent attention. Friendly groups which need urgent defence include big groups and cutting groups. Opposition groups which need urgent attack include big groups, cutting groups, and groups adjacent to friendly groups needing urgent defence.
Move suggestion is affected by the phase that the game is in. Certain rules will only fire in certain phases of the game. The fuseki phase lasts until joseki sequences have been pursued in all the corners. The middle game lasts until at least move 120 and MFG enters the end game when there are no unsettled groups on the board. Transition between middle game and end game phases may occur many times during a game.
The types of moves suggested are also affected by the relative score. MFG plays more conservatively when it is far ahead of its opponent and makes unsound invasions when it is far behind its opponent. The relative score is classified into many states including "way ahead" (over 40 points), "ahead (20 - 40 points), "about even", "behind" (over 10 points), and "way behind" (over 20 points).
Move Selection
Since the evaluation function is very slow (Fotland, cgm4 16 Aug. 1994), a limit is placed on the number of full board evaluations which can be performed each move depending on the playing level. MFG can only look at 5 to 10 moves in detail (depending on playing level) before selecting the move it finally plays. A safeguard against errors in the evaluation function is that only reasonable moves are suggested for full board evaluation (Fotland, 1993).
By employing the strategy function, the move suggestion expert system, and the joseki and pattern databases, MFG fully examines a small number of moves, playing the one which receives the highest score from the evaluation function.
The score returned from a full board evaluation is also modified by the addition of sente if applicable. Thus if MFG plays a sente move, the value of sente is added to the evaluation for the resulting position. The value of sente varies from 7 points during the fuseki to 1 or 2 points in the endgame and is determined by the strategy function.
Size, Performance and Timeline
With some help from Ishi Press and a professional artist, Fotland rewrote Cosmos' user interface and released it as MFG in 1990. Until the present time (July 1996), MFG has had 3 releases with various improvements. MFG contains around 40000 lines of C code with around another 20000 lines of user interface code.
MFG has performed well in various world computer Go championships including 4th in 1993, 2nd in 1994, and 3rd in 1995. According to Fotland, MFG gains about one stone in strength each year (Fotland, 1996). MFG plays on both the IGS and the NNGS as ManyFaces. MFG participates in the NNGS rating scheme and was rated 9 kyu (as at July 1996). It was also awarded an 8 kyu diploma from the Nihon Ki-in in Japan based on its performance against a 1 dan amateur at 9 stones and a sample play against a professional in September 1995 (Fotland, 1996).

 
4.2.2 Go4++
Micheal Reiss started writing Go programs in 1983 and his current program, Go4++, has evolved from various predecessors over that time. Reiss has met with some success in computer Go competitions and Go4++ came 2nd in both the 1st and 2nd FOST cups.
Reiss' programming philosophy is to use simple algorithms on a large amount of data rather than complex algorithms on a small amount of data. Go4++ calculates everything from first principles; complex concepts are calculated from simpler concepts which are in turn functions of even simpler concepts. Thus, Go4++ does not have an elaborate rule-based expert system at its core. A positive consequence of this approach is that Reiss' relatively weak ranking (2 kyu) compared to other top Go programmers is not a deficit. It also means that Go4++ usually responds well to the strange moves (by human standards) that are quite often played by computer Go programs and which are difficult to foresee when designing a rule-based system. The major drawback of this approach is that it is computation intensive and requires a powerful computer.
At the foundation of Go4++ is a massive amount of connectivity data from which almost everything else is eventually derived. Go4++ selects a move by first generating about 50 candidate moves that are analyzed by an evaluation function which estimates territory. The move scoring the highest evaluation is played as the next move. Thus, Go4++ uses 1 ply global lookahead although tactical lookahead and search is used in evaluating each move.
 
4.2.2.1 Candidate Move Generation
Candidate moves are generated by a process of pattern matching to determine the best 50 moves to examine in depth. Go4++ has around 15 high level patterns which include terms for the probability of an eye, safety, and territorial value. Whenever a match is made, the board point(s) suggested as good places to play have an appropriate value added to them. The 50 highest scoring board points are then examined by the evaluation function. The board point which receives the highest score from the evaluation function is played as the next move.
In some circumstances, Go4++ effectively evaluates more than 50 candidate moves per turn. Pattern matching is not applied to regions of the board where the stone safety (see Stone Safety in section 4.2.2.2) and territory (see Territory in section 4.2.2.2) do not differ from those of the previous move. Thus after evaluating the 50 highest scoring board points after pattern matching, the next move is selected from the combined set of evaluation scores of the 50 board points just considered and the evaluation scores of any board points in the undisturbed regions which were considered during the selection of the previous move.
 
4.2.2.2 Evaluation Function
The evaluation function is a six step process: 1. a connectivity probability map is generated, 2. groups are determined, 3. eye space is determined from which individual eyes are identified, 4. the safety of each stone is determined, 5. a radiation function combines the stone safety data and connectivity probability map to radiate safety to empty points, and 6. territory is determined. Reiss describes the evaluation function as pessimistic since whenever it is applicable, the evaluation function considers that the opponent is the next to move.
Connectivity Probability Map
Each time a hypothetical move is played on the board, a connectivity probability map for all friendly and opponent stones (including the hypothetical stone) is generated and stored. The connectivity probability map for a stone contains the probability of connecting to nearby friendly stones already on the board or to an empty point if it was occupied by a friendly stone. Stones and empty points which can be reached directly (nobi), by a diagonal move (kosumi link), a one point jump (ikken-tobi link), a two point jump (nikken-tobi link), a small knight's move (kogeima link), or a large knight's move (ogeima link) are examined (total of 32 possible points).
The probability of connecting two stones is calculated empirically by playing out the sequences of moves needed to determine whether the stones can be connected or whether the opponent can cut them. This process requires the use of lookahead, particularly when ladders are generated by cutting moves (e.g., cutting a kogeima link generates two ladders, one for each cutting point). If all possible cutting stones are captured, then the probability of connection is 100%. However, if the cutting stones can not be captured, a hand-tuned algorithm estimates the connection probability.
A massive amount of data is generated in calculating the probability map for each stone on the board for every hypothetical stone being evaluated. The process is very computationally expensive and requires a powerful computer (Go4++ currently runs on a Pentium-Pro 200).
Group Determination
Stones and strings are catalogued into groups: any stones which are 100% connected are considered groups. A tactical search on all strings with less than 4 liberties is used to determine which strings are definitely dead. Dead strings are not included as part of any group.
Eye Identification
Identifying eyes is achieved in a two step process: 1. eye space is determined, and 2. individual eyes are identified from the eye space.
A floodfill type algorithm is used to identify contiguous regions in which opponent connectivity probability is low. Points in those regions whose 8 neighbouring points are mostly clear of opponent connectivity probability are considered to be eye space.
Individual eyes within a groups eye space are identified by shape. There are several grades of eyes with the grade being a function of the opponent's connectivity map. Eyes with a grade above a certain level (see Stone Safety below) are considered to be true eyes.
Stone Safety
The safety of each group is determined by the number of true eyes it has. The safety process is repeated 5 times; each successive pass is more pessimistic about which points will eventually become true eyes (i.e., the threshold is raised for selecting which grade of eyes will eventually become true eyes). The final safety value for a group is the average of its safety scores on each of the 5 passes.
Radiation Function
The safety value for each stone is radiated to the nearby empty points in proportion to the connectivity probability map for that stone. The inverse of a stones safety (100% - safety) is radiated in the same manner and contributes to the opponents radiated value i.e., dead stones radiated full opponent safety. Black and white radiation (including inverse radiation) is summed at each empty point.
Territory
Black and white territory is estimated from the radiation values of the empty points. The difference between black and white territory is returned as the evaluation of the hypothetical move for which it was generated.
 
4.2.2.3 Performance and Timeline
Reiss' Go skill has progressed from 10kyu in 1987 to 4 kyu in 1992 to 2 kyu in 1996. Reiss has programmed full-time on Go4++ for about the last year (1996) and also programmed full-time for one and a half years around 1986. Other than for these two periods since starting Go programming in 1983, Reiss has programmed part-time with the most effort usually expended in the two months leading up to a competition.
There have been many commercial releases of Reiss' programs by Oxford Softworks with another soon to follow. Notable releases have been Go Player Professional and an updated windows version, Go Professional II, released in Japan.
Reiss characterized Go4++ as the weakest of the current strong programs at tactical situations requiring life and death analysis although it is good at creating moyos and gaining territory in the middle and endgame. Since Go4++ tends to play well in the centre of the board, Prof. Chen played 200 games against Go4++ in an attempt to test modifications to Handtalk which were designed at playing better in the centre.
According to Reiss, other weaknesses are the absence of global lookahead, lack of a concept of "shape", and the reluctance of Go4++ to invade. Since the evaluation function pessimistically considers that the opponent moves next during tactical searches, Go4++ does not usually evaluate the likelihood of invading stones forming eyes as being favourable. To compensate for not invading well, Go4++ always plays it first move at the 3,3 point and also tries to live in as many places as possible to stop its opponent creating moyos early.
Reiss uses many empirically hand-tuned algorithms within Go4++ although no learning algorithms are used. Carefully crafted changes to these algorithms can improve the strength of Go4++ e.g., by making the connection algorithm more accurate, eye and territory evaluation also become more accurate, resulting in an increase in playing strength. Before the 2nd FOST Cup in 1996, Reiss tuned the performance of Go4++ by playing 700 test games against Handtalk, resulting in Handtalk's only defeat during that competition.

 
4.2.3 Handtalk
Handtalk has been one of the strongest programs in recent years and is written by Zhixing Chen, a Chinese professor from the University of Guangzhou. Although Handtalk becomes stronger each year and was awarded a 4 kyu diploma by the Nihon Kiin in 1996, Prof. Chen does not believe that Go programs will reach shodan by 2000 if shodan is taken at its international level (2 - 3 dan Japanese).
Details of the architecture and algorithms used by Prof. Chen are not abundantly available. Some of the details which have emerged from discussions that various people have had with Prof.Chen at various competitions are provided below.
Handtalk is written completely in IBM-PC assembly language and is very small (around 250k) and very fast. Only a very small number (around 4) candidate moves are evaluated using a static evaluation function which seems to be accurate and stable. Handtalk also uses an influence function whose influence decreases as 1/2^distance.
Handtalk does not use very much global search. Pattern matching is used to some extent although it is unclear whether the patterns are contained in a database or if the pattern matching is rule-based. Handtalk does not use joseki much and has only about 10% as many josekis as MFG.
According to Prof. Chen, Handtalk's strong points are its fighting, group safety estimation, ability to recognize life and death, the end game, and board evaluation. Other people have also commented on its strength at estimating a group's running ability, sense of shape, the middle game, and winning semeais. Prof. Chen characterizes its weaknesses as surrounding, ko, and attacking territory. Recent changes include fighting less often than in previous versions and an improvement in gaining territory in the centre which was achieved by testing alterations in around 200 games played against Go4++.

 
4.3 Computer Go Competitions
There are various computer Go competitions throughout the world including the United States Computer Go Championship, the North American Computer Go Championship, the Computer Go European Championship, and the International Go Contest. There is also a computer Go competition conducted as a part of the Computer Olympiads held in England.
%A cash prize of around $6000 is offered to the winning program in the World Computer Go Congress as well as the chance of challenging dan ranked junior opponents to win the Ing prize. The challenging program plays 3 junior players (ages 11 - 13) which are ranked around 3 to 6 dan.


 
4.3.1 The Ing Prize
%Acer Incorporated and the Ing Chang-Ki Wei-Chi (Go) Educational Foundation have been joint sponsors of the International Computer Go Congress since 1985 (Shih, 1989) and also sponsored the First Computer Olympiad in 1989. The three top contestants from the North American; European; and Japan and Asia-Pacific region are invited to the International Go Congress in Tapei. A prize of approximately $1.5 million US will be won by the programmer(s) of the first program to beat a nominated human competitor without handicap on a 19x19 board. This prize is known as the Ing prize.


5.0 围棋程序的结构
6.0 当前程序的性能

6.1 程序之间的对抗

6.2 人机对抗
最强的围棋程序对人的战绩大致为8-13级,由于人可以调整棋风针对程序的弱点,所以给一个程序定级是很困难的,一个程序可能在最初的对局中只被5级棋手授4子,但几局之后授子数就会增加到8到9个。
1994年世界电脑围棋冠军Go Intellect在对年青棋手的受14子对局中连败三局,由于应氏规则允许让子由下手自行摆放,这就意味着让15子即由黑方(电脑)先下16手,再由白走。1991年世界电脑冠军Goliath在对5段棋手的受15子比赛中三局全胜但在受14子对局中三局全败。
7.0 今后在性能上的改进
8.0 Internet 上的围棋与电脑围棋资源
(本章摘自Accessing Go and Computer Go Resources on the Internet将发表于《the proceedings of the Second Games Programming Workshop in Japan》许多章节选自bsdserver.ucsf.edu/GoREADME文件,由于站点的更新,不能保证其中所有部分都可访问)
电脑围棋领域的研究者和业余设计围棋程序的个人都可以从Internet相关资源中获益,本章主要供电脑围棋领域的研究者使用。
8.1 电脑围棋相关的Internet资源
8.1.1 匿名FTP Archive和镜像站点
主要的围棋FTP archive站点及其镜像都以匿名FTP方式免费提供相关的围棋和电脑围棋资料,Go目录下的README文件一般包含其所有文件的简要介绍。下面是一些子目录名及其介绍。
aga             美国围棋组织文件
 
clients         Internet 围棋服务器客户
 
comp            电脑围棋编程
games           注解的棋局
igs             IGS棋局以Postscript或Smart-Go格式
 
info            普通文本文件信息
 
mgt             MGT程序,可读写Smart-Go文件
 
printing        用于打印棋局的程序
 
pro             未评论的职业对局
 
problems        围棋问题,主要是关于Smart-Go格式 
 
prog            与围棋相关的程序,但不是对弈的
comp目录包括:
Amiga, Macintosh, IBM PC (DOS and Windows), Linux, and X windows公用程序
 
电脑围棋邮件列表的Archives
 
电脑围棋大全
 
电脑围棋人物与程序
 
各种关于围棋程序和电脑围棋的报告、文章和论文
主站点
bsdserver.ucsf.edu/Go
镜像站点
ftp.pasteur.fr/pub/Go
rzis1.rz.tu-bs.de/pub/go
igs.nuri.net/Go

8.1.2 Internet围棋服务器(IGS)
The Internet Go Server (IGS) provides a means for people to play real-time interactive games of Go against other people or against Go programs over the internet. The IGS serves as a virtual Go club which is particularly useful for players who do not have local access to other Go players or a Go club.
First time users can login as "guest". Full access can be gained by registering for an account. Information about registering can be obtained by typing "help register". The help command provides information on how to use the interface. Once logged on to the IGS, you can play a game against another player, watch games in progress, or even comment on games in progress.
Interfacing to the IGS can be difficult and as a result, client programs have been written for various platforms e.g. Atari ST, Amiga, Macintosh, NeXT, MS Windows, IBM PC, Unix (ASCII) and X11.
Client programs available in the clients directory:
bsdserver.ucsf.edu/Go/clients/
 
Help on client programs:
www.well.com/user/mmcadams/igs.howto.html (follow the "getting software" link)
 
Help files on using the IGS:
bsdserver.ucsf.edu/Go/igs/igs_ug.ps.Z
bsdserver.ucsf.edu/Go/igs/igs_ug.txt.Z
bsdserver.ucsf.edu/Go/igs/igshelp.Z
www.well.com/user/mmcadams/igs.howto.html
ltiwww.epfl.ch/~warkent/go/etiquette/et.html
Telnet connection to the IGS:
igs.nuri.net:6969
hellspark.wharton.upenn.edu:6969
 

 
8.1.3 Game Record Formats
Several game record formats exist although currently the two most commonly used are Smart Go Format (SGF) and Ishi "Standard" Format. Information, executables, converters etc. related to game record formats can be found in the info, mgt and prog directories of the FTP archive sites.
bsdserver.ucsf.edu/Go/info/
bsdserver.ucsf.edu/Go/mgt/
bsdserver.ucsf.edu/Go/prog/
www.cwi.nl/~jansteen/go/games/SGF/sgf.html

8.1.4 电脑围棋邮件列表
电脑围棋邮件列表专门为编程围棋和相关论文使用,发向此地址的E-mail将转发到它的成员。
许多在电脑围棋领域从事研究或编程的个人都在其中探讨问题,其问题从抽象到具体,是启发思维的好地方。
电脑围棋邮件列表可通过发e-mail到以下地址加入
computer-go-request@comlab.oxford.ac.uk
过去的信息 archive
bsdserver.ucsf.edu:/Go/comp/ (compgo-mail-*.Z)
当前的信息 archive
ftp.comlab.ox.ac.uk:/pub/Documents/computer-go/mail-archive

 
8.1.5 The Computer Go Ladder
Discussions on the computer-go mailing list resulted in the establishment of an informal competition between computer Go programs called the Computer Go Ladder. The primary purpose of the ladder is for the enjoyment of the participants with the secondary purposes of stimulating both interest and work on computer Go programs and providing a way of measuring the state-of-the-art of current programs.
There are HTTP links from the Computer Go Ladder page to pages related to some of the programmers and some of the programs involved in the Computer Go Ladder, world computer Go competition results, the IGS and various other associated pages on the Internet. The Computer Go Ladder is maintained by Eric Pettersen (pett@cgl.ucsf.edu).
cgl.ucsf.edu/go/ladder.html

8.1.6 电脑围棋比赛及其结果
nobi.ethz.ch/martin/cgresults.html (Martin M ler)
www.reiss.demon.co.uk/webgo/gores.htm (Michael Reiss)

8.1.7 电脑围棋大全
有几种不同版本的电脑围棋大全 igs.nuri.net/Go/comp/compbibs.Z (Peter Lipp)
nobi.ethz.ch/martin/references.html (Martin M ler)
www.reiss.demon.co.uk/webgo/bib.htm (Michael Reiss)
www.psy.uq.edu.au/~jay/go/comp-go.bib.html (Jay Burmeister)

8.1.8 棋局库
IGS以postscript和Smart Go格式存储棋局库。Jan van der Steen在进行一项名为GoBase的围棋数据库项目,可以查询数以千计的棋谱。
igs.nuri.net/Go/IGSArch/ (IGS archive)
bsdserver.ucsf.edu/Go/games/
bsdserver.ucsf.edu/Go/pro/
imageek.york.cuny.edu/search5d.html (5+ dan IGS games)
www.cwi.nl/~jansteen/gobase/gobase.html (Go Base) www.geocities.com/SiliconValley/Park/4872/index.html
 

8.2 Internet围棋相关资源
8.2.1 棋规与教程
Internet上有各种版本的棋规介绍。
bsdserver.ucsf.edu/Go/RULES
bsdserver.ucsf.edu/Go/RULES.SG
bsdserver.ucsf.edu/Go/aga/aga.rules.Z
bsdserver.ucsf.edu/Go/aga/ingrules.zip
bsdserver.ucsf.edu/Go/igs/goe.rules.Z
bsdserver.ucsf.edu/Go/igs/goe.on.igs.Z

8.2.2 围棋学习指导
在Internet上有一些针对初学者的学习指导和棋规介绍。.
bsdserver.ucsf.edu/Go/RULES.PS.Z
www.cwi.nl/~jansteen/go/rules/human.html
www.cs.vu.nl/~willems/go.html
ltiwww.epfl.ch/~warkent/go/rules/rules.html
ltiwww.epfl.ch/~warkent/go/rules/9x9game/1.html (ASCII)
hyperg.iicm.tu-graz.ac.at/GTL (Teaching Ladder page)
Section 2 of this document

8.2.3 围棋新闻组
围棋新闻组是一个很好的发现、共享围棋、比赛及IGS等有关信息的资源,它不是主要针对电脑围棋的,但也有一些相关的讨论和信息。
rec.games.go

 
8.2.4 The Go Frequently Asked Questions (FAQ)
The Go FAQ contains questions that are frequently posted to the rec.games.go newsgroup and includes sections on basic Go, the IGS, and computer Go related issues.
bsdserver.ucsf.edu/Go/FAQ
rtfm.mit.edu/pub/usenet/news.answers/games/go-faq
www.cs.utexas.edu/users/orb/go/gofaq.html


9.0
结论

附录 通用围棋术语及英文对照
以下围棋术语及英文对照摘自(definitions.Z) 由Fletch Holmquist编制,Bill Taylor改编。.

Atari: An immediate threat to capture; a single liberty remains. A verbal warning is often issued when placing an opponent into ate.
Dame (useless): A neutral point, territory for neither; a liberty.
Dan: Advanced grade.
Fuseki: The opening moves of the game where influence and territory outlines are formed. (literally: `no stones')
Gote: Defensive play, loss of initiative. (Literally:'lower hand'.)
Hoshi: (`star point'), 4-4 point.
Ikken-tobi: One point extension.
Joseki (established stones): Known sequences of moves near the corner which result in near equal positions for white and black.
Keima: Knight's move extension.
Ko: Repetitive capture. (literally: `eternity')
Ko threat: Intervening move (that one hopes will force a reply) before a ko can be recaptured.
Komi: Score adjustment usually penalizing black for playing first. Often 5.5 points.
Kosumi: A diagonal play next to one's own stone.
Kyu: Learner grade.
Nobi (Stretch): An extension away from an opponent's tsuke, cross-cut, etc.
Ogeima (large knight's move): Three across and one vertically (or vice versa).
Seki: A situation where neither player may place the other in ate without placing himself in ate. Stalemate, with no territory awarded.
Sente: Threat forcing direct response, creates initiative. The right to choose where to play next. Opposite to gote. (Literally: `upper hand'.)
Shicho: Ladder play.
Shicho-atari: Ladder breaker. A stone played in the path of a potential shicho, threatening to make it fail.
Tobi: Jump.
Wei Chi: The Chinese name for Go. (literally:"game of encirclement")


参考
References
(以下为general Go Bibliography中没有的部分 )
Berliner, H. J. A chronology of computer chess and its literature. Artificial Intelligence, 10, pages 201 - 214, 1978.
Fotland, D. The program G2. Computer Go 1, 1986.
Fotland, D. Knowledge representation in the many faces of Go. Available on the I nternet at ftp://bsdserver.ucsf.edu/Go/comp/mfg.gz, 1993.
Fotland, D. Personal communications, 1996.
Stoutamire, D. Machine learning, game play and Go. Technical Report TR 91-128, Case Western Reserve University, Cleveland, Ohio, 1991.
Computer-go mailing list references (cgm)
Fotland, D. E-mail communication on the computer-go mailing list.
Mailing list archive available on the Internet at ftp://bsdserver.ucsf.edu/Go/comp/
cgm1 compgo-mail-1.Z
cgm4 compgo-mail-4.Z
 



 
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=321426
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值