如果计算机能够在比赛结束前评估每一局比赛,评估就永远不会改变。确实,对每一步的评价都是“胜利”,“失败”或“平局”。这本质上就是残局表库中发生的事情。*如果计算机可以在每个位置执行此操作,则与计算机进行的每场比赛都将包括计算机要么辞职不动,要么向您提供初始位置的平局,或者对您没有辞职或接受该平局的提议感到恼火。
但是,计算机无法进行这么长时间的评估,因为它可能花费的时间太长,这既是因为游戏可能会很长(原则上为数百个动作),又是因为每个动作都有很多可能性。因此,计算机必须采取许多捷径。这包括尝试快速找出最重要的候选者动作是什么(采取未受保护的棋子可能是个好举子;悬挂女王可能是一个可怕的举子; ...),还包括在几步动作后停止搜索并使用一些启发式方法而不是进行更多搜索以尝试找出结果位置是否良好。
问题在于这些快捷方式可能会出错。当计算机实际上是天才的牺牲时,计算机可能会认为悬挂一块是不好的。它可能会决定某个职位确实已经稳定,但实际上尚未稳定。它可能只是没有足够的力量去看到足够长的将来才能看到特定行动的真正意义。
这是一个简单的示例,尽管它不再是很现实的。假设您将要与我成为伴侣,但我可以进行一系列的十次检查以拖延您的时间。如果我只看十步,那我想我做的还好:也许我什至是一个棋子,所以我的评价是“经过十步,我仍然是棋子,所以我很好。得分+1“,我打了我的第一张支票,你回应,现在我发现它已经十了,然后辞职了。这就是所谓的“水平效应”,现代程序试图避免这种现象(例如,通过沿着具有很多强制移动的线更深地看),但它说明了一般原理。
如果引擎可以看到,例如,未来有10个动作,那么随着每个动作的完成,它在游戏中的作用就会越来越远。在初始位置,它可以看到棋盘在第10步时的样子;一动之后,它可以看到移动了11,以此类推。(同样,这是一种简化,因为如今计算机并没有将其固定在距离未来的距离上,但是它为您提供了总体思路。)
您给出的示例只是我给出的示例的一个不太生动的版本。随着做出更多的动作,计算机可以更深入地了解游戏,因此可以给出更准确的评估。另一种看待这种情况的方式是在信息方面:随着演奏更多动作,计算机将获得更多信息。过去一直在猜测您对1.e4的响应是什么,但是现在它知道您在玩西西里语,依此类推。
*这里有一个细微的差别,您实际上需要计算获胜的移动次数,以避免重复排名。例如,考虑一下KQ vs K的残局。每一个不会僵持或屈服于女王的举动都会获胜,因此您需要一种机制来朝着将死的方向前进,而不是随便说说:“哇,我要全力以赴赢得这一胜利–几乎所有举动都会胜利!”