围棋吧 关注:339,320贴子:10,285,319
  • 3回复贴,共1

多年前用过的电脑围棋AI程序乌鹭

只看楼主收藏回复

90年代中期用过电脑围棋AI程序手谈,后来出了乌鹭。是陈志行教授学生作品,在Win9x时代还以光盘形式出版了,估计用过的人不多,现在只能用XP或者虚拟机的方式玩玩回忆一下。当时98年的时候,还与陈志行教授的学生Faye 范俊超先生有过e-mail沟通,交流过电脑围棋AI的知识。



IP属地:中国香港1楼2014-08-26 16:53回复
    谨以此贴缅怀一下中国电脑围棋先驱,中山大学以故教授陈志行先生


    IP属地:中国香港2楼2014-08-26 16:55
    回复
      顶,陈老的确是这方面的先驱。
      乌鹭听说过,还是第一次见。


      来自iPad3楼2014-08-26 19:37
      回复
        转贴:“手谈”的编程技术
        “手谈”的走棋主要决定于静态评价。直至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 ?
        谨以此文缅怀陈志行教授



        IP属地:中国香港4楼2015-09-02 08:45
        回复