要问引导搜索的信息是从哪里来的,这没有什么神秘。我们不必追随柏拉图,把一个已经知道解的“以前的生存”赋予符号系统。一个适度复杂的生成程序检验系统不必求助于灵魂转世,就能达到目的。
搜索树以简单的代数问题作为搜索的例子看起来也许是不大常见的,甚至有点反常。它显然不是试错式搜索,因为虽然有一些试探,但却没有任何错误。我们更习惯于把问题求解搜索看作生成枝叉繁多的树,作为部分解,它们具有这种可能性:在得出一个解之前,会长出数以千计的、甚至数以百万计的分支来。这样,如果生成程序从它产生的每一个表达式中造出B个新的分支,那么这棵树就会长出B个分枝,D是它的深度。对代数问题而言,这棵生长的树有其特殊性,那就是它的分支数B等于1。
国际象棋程序一般会长成庞大的搜索树,在某些情况下,其分支数目多达百万以上。这个例子虽然可用来说明我们关于树搜索的观点,但是应该看到,国际象棋中的搜索目的不是生成拟议中的解,而是对解进行评价(作检验)。研究弈棋程序的路线之一,已集中在改进棋盘表述方式上,以及改进在其上走子的过程,以便提高搜索速度,使搜索更大的树成为可能。不难看出,该方向的基本原理为:动态搜索越深,对其结果的评价也就越准确。而另一方面,又有充分的经验证据表明:最高水平的人类棋手—大师们,极少开发出超过一百个分支的搜索树。这种经济性的取得,主要不是因为搜索的深度不及国际象棋程序,而是每一节点上的分支非常稀少,并且有选择性。在不致造成评价失真的情况下,要做到这一点,只能是将更多的选择性植入生成程序本身,这样,它就可以只选择生成那些极有可能提供对阵势来说有重要参考价值的信息的分支。
上述讨论造成了听上去有些自相矛盾的结论:搜索,亦即相继生成潜在解结构,是符号系统在问题求解中行使智能的基本方面,但是它所表现出的智能的多少,却不是由搜索的多少来衡量的。一个问题成其为问题,并不是该问题的解需要进行大量的搜索,而是,如果不应用必要的智能水平的话,就需要进行大量的搜索。当致力于解决一个问题的符号系统对它要做的事情有充分的了解时,就会简捷地径直向它的目标前进;但是在进入未知领域时,它的知识一旦变得不够用了,在重新找到它的道路之前,会面临进行大量搜索的威胁。
5 作为经验探索的计算机科学:符号和搜索
133