内容导航 第1页:竞赛的历史 第2页:人类 VS 电脑,谁将是未来的主宰者? 第3页:象棋程序的思考 总结
新的比赛
PC的处理器和多处理器系统变得越来越强大;下象棋的软件也在不断地完善,现在不需要超级电脑也能够表现出大师级的水平。
首先,让我们讨论早前的比赛 - 克拉姆尼克 vs Deep Fritz 。这场对抗有8场比赛,分为两个部分来完成。在头4场比赛,克拉姆尼克使用了很好的抗电脑策略。它和电脑兑了王后,在双方还有很多子的前提下进入了复杂的最后阶段。这里使用到很少战术上的变化,但由于棋局上的子较多,所以阻碍了Fritz想出更加长远的结果。例如,电脑能够想出6步棋,但实际的变化却有10步。在这种情况,电脑处于相对较弱的地位。最后拉姆尼克 赢了两局,平了1局。
第二部分比赛则完全相反,首场比赛可能是拉姆尼克已经厌倦了与电脑比赛吧;他很快就失去了骑士并接着就放弃了比赛。接下来的3场比赛显得平淡无奇,打了个平局。
我可以把这些竞赛比喻为拳击比赛,在前3个回合里拉姆尼克把对手摔在了地上。接着再在下个回合里,他因为受到绳索的影响被对手击中,并摔倒在地上。在接下来的回合,他迅速地进行攻击,差不多把对手击倒在地上的时候,却发现自己过度攻击了。最后的两场处于僵持的地位,在拳击上,拉姆尼克可以通多点数获胜。
象棋程序的主要原理
象棋程序是怎么工作,并击败世界象棋冠军的呢?每个象棋运算法则都是基于简单的搜索,然后在所有可能的下法中,选择最优秀的那一个。因此,电脑里面有个定位的步骤,它试图逐一计算出所有的移动,并在移动到新的方位之后,再重新计算所有可能的走法,计算机会不停的这样计算下去。
最后,它会估计自己的位置并作出最好的移动。从上面图表的情况来看,它会选择首个变量(variant),因为对手作出任何举措都会给电脑带来好处。
程序是怎么作出分析的呢,根据数字吗?它基于分析所获得的因素作为考虑的先决条件,首先是双方的子数,接着是子的活动能力(可能作出活动的数量),控制的中心点,间隔的优点,控制的领地。还有其它要考虑的简单因素:快步走卒,没有攻击力的卒,已经通过和行动迟缓的卒。通过本方子控制的领地,王的安全性也可以计算出来。
但你要知道,这些因素都是相当纯粹而机械的算术机制。在这里,电脑程序可以看作是编好章节的书籍,通过阅读该本书:快步是处于弱势。但同时要考虑到其它因素的时候,就不能够简单地这样计算了:1个被困住的卒根据所处位置和形势的不同,可能是弱势亦可能是优势,因此会有很多因素需要考虑。对于单子的移动来说,我们并不知道它是确却的下法,还是作诱,而电脑只是简单地计算理论上可能移动的所有步数。
考虑到这些因素,电脑在计算位置是强项就不足为奇了,它能够从预定战术上的动机获得先天的优势。程序只是在纷繁复杂的数据库中选择最适合的下子方法而已。人类玩家所采取的办法则与程序的相反。
现在让我们在现代PC里使用简单的查询方法,估算它所能够获得的计算深度。
假设我们有1GHz CPU和100秒的时间。那么每步程序有1000亿次时钟周期,让我们假设每个位置需要消耗1000次时钟周期。我们要把搜索运算法则的优点考虑其中,例如不同的走子有什么优势。
现在让我们估算典型的棋盘所有可能的走棋步数,当大部分棋子仍在的时候,大约为30-60步,而为了简单理解,我们把它考虑为1000的平方根。
1000亿次除以1000周期/每步 = 最深计算水平的位置数。接着把可能的步数取对数,结果为5-6的一半,也就是差不多3步。
如果我们使用更快的处理器,我们能够得到更深更多的走子步数吗?
CPU
计算深度 (走子数为一半)
1GHz
6
1000GHz
8
1000THz
10
很明显,使用更快速的处理器并不能够得到预期的结果,我们唯一的希望是对程序的运算法则进行优化。