弈侣的编程技术

“弈侣”是老冠军程序“手谈”的新一代围棋程序。它用汇编语言编写, 但不久将改为C++与汇编结合编写。

1998应氏杯的“弈侣”, 核心部分约有1/3是新的, 其余2/3保留自“手谈”。这其余的2/3, 绝大部分将在近年改写或另编。

1998年的“弈侣”新编部分未臻完善, 故棋力未能超过“手谈”, 甚至更弱。在第四届FOST杯(1998年8月)前, 它对“手谈”的胜率只有1/3。赛后经两个月的调整, 似有明显改善。

从“手谈”到1998年的“弈侣”, 主要改变是模式管理和扩充知识。

“弈侣”用了“乌鹭”那样的模式管理, 但作了更多子程序应用以使模式更为完善。下面的图(a)是一例。

              O..O     X..X
     O.O      .O.O     .O.O
     .*.      ..*.     ..*.
     O.X      OO.X     XO.X
     (a)       (b)      (c)
对于这个模式, 若*位为黑所占, 白的两个“关”将受威胁。“手谈”把*位设为急所。但是, 这种威胁与白两个“关”的环境有关。若环境类似图(b), 威胁即可忽略, *位不急; 而像图(c)那样的情况, 威胁甚大, *位就急得多。于是, “弈侣两次转到如图(d)的另一模式以考察其情况:
     O*O
     .X.
     (d)
后一模式就作为子程序被前一模式调用两次, 以考察白的“关”受到黑何等程度的威胁, 从而确定图(a)的*位急到什么程度。