《人工智能教程(张仰森)》(三)

来源:互联网 发布:淘宝用户冻结无法登陆 编辑:程序博客网 时间:2024/05/17 02:59

五、状态空间搜索策略

       和搜索相对应的知识表示法有两种,一种是状态空间表示法,一种是与/或树表示法。

       1. 搜索的概念及种类

       首先谈了搜索的概念。即根据问题的实际情况,按照一定的策略或规则,从知识库中寻找可利用的知识,从而构造出一条使问题获得解决的推理路线的过程。

       然后谈了搜索的种类。分为盲目搜索(又称无信息搜索,带有盲目性,效率不高,只用于解决比较简单的问题)和启发式搜索(又称有信息搜索,求解效率更高,更易于求解复杂的问题)。

       2. 盲目搜索策略

       首先谈了状态空间图的搜索策略。所谓扩展,即用合适的算符对某个节点进行操作,生成一组后继结点,扩展过程实际上就是求后继结点的过程。对于状态空间图中的某个节点,如果求出了它的后继结点,则此节点就是已扩展的节点,而尚未求出后继结点的节点称为未扩展节点。将未扩展节点存入一个名为OPEN的表中,将已扩展节点存入一个CLOSED的表中。然后给出了通用的一般搜索算法流程,引出了盲目搜索、启发式搜索、搜索图和搜索树的概念。

       然后谈了宽度优先搜索。又称广度优先搜索,是一种盲目搜索策略。在搜索过程中,未扩展节点表OPEN表中的节点排序准则是:先进入的节点排在前面,后进入的节点排在后面。给出了该算法的流程,并用八数码难题进行了解释。它的缺点是盲目性大,当目标节点距离初始节点较远时,会产生大量的无用节点,效率低。但是只要问题有解,利用此法总能最优解,即宽度优先搜索策略是完备的。

       接着谈了深度优先搜索。也是一种盲目搜索策略。然后谈了算法的流程,不同的是它要将后继结点放入OPEN表的前端。从理论上讲,解总是能找到的,但是某些分支可能扩展的很深,影响效率,所以可以对分支深度进行一定的限定。

       于是就谈到了有界深度优先搜索。先定义搜索树中节点深度的概念:搜索树中初始节点(即根节点)的深度为0;任何其他节点的深度等于父节点的深度加1。谈了算法的流程,指出有界深度优先搜索的策略是不完备的。

       下面谈了代价树的宽度优先搜索。把有向边上标有代价的搜索树称为代价搜索树,简称代价树。把从节点 i 到其后继结点 j 的连线之代价标记为 C(i,j),把初始节点S0到任意节点x的路径代价记为 g(x),则 g(j) = g(i) + C(i,j)。基本思想是:每次从OPEN表中选择一个代价最小的节点移入CLOSED表。随后谈了算法的流程,并举例进行了解释。

       最后谈了代价树的深度优先搜索。与上面的区别是:宽度优先搜索算法每次从OPEN表中的全体节点中选择代价最小的节点移入CLOSED表,并对这一节点进行扩展或判断,而深度优先搜索则是从刚刚扩展的节点的后继结点中选择一个代价最小的节点移入CLOSED表,并进行扩展或判断。一般情况下,这两种方法的结果并不一定相同,代价树的深度优先搜索算法不是完备的,有可能进入无穷分支路径而搜索不到问题的解。

       3. 启发式搜索策略

       利用问题自身特性信息来提高搜索效率的搜索策略,称为启发式搜索或有信息搜索。

       首先谈了启发信息与估价函数。可用于指导搜索过程且与问题求解有关的控制性信息称为启发信息。估价函数就是要估计待搜索节点的重要程度,给他们排序。这里定义估价函数 f(x) 为从初始节点经过节点x到达目标节点的最小代价路径的代价估计值,一般形式为:f(x) = g(x) + h(x),其中 g(x) 为初始节点S0到节点x已经实际付出的代价,h(x) 是从节点x到目标节点Sg的最优路径的估计代价,故 h(x) 称为启发函数。一般情况下,在 f(x) 中,g(x) 的比重越大,搜索方式就越倾向于广度优先搜索方式;h(x)比重越大,越倾向于深度优先搜索方式。

        随后谈到了最佳优先搜索。又称为有序搜索或择优搜索。按估价函数 f(x)的值来选择最有希望的点,一般估价函数的值越小,希望程度越大。最佳优先搜索又分为了:

        1)局部最佳优先搜索。类似于深度优先搜索法,是一种启发式搜索方法。思想是:对某一节点进行扩展后,对其每个后继结点计算估价函数的值,在这些后继节点的范围内选择估价函数值最小的节点作为下一个要考察的节点。

        2)全局最佳优先搜索。类似于宽度优先搜索法,是一种启发式搜索方法。它是在OPEN表中的全部节点中选择一个估价函数值最小的节点作为下一个被考察的节点。

        最后又谈到了A*算法。它的估价函数f(x) = g(x) + h(x) 是对下列函数 f*(x) = g*(x) + h*(x) 的一种估计或近似。恒有 g(x) >= g*(x),要求对所有的x均有 h(x) <= h*(x),它能保证该算法找到最优解。如果没有 h(x) <= h*(x) 则称为A算法。A*算法具有一些性质:

        1)可采纳性。能在有限步内终止并找到最优解。

        2)单调性。

        3)信息性。A*算法的搜索效率取决于启发函数 h(x),在满足 h(x) <= h*(x) 的前提下,h(x)的值越大越好。

1 0
原创粉丝点击