第十章 计算机——未来的象棋之王
在70年代,美国西北大学的斯莱特和阿特金已能够利用变最大为最小求值法、a-β算法、捉子探试法与杀子探试法、迭代深化法和已经检验过的棋势表等各种方法成功地用国际象棋3.0程序的后来版本进行工作,而且,它也像图灵的纸上下棋机一样,深入地搜索了下国际象棋的战术棋路,直到走到走不动的棋势为止。这就是国际象棋4.7程序,它下国际象棋的能力略低于国际象棋大师的水平。
1981年,全方位搜索程序Belle由美国电话电报公司贝尔实验室的肯·汤姆森和乔·康登共同开发出来,它已成为第一部达到国际象棋大师级水平的计算机,进入全美国际象棋比赛最高棋手1%的行列。Belle程序的成功应归功于专为进行国际象棋运算而定制的硬件。华盛顿的官员显然很重视Belle程序。1981年,当汤姆森和康登试图携带Belle程序去苏联莫斯科参加国际象棋表演比赛时,联邦局人员拘捕了他们。里根当局担心该程序会泄露军事秘密。而汤姆森却坚持认为,Belle程序所知道的事情只是如何去下国际象棋。汤姆森告诉新闻界说:“在军事上可以使用Belle程序的惟一方式就是可以把它从飞机中扔出,也许你可以以此杀死某一个人。”这些日子,华盛顿已不大注意了,因为Belle程序的等级已滑落在国际象棋大师的水平之下,然而它仍然可以探索平均8着棋的深度,每秒钟分析120,000种棋势,弈出比较难对付的国际象棋。
当斯莱特、阿特金、汤姆森、康登及其他人应用全方位搜索法进行工作时,伯利纳却集中精力于求值函数上。伯利纳回忆说:“当时我正考虑德格鲁特关于国际象棋大师怎样弈棋的著名的研究——他们如何观察弈至一半的棋局变化,然后如何转向考虑别的方面,再如何回到考虑最初的棋局变化。看来那是正确的。至少那是我所考虑的如何下棋的方法。”另一方面,现有的计算机下国际象棋的程序,不会在变化中来回移动。它们随着特定的变化到达一定的深度,给最后的棋势求出数值,再转到另一种变化。
伯利纳接着说:“给定某一具体值的困难在于你不能出错。你可以弈出牺牲两子兵,以换取具有极强攻击力的棋势。如果你使用类似α-β的算法,你就能够弈出最后一种棋势,对此你必须赋值;要么为换取攻势值得抛弃两兵子,要么就不值得。无论你持哪种看法,都会在一定时间内出现错误。更确切地说,‘我还不能肯定。我已经丢掉两兵但拥有强攻势。也许实际上我可以将死王或者赢回的多于两兵,而我也许只是丢了两兵’,所以你先摆出问题,再进一步深入研究,看你能否解决它。”
“对于这类问题以及如何把计算机程序编写得更深入,我思考得很多。一个晚上,我忽然有一灵感:对于一种棋势,可以给定一个值,为什么不能以一系列的值取而代之?”
一系列值中最高值意味着棋势处于最佳状态,而最低值则相当于可能出现最坏的情况,计算机程序要对一系列值而不是对单一值进行比较,而且当这些值的范围太宽时,它还可以比较深入地考虑棋势,以便把最高值和最低值都包括进去。伯利纳说道:“这种想法是遗漏的组成要素。它是许多不可思议的事物之一,这类事在科学上隔一段时间就发生一次。你提出某一方案,那么突然间,一切都迎刃而解了。”使用系列值的想法已经成为众所周知的B*算法(发音为“B-星”),而且伯利纳还把它列为他的诀窍。
1975年,当伯利纳完成计算机国际象棋博士论义时,他决定为计算机编写下15子棋的程序,这种棋是他最近向新岳父学习的。他发现15子棋对研究求值法是一个很吸引人的领域,因为在这种棋中进行搜索,不会让你探索得太深。在典型的15子棋棋势中,约有400多种可能