当你听说历史上曾有过自动下棋装置时,你应该会相当震惊。确实,这不是和棋子的无数种组合的事实相矛盾吗?
事情解释起来很简单。自动下棋装置并不曾存在,只不过人们愿意相信它存在而已。匈牙利机械师沃尔夫冈·冯·肯佩伦(1734—1804)创造的机器就一度名声大噪。他在奥地利和俄罗斯宫廷里展示了自己的机器后,又在巴黎和伦敦公开展览。拿破仑一世就和这个机器较量过,而且他的确相信自己是在和一部机器对峙。19世纪中期这个著名的机器被运到了美国,然后在费城被一场大火烧毁了。
其他的自动下棋装置没那么大的名气。然而直到不久前仍然有人相信类似的自动下棋机器的存在。
实际上并没有一台下棋机器是自动的。里面藏着一个人类棋手,下棋的是这个棋手。我们刚才说的那一台假机器是个巨大的箱子,里面是复杂的机械。箱子上放着棋盘和棋子,操纵棋子的是一个傀儡的手。比赛开始前会展示箱子内部,使人们确信里面除了机械零件就没有别的东西了。但是其实里面有足够的空间来藏住一个个子不大的人(名噪一时的棋手约翰·阿里盖耶尔和威廉·路易斯就曾扮演过这个角色)。有可能当依次向众人展示箱子的不同部分时,里面的人则悄悄地挪到一旁没有掀开的部分。机械部分并没有任何作用,只是用来掩饰里面藏着的活人而已。
综合上面所说的,可以得出结论:棋路的数量是无限多的,而能够“自动”正确走子的机器只存在于容易轻信的人的想象中。因此不用担心象棋危机的出现。
然而,近年来发生的一些事件又让人怀疑这个结论是否正确。现在已经有了可以“下”棋的机器。这就是可以在一秒钟内完成几千次运算的、复杂的计算机。这种计算机我们之前已经提到过了。它又是怎么“下”棋的呢?
毫无疑问的是,任何计算机都是除了运算数据之外别的什么也做不了的。但是计算机是根据特定的运算模式、根据预算设定好的程序进行计算的。
象棋“程序”是由数学家们按照某种象棋战略编写的,而战略指的是能够为每一种局势选出唯一(这个战略中“最优”)的一步的规则系统。下面就是这种战略其中的一个例子。每一个棋子都设为特定的分数值(价值):
除了这个以外,还会以特定的形式评估布局的优势(棋子的灵活性、棋子靠近中间而不是边缘),并且用零点几分来表示。用白棋的总分减去黑棋的总分,得到的差值在某种程度上描述了白棋相对黑棋的物质优势和布局优势。如果差值为正,那么白棋的状况就更有利,如果差值为负——情况不利。
计算机会计算如何用往后的三步棋路来改变这个差值,在三步走法的组合中选择最优的方案并在专门的卡片上打出:“子”已走[还有别的国际象棋“战略”。例如,计算时可以不考虑对手所有的可能走法,而只研究对方“厉害”的走法(吃子、进攻、防守等等)。接着,当对手的走法特别强悍的时候,可以不是预算接下来三步的走法,而是更多的走法。还可以使用不同的棋子价值标准,根据不同的战术变换计算机的“比赛风格”。]。每一步花费的时间并不长(这要看程序的类型和计算机的运行速度),所以没有必要担心它会“超时”。
当然,只能考虑接下来的三步棋路的话,显示了计算机还是很弱的“棋手”[在最优秀的国际象棋大师的棋局中会有选手提前考虑好10步或者更多的棋路。],但不用怀疑,现在的计算机发展快速,很快就会“学会”更好地“下”棋的。
在这本书里展开地讲如何给计算机编写国际象棋程序很困难。我们将在下一章中系统地介绍一些最简单的程序。