返回
繁体
首页

阿基米德的报复

视觉:
关灯
护眼
字体:

第十章 计算机——未来的象棋之王(5 / 7)
并看出了对手将应以d,从而能保证时B取得比对A更好的结果。这时计算机有足够理由选择A,而对手反应e或f的结果是什么都无关紧要。

    计算机不需要考虑所有其他应着棋步的结果,其中也包括对手不能吃后,因为计算机已能识别对手的走棋路线是确保它自己对B步棋的应步能优于对A步棋的应步。因此,计算机根据自己的观点,知道走A步棋比走B步棋更为可取。

    要有效地执行a-β算法,计算机必须按顺序考虑各种棋步:在上述例子中,它必须先检验A,再检验B,并且在分析B时,必须先检验捉后的棋步,再考虑其他的应步。审查各种棋步的顺序取决于各种不同的探试法或一般经验。

    例如,捉子探试法指令程序对那些涉及捉子的各种棋步给予最优先考虑。(这样捉子成为一着好棋的机会将更多一些,特别是如果被捉的子未受到保护时。这种方法还能帮助计算机减轻负担,对机器大有稗益。而棋盘上少了一个子,计算机考虑的应着棋步也就相应减少。)

    杀子探试法始终监视着对手的哪一步棋被杀或被驳倒(一种特殊的棋步)。当计算机仔细考虑了另一步棋时,首先要研究杀方的反应。现举一特殊例子。计算机发现它所考虑的捉对方车的一步已被对手弈出将军棋步所驳倒,在仔细考虑替代的棋步时,它将首先决定是否要走避免被将军的棋步。换句话说,杀子探试法可用来识别并监视这种威胁,这里所指的是能立即将军的致命威胁。另一次探试优先考虑那些能将军的棋步,从而应了一句古老的格言:“常将,就能将死。”简单地说,这时计算机的做法就有些更像人了。

    在全方位搜索法中,要是采用渐进地深入考虑所有的续步,而不是每次一步地充分考虑这些续步,那么就能做到省时省事。从棋盘上的某种棋势着手,首先分析所有可能的续步,然后分析某一特定的棋步,根据目前所进行的搜索,就能看到最佳的一步棋。再从这步棋开始,对其余的所有续步进行有效的分析,一直到两着棋的深度,并且再次找到其中最佳的一步棋。这种过程叫做迭代深化法,它不断重复下去,直到达到所期望的深度时为止。

    有一种表记录了计算机已经求出值的棋势、对这些棋势所给定的数值、以及迄今已搜索到的最佳一步棋,通过这个表就可以提高全方位搜索法的有效性。在全方位搜索法中,各种棋势都往往会不止一次地出现,只要程序设计好,查找所求的数值的时间自然比重新计算的时间少,因此,这种表在节省时间方面是很有用的。

    在70年代,美国西北大学的斯莱特和阿特金已能够利用变最大为最小求值法、a-β算法、捉子探试法与杀子探试法、迭代深化法和已经检验过的棋势表等各种方法成功地用国际象棋3.0程序的后来版本进行工作,而且,它也像图灵的纸上下棋机一样,深入地搜索了下国际象棋的战术棋路,直到走到走不动的棋势为止。这就是国际象棋4.7程序,它下国际象棋的能力略低于国际象棋大师的水平。

    1981年,全方位搜索程序Belle由美国电话电报公司贝尔实验室的肯·汤姆森和乔·康登共同开发出来,它已成为第一部达到国际象棋大师级水平的计算机,进入全美国际象棋比赛最高棋手1%的行列。Belle程序的成功应归功于专为进行国际象棋运算而定制的硬件。华盛顿的官员显然很重视Belle程序。1981年,当汤姆森和康登试图携带Belle程序去苏联莫斯科参加国际象棋表演比赛时,联邦局人员拘捕了他们。里根当局担心该程序会泄露军事秘密。而汤姆森却坚持认为,Belle程序所知道的事情只是如何去下国际象棋。汤姆森告诉新闻界说:“在军事上可以使用Belle程序的惟一方式就是可以把它从飞机中扔出,也许你可以以此杀死某一个人。”这些日子,华盛顿已不大注意了,因为Belle程序的等级已滑落在国际象棋大师的水平之下,然而它仍然可以探索平均8着棋的深度,每秒钟分析120,000种棋势,弈出比较难对付的国际象棋。

    当斯莱特、阿特金、汤姆森、康登及其他人应用全方位搜索法进行工作时,伯利纳却集中精力于求值函数上。伯利纳回忆说:“当时我正考虑德格鲁特关于国际象棋大师怎样弈棋的著名的研究——他们如何观察弈至一半的棋局变化,然后如何转向考虑别的方面,再如何回到考虑最初的棋局变化。看来那是正确的。至少那是我所考虑的如何下棋的方法。”另一方面,现有的计算机下国际象棋的程序,不会在变化中来回移动。它们随着特定的变化到达一定的深度,给最后的棋势求出数值,再转到另一种变化。

    伯利纳接着说:“给定某一具体值的困难在于你不能出错。你可以弈出牺牲两子兵,以换取具有极强攻击力的棋势。如果你使用类似α-β的算法,你就能够弈出最后一种棋势,对此你必须赋值;要么为换取攻势值得抛弃两兵子,要么就不值得。无论你持哪种看法,都会在一定时间内出现错误。更确切地说,‘我还不能肯定。我已经丢掉两兵但拥有强攻势。也许实际上我可以将死王或