第三章 确定性推理(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章确定性推理
按所用知识的确定性,推理可以确定性和不确定性推理。
所谓确定性推理指的是推理所用的知识都是精确的,推出的结论也是精确的。
比如一个事件是否为真,其推理的结果只能是真或者假,绝对不可能出现第三种可能性。
确定性推理的方法有很多,具体有图搜索策略、盲目搜索、启发式搜索、消解原理、规则演绎系统、产生式系统等等
第一节图搜索策略
●搜索的基本概念
➢搜索分为盲目搜索和启发式搜索
⏹盲目搜索:无信息搜索,在搜索过程中只按预先规定的搜索控制策略进行搜索,
而没有任何中间信息来改变这些控制策略,效率不高,只适合求解简单问题
⏹启发式搜索:有信息搜索,在搜索求解问题的过程中,根据问题本身的特性或搜
索过程中产生的一些信息来不断地改变或调整搜索的方向,使搜索朝着最有希望的方向前进,加速问题的求解,并找到最优解
●图搜索策略
在人工智能中,搜索问题一般包括两个重要的问题:
➢搜索什么:搜索什么通常指的就是目标。
➢在哪里搜索:在哪里搜索就是“搜索空间”。
搜索空间通常是指一系列状态的汇集,因此称为状态空间。
所以,人工智能中的搜索可以分成两个阶段:
➢状态空间的生成阶段
➢在该状态空间中对所求问题状态的搜索
一般图搜索(状态空间搜索)的基本思想
1.问题状态用图数据结构的结点表示;
2.从初始状态(结点)开始,对选定的结点选择满足条件的操作符,操作符作用后
产生新的结点(状态);
3.检查新产生的子结点中是否有目标结点:有则找到了问题的解;
4.否则重复上述过程直至产生目标结点,或全部结点处理完无解。
状态空间搜索的基本思想
➢节点扩展的概念
⏹扩展:就是用合适的算符对某个节点进行操作生成一组后继节点,扩展过程实际上就是求
后继节点的过程
⏹已扩展节点:对状态空间图中的某个节点,如果求出了它的后继节点,则此节点为已扩展
的节点
⏹未扩展节点:对状态空间图中的某个节点,如果尚未求出它的后继节点,则此节点称为未
扩展节点
在对状态空间图搜索求解时,将为扩展的节点存于一个名为OPEN的表中,而将已扩展的节点存于一个名为CLOSED的表中
搜索的目的是为了寻找初始节点到目标节点的路径,所以在搜索过程中就得随时记录搜索轨迹。
我们用一个称为CLOSED表的动态数据结构来专门记录考察过的节点(已扩展的节点)。
CLOSED表中存储的是一棵不断成长的搜索树。
另一方面,还得不断地把待考察的节点(为扩展的节点)组织在一起,并做某种排列,以便控制搜索的方向和顺序。
我们采用一个称为OPEN表的动态数据结构,来专门登记当前待考察的节点
图搜索(graph search)一般过程
➢搜索过程中的指针修改
节点n扩展后的子节点分为3类:
(i)全新节点
(ii)已出现在OPEN表中的节点
(iii)已出现的CLOSE表中的节点
指针标记和修改的方法:
(i)类节点:加入OPEN表,建立从子节点到父节点n的指针
(ii)类节点、 (iii)类节点
比较经由老父节点、新父节点n到达初始状态节点的路径代价
经由新父节点n的代价比较小,则将原子节点指向老父节点的指针,修改为指向新父节点n (iii)类节点还得从CLOSE表中移出,重新加入OPEN表。
第二节盲目搜索
盲目搜索按预定的控制策略进行搜索,搜索过程中获得的中间信息不用来改变搜索策略。
搜索总是按预定的路线进行,不考虑问题本身的特性,这种搜索有盲目性,效率不高,不利于求解复杂问题。
分类
➢宽度优先搜索Breadth-first search
➢深度优先搜索Depth-first search
➢等代价搜索Uniform-cost search
特点
➢搜索过程中不使用与问题有关的经验信息
➢不需要重排OPEN表
➢搜索效率低
➢不适合大空间的实际问题求解
●宽度优先搜索策略
宽度优先搜索(breadth-first search)的定义:
➢如果搜索是以接近起始节点的程度依次扩展节点的,那么这种搜索就叫做宽度优先搜索(breadth-first search)
➢这种搜索是逐层进行的;在对下一层的任一节点进行搜索之前,必须搜索完本层的所有节点
➢宽度优先——扩展当前节点后生成的子节点总是置于OPEN表的后端,即OPEN 表作为队列,先进先出,使搜索优先向横向方向发展。
➢由近及远逐层访问图中顶点(典型的层次遍历)。
宽度优先搜索策略算法
⑴把初始节点S。
放入OPEN表;
⑵如果OPEN表为空,则问题无解,退出;
⑶把OPEN表的第一个节点(记为n)取出放入CLOSED表;
⑷考察节点n是否为目标节点。
若是,则求得了问题的解,退出;
⑸若节点n不可扩展,则转第⑵步;
⑹扩展节点n,将其子节点放入OPEN表的末端,并为每一个子节点都配置指向父节点的指针,然后转第⑵步;
宽度优先搜索的性质
➢当问题有解时,一定能找到解
➢当问题为单位代价时,且问题有解时,一定能找到最优解
➢方法与问题无关,具有通用性
➢效率较低
➢属于图搜索方法
宽度优先搜索的优点和缺点
➢宽度优先搜索优点:
目标节点如果存在,用宽度优先搜索算法总可以找到该目标节点,而且是最小(即最短路径)的节点。
➢宽度优先搜索缺点:
⏹宽度优先搜索是一种盲目搜索,时间和空间复杂度都比较高,当目标节点距离初始节点较
远时会产生许多无用的节点,搜索效率低。
⏹宽度优先搜索中,时间需求是一个很大的问题,特别是当搜索的深度比较大时,尤为严
重,但是空间需求是比执行时间更严重的问题。
●深度优先搜索
定义
➢首先扩展最新产生的(即最深的)节点。
➢深度相等的节点可以任意排列。
特点
➢首先,扩展最深的节点的结果使得搜索沿着状态空间某条单一的首先路径从起始节点向下进行下去;
➢仅当搜索到达一个没有后裔的状态时,才考虑另一条替代的路径。
➢深度优先——扩展当前节点后生成的子节点总是置于OPEN表的前端,即OPEN 表作为栈,后进先出,使搜索优先向纵深方向发展。
算法:
➢防止搜索过程沿着无益的路径扩展下去,往往给出一个节点扩展最大深度——深度界限。
任何节点如果达到了深度界限,那么都将把它们作为没有后继节点来处理。
➢定义-节点的深度:
⏹起始节点的深度为0。
⏹任何其他节点的深度等于其父辈节点的深度加1。
⏹与宽度优先搜索算法最根本的不同:将扩展的后继节点放在OPEN表的前端。
算法的具体过程
1.把起始节点 S放到未扩展节点 OPEN表中。
如果此节点为一目标节点,则得到一
个解。
2.如果 OPEN为一空表,则失败退出。
3.把第一个节点(节点n)从 OPEN表移到CLOSED表。
4.如果节点 n的深度等于最大深度,则转向(2)
5.扩展节点n,产生其全部后裔,并把它们放入OPEN表的前端,如果没有后裔,则
转向(2)
6.如果后继节点中有任一个为目标节点,则求得一个解,成功退出,否则,转向(2)
深度优先搜索的性质
➢一般不能保证找到最优解
➢当深度限制不合理时,可能找不到解,可以将算法改为可变深度限制
➢最坏情况时,搜索空间等同于穷举
➢是一个通用的与问题无关的方法
深度优先搜索的优点
➢深度优先搜索的优点是比宽度优先搜索算法需要较少的空间,该算法只需要保存搜索树的一部分,它由当前正在搜索的路径和该路径上还没有完全展开的节点标志所组成。
➢深度优先搜索的存储器要求是深度约束的线性函数。
深度优先搜索的缺点
➢既不是完备的,也不是最优的。
主要问题是可能搜索到了错误的路径上。
很多问题可能具有很深甚至是无限的搜索树,如果不幸选择了一个错误的路径,则深度优先搜索会一直搜索下去,而不会回到正确的路径上。
这样一来对于这些问题,深度优先搜索要么陷入无限的循环而不能给出一个答案,要么最后找到一个答案,但路径很长而且不是最优的答案。
有界深度搜索和迭代加深搜索
有界深度优先搜索过程总体上按深度优先算法方法进行,但对搜索深度需要给出一个深度限制dm,当深度达到了dm的时候,如果还没有找到解答,就停止对该分支的搜索,换到另外一个分支进行搜索。
➢策略说明:
(1)深度限制dm很重要。
当问题有解,且解的路径长度小于或等于dm时,则搜索过程一定能够找到解,但是和深度优先搜索一样这并不能保证最先找到的是最优解。
但是当dm取得太小,解的路径长度大于dm时,则搜索过程中就找不到解,即这时搜索过程甚至是不完备的。
(2)深度限制dm不能太大。
当dm太大时,搜索过程会产生过多的无用节点,既浪费了计算机资源,又降低了搜索效率。
(3)有界深度搜索的主要问题是深度限制值dm的选取。
➢改进方法:(迭代加深搜索)
⏹先任意给定一个较小的数作为dm,然后按有界深度算法搜索,若在此深度限制内找到了
解,则算法结束;如在此限制内没有找到问题的解,则增大深度限制dm,继续搜索。
⏹迭代加深搜索,试图尝试所有可能的深度限制:
✓首先深度为0,
✓然后深度为1,
✓然后为2,等等。
⏹如果初始深度为0,则该算法只生成根节点,并检测它。
⏹如果根节点不是目标,则深度加1,通过典型的深度优先算法,生成深度为1的树。
⏹当深度限制为m时,树的深度为m。
⏹迭代加深搜索看起来会很浪费,因为很多节点都可能扩展多次。
⏹然而对于很多问题,这种多次的扩展负担实际上很小,直觉上可以想象,如果一棵树的分
支系数很大,几乎所有的节点都在最底层上,则对于上面各层节点扩展多次对整个系统来说影响不是很大。
表注:b是分支系数,d是解答的深度,m是搜索树的最大深度,l是深度限制。
➢宽度优先搜索、深度优先搜索和迭代加深搜索都可以用于生成和测试算法。
➢宽度优先搜索需要指数数量的空间,深度优先搜索的空间复杂度和最大搜索深度呈线性关系。
➢迭代加深搜索对一棵深度受控的树采用深度优先的搜索。
它结合了宽度优先和深度优先搜索的优点。
➢和宽度优先搜索一样,它是最优的,也是完备的。
但对空间要求和深度优先搜索一样是适中的。