




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-3-161第3章 搜索策略n问题求解系统划分为两大类n知识贫乏系统 n依靠搜索技术解决问题 n知识贫乏、缺乏针对性n效率低 n知识丰富系统 n依靠推理技术解决问题n基于丰富知识的推理技术,直截了当 n效率高 2022-3-162 n对于给定的问题,智能系统的行为一般是找对于给定的问题,智能系统的行为一般是找到能够达到所希望目标的动作序列,并使其所到能够达到所希望目标的动作序列,并使其所付出的付出的代价最小、性能最好代价最小、性能最好。n基于给定的问题,问题求解的第一步是目标基于给定的问题,问题求解的第一步是目标的表示。的表示。n搜索就是找到智能系统的动作序列的过程。搜索就是找到智能系
2、统的动作序列的过程。 2022-3-163n和通常的搜索空间不同,人工智能中大多数问题和通常的搜索空间不同,人工智能中大多数问题的状态空间在问题求解之前不是全部知道的。的状态空间在问题求解之前不是全部知道的。 在人工智能中,搜索问题一般包括两个重在人工智能中,搜索问题一般包括两个重要的问题:要的问题:v搜索什么搜索什么搜索什么通常指的就是目标。搜索什么通常指的就是目标。v在哪里搜索在哪里搜索在哪里搜索就是在哪里搜索就是“搜索空间搜索空间”。搜索空间通常。搜索空间通常是指一系列状态的汇集,因此称为状态空间。是指一系列状态的汇集,因此称为状态空间。2022-3-164n所以,人工智能中的搜索可以分
3、成两个所以,人工智能中的搜索可以分成两个阶段:阶段:n状态空间的生成阶段状态空间的生成阶段n在该状态空间中对所求问题状态的搜索在该状态空间中对所求问题状态的搜索搜索可以根据是否使用启发式信息分搜索可以根据是否使用启发式信息分为为v盲目搜索盲目搜索v启发式搜索启发式搜索 2022-3-165n盲目搜索盲目搜索 只是可以区分出哪个只是可以区分出哪个是目标状态。是目标状态。 一般是按预定的搜索一般是按预定的搜索策略进行搜索。策略进行搜索。 没有考虑到问题本身没有考虑到问题本身的特性,这种搜索具有的特性,这种搜索具有很大的盲目性,效率不很大的盲目性,效率不高,不便于复杂问题的高,不便于复杂问题的求解。
4、求解。 o启发式搜索启发式搜索是在搜索过程中加入了与问题有关的启发式信息,用于指导搜索朝着最有希望的方向前进,加速问题的求解并找到最优解。 2022-3-166n根据问题的表示方式分为根据问题的表示方式分为n状态空间搜索状态空间搜索n与或树搜索与或树搜索状态空间状态空间搜索是用搜索是用状态空间状态空间法来求解法来求解问题所进问题所进行的搜索行的搜索与与/ /或树搜或树搜索是指用问索是指用问题规约方法题规约方法来求解问题来求解问题时所进行的时所进行的搜索。搜索。2022-3-167n考虑一个问题的状态空考虑一个问题的状态空间为一棵树的形式。间为一棵树的形式。n宽度优先搜索宽度优先搜索n深度优先搜
5、索深度优先搜索如果根节点首先如果根节点首先扩展,然后是扩扩展,然后是扩展根节点生成的展根节点生成的所有节点,然后所有节点,然后是这些节点的后是这些节点的后继,如此反复下继,如此反复下去。去。在树的最深一层的节在树的最深一层的节点中扩展一个节点。点中扩展一个节点。只有当搜索遇到一个只有当搜索遇到一个死亡节点(非目标节死亡节点(非目标节点并且是无法扩展的点并且是无法扩展的节点)的时候,才返节点)的时候,才返回上一层选择其他的回上一层选择其他的节点搜索。节点搜索。2022-3-168n无论是宽度优先搜索还是深度优先搜索,无论是宽度优先搜索还是深度优先搜索,遍历节点的顺序一般都是固定的,即一遍历节点的
6、顺序一般都是固定的,即一旦搜索空间给定,节点遍历的顺序就固旦搜索空间给定,节点遍历的顺序就固定了。这种类型的遍历称为定了。这种类型的遍历称为“确定性确定性”的,也就是盲目搜索。的,也就是盲目搜索。n对于启发式搜索,在计算每个节点的参对于启发式搜索,在计算每个节点的参数之前无法确定先选择哪个节点扩展,数之前无法确定先选择哪个节点扩展,这种搜索一般也称为非确定的。这种搜索一般也称为非确定的。 2022-3-169n完备性:完备性:n如果存在一个解答,该策略是否保证能够找如果存在一个解答,该策略是否保证能够找到?到?n时间复杂性:时间复杂性:n需要多长时间可以找到解答?需要多长时间可以找到解答?n空
7、间复杂性:空间复杂性:n执行搜索需要多少存储空间?执行搜索需要多少存储空间?n最优性:最优性:n如果存在不同的几个解答,该策略是否可以如果存在不同的几个解答,该策略是否可以发现最高质量的解答?发现最高质量的解答?搜索策略评价标准搜索策略评价标准: :2022-3-1610有许多智力问题有许多智力问题( (如梵塔问题、旅行商问题、八皇如梵塔问题、旅行商问题、八皇后问题、农夫过河问题等后问题、农夫过河问题等) )和实际问题(如路径规和实际问题(如路径规划、机器人行动规划等)都可以归结为划、机器人行动规划等)都可以归结为状态空间搜状态空间搜索索。用用状态空间搜索状态空间搜索来求解问题的系统均定义一个
8、来求解问题的系统均定义一个状态状态空间空间,并通过适当的,并通过适当的搜索算法搜索算法在在状态空间状态空间中搜索中搜索解解答路径答路径。2022-3-1611n显式图与隐式图显式图与隐式图 n显式图显式图n把问题有关的全部状态空间图,即相应的全部有关知识(叙述性知识、过程性知识和控制性知识),都直接存入知识库 n隐式图隐式图n只存储与问题求解有关的部分知识(即部分状态空间)。这种存储方式称为隐式存储。2022-3-1612n图搜索的基本思想图搜索的基本思想 n图搜索图搜索-一种在图中寻找路径的方法一种在图中寻找路径的方法 n从图中的初始节点开始,至目标节点为止。n初始节点和目标节点分别代表产生
9、式系统的初始数据库和满足终止条件的数据库。n方法:把问题的初始状态作为当前状态,选择适用的算符对其进行操作,生成一组子状态,检查目标状态是否在其中出现。若出现,则搜索成功,找到了问题的解;若不出现,则按某种搜索策略从已生成的状态中再选一个状态作为当前状态。重复上述过程,直到目标状态出现或者不再有可供操作的状态及算符时为止。 2022-3-1613 n三个钱币可能出现的状态有8种组合: Q0=(0,0,0),Q1=(0,0,1),Q2=(0,1,0),Q3=(0,1,1),Q4=(1,0,0),Q5=(1,0,1), Q6=(1,1,0), Q7=(1,1,1)。2022-3-1614三枚钱币问
10、题的状态空间图三枚钱币问题的状态空间图 2022-3-1615nS问题求解(即搜索)过程中所有可能到达的合法状态构成的集合;nO操作算子的集合,操作算子的执行会导致问题状态的变迁 ;n状态用于记载问题求解(即搜索)过程中某一时刻问题现状的快照;n抽象为矢量形式 Q=q0,q1,qnTn每个元素qi称为状态分量 n给定每个状态分量qi的值就得到一个具体的状态 Qk=q0k,q1k,qnkT2022-3-1616状态状态表示状态的变迁表示状态的变迁操作算子操作算子问题的状态空间问题的状态空间是一个表示该问题的全部可能状态是一个表示该问题的全部可能状态及其变迁的及其变迁的有向图有向图。 n节点n状态
11、n有向弧n状态的变迁 n弧上的标签n导致状态变迁的操作算子 用用状态空间搜索状态空间搜索来求解问题的系统均定义一个来求解问题的系统均定义一个状态状态空间空间,并通过适当的,并通过适当的搜索算法搜索算法在在状态空间状态空间中搜索中搜索解解答路径答路径。2022-3-1617:n1)船上人数不得超过载重限量,设为K个人; n2)任何时刻(包括两岸、船上)野人数目不得超过传教士; n3)允许在河的某一岸或者在船上只有野人而没有传教士;2022-3-16182022-3-1619可能到达的合法状态:442=32 n(0,0,1),(0,3,0),(3,0,1),(3,3,0)2022-3-1620(2
12、)状态空间表示的经典例子“传教士和野人问题”n定义2类操作算子:nL(x,y)指示从左岸到右岸的划船操作 nR(x,y)指示从右岸到左岸的划船操作nx + y K=2(船的载重限制);nx和y取值的可能组合只有5个n10,20,11,01,02 n( 允许在船上只有野人而没有传教士 )n共有10个操作算子2022-3-16212022-3-1622 2022-3-1623 2022-3-1624 例例:在一个在一个33的方格棋盘上放置着的方格棋盘上放置着1,2,3,4,5,6,7,8八个数码,每个数码占一格,且有一个空格。这些八个数码,每个数码占一格,且有一个空格。这些数码可在棋盘上移动,其移
13、动规则是:与空格相邻数码可在棋盘上移动,其移动规则是:与空格相邻的数码方可移入空格。的数码方可移入空格。现在的现在的问题问题是:对于指定的是:对于指定的初始棋局初始棋局和和目标棋局目标棋局,给出给出数码的移动序列数码的移动序列。该问题称为。该问题称为八数码问题八数码问题。 2831476581276初始棋局初始棋局目标棋局目标棋局移动数码移动数码2022-3-16252 31 8 47 6 5 2 31 8 47 6 52 8 31 47 6 52 31 8 47 6 52 8 31 47 6 52 8 31 6 47 52 8 3 1 47 6 52 8 31 6 47 52 8 31 6
14、4 7 52 8 37 1 4 6 5 8 32 1 47 6 52 81 4 37 6 52 8 31 4 57 6 1 2 37 8 4 6 51 2 38 47 6 52 8 3 6 41 7 52 8 31 67 5 48 32 1 47 6 52 8 37 1 46 52 81 4 37 6 52 8 31 4 57 61 2 3 8 47 6 52022-3-1626n或图(一般图)或图(一般图)n一个状态可以有多个可供选择的操作算子;n操作算子间的选择是一种“或”的关系;n这样的有向图称为或图。2022-3-1627n或图(一般图)或图(一般图)n一个状态可以有多个可供选择的操作
15、算子;n操作算子间的选择是一种“或”的关系,这样的有向图称为或图。n状态空间一般都表示为或图(一般图)n搜索图在搜索解答路径的过程中画出搜索时涉及到的节点和弧线,构成所谓的搜索图。状态空间搜索状态空间搜索一般图搜索一般图搜索2022-3-1628n符号说明:ns-初始状态节点nG-搜索图nOPEN-存放待扩展节点的表nCLOSE-存放已被扩展的节点的表nMOVE-FIRST(OPEN)-取OPEN表首的节点作为当前要被扩展的节点n,同时将节点n移至CLOSE表n一般图搜索算法划分为二个阶段:n1、初始化 n2、搜索循环 一般图搜索算法2022-3-1629n算法划分为二个阶段:n1、初始化 n
16、建立只包含初始状态节点s的搜索图G:=snOPEN:=snCLOSE:= n2、搜索循环nMOVE-FIRST(OPEN)-取出OPEN表首的节点n作为扩展的节点,同时将其移到close表 n扩展出n的子节点,插入搜索图G和OPEN表 n适当的标记和修改指针n排序OPEN表n通过循环地执行该算法,搜索图G会因不断有新节点加入而逐步长大,直到搜索到目标节点。 一般图搜索算法2022-3-1630初始布局初始布局目标布局目标布局移动数码移动数码2022-3-16315864273012022-3-16325864273012022-3-1633586427301586427031586407321
17、5864273102022-3-16345864273015864270315864073215864273102022-3-16355864273015864270315864073215864273102022-3-16365864273015864270315864073215864273105064873215864703215860473212022-3-16375864273015864270315864073215864273105064873215864703215860473212022-3-163858642730158642703158640732158642731050
18、64873215864703215860473215864273102022-3-16395864273015864270315864073215864273105064873215864703215860473215604873210564873212022-3-16405864273015864270315864073215864273105064873215864703215860473215604873210564873212022-3-164158642730158642703158640732158642731050648732158647032158604732156048732
19、10564873212022-3-16425864273015864270315864073215864273105064873215864703215860473215604873210564873215674803212022-3-16435864273015864270315864073215864273105064873215864703215860473215604873210564873215674803212022-3-164458642730158642703158640732158642731050648732158647032158604732156048732105648
20、73215674803212022-3-16455864273015864270315864073215864273105064873215864703215860473215604873210564873215674803215674813205674083212022-3-16465864273015864270315864073215864273105064873215864703215860473215604873210564873215674803215674813205674083212022-3-164758642730158642703158640732158642731050
21、64873215864703215860473215604873210564873215674803215674813205674083212022-3-16485864273015864270315864073215864273105064873215864703215860473215604873210564873215674803215674813205674083212022-3-16495864273015864270315864073215864273105064873215864703215860473215604873210564873215674803215674813205
22、674083212022-3-1650n节点n扩展后的子节点分为3类:n(i)全新节点n(ii)已出现在OPEN表中的节点n(iii)已出现的CLOSE表中的节点n指针标记和修改的方法:n(i)类节点:加入OPEN表,建立从子节点到父节点n的指针n(ii)类节点、 (iii)类节点n比较经由老父节点、新父节点n到达初始状态节点的路径代价 n经由节点n的代价比较小,则移动子节点指向老父节点的指针,改为指向新父节点nn (iii)类节点还得从CLOSE表中移出,重新加入OPEN表。搜索过程中的指针修改2022-3-1651Sn4ninjn1n2n3n31n32n节点ni是当前扩展的节点;n扩展出4
23、个后续节点;nn1、n2是新节点,只需建立指向父节点的指针,并加入OPEN表;2022-3-1652Sn4ninjn1n2n3n31n32nn4已经存在于OPEN表,并且已有父节点njnn4经nj的路径代价大n取消n4指向nj的指针n改为建立n4指向新父节点ni的指针nn3已经存在于CLOSE表,并且已有父节点njn需要做和n4同样的比较和指针修改工作。并且要重新加入open表。2022-3-1653 n一般图搜索算法中,提高搜索效率的关键在于一般图搜索算法中,提高搜索效率的关键在于优化优化OPEN表中节点的排序方式表中节点的排序方式 。n若每次排在表首的节点都在最终搜索到的若每次排在表首的节
24、点都在最终搜索到的解答路径上,则算法不会扩展任何多余的解答路径上,则算法不会扩展任何多余的节点就可快速结束搜索。节点就可快速结束搜索。 n一种简单的排序策略就是按预先确定的顺一种简单的排序策略就是按预先确定的顺序或序或随机地随机地排序新加入到排序新加入到OPEN表中的节表中的节点,常用的方式是点,常用的方式是深度优先深度优先和和宽度优先宽度优先。2022-3-1654 nOPEN表中节点简单的排序方式:n宽度优先扩展当前节点后生成的子节点总是置于OPEN表的后端,即OPEN表作为队列,先进先出,使搜索优先向横向方向发展。2022-3-1655宽度优先宽度优先实例实例2 31 8 47 6 52
25、 8 31 47 6 5 2 31 8 47 6 52 31 8 47 6 52 8 31 47 6 52 8 31 6 47 52 8 3 1 47 6 52 8 31 6 47 52 8 31 6 4 7 52 8 37 1 4 6 5 8 32 1 47 6 52 81 4 37 6 52 8 31 4 57 6 1 2 37 8 4 6 51 2 38 47 6 51256731 2 3 8 47 6 5目标目标82 3 41 8 7 6 54910111213141516172022-3-1656宽度优先搜索 如果搜索是以接近起始节点的程度依次扩展节点的,那么这种搜索就叫做宽度优先搜
26、索。这种搜索是逐层进行的,在对下一层的任意节点进行搜索之前,必须搜索完本层的所有节点。“先产生的节点先扩展”2022-3-1657(1)把初始节点S0,放入OPEN表。(2)如果OPEN表为空。则问题无解,失败并退出。(3)把OPEN表中的第一个节点取出放入CLOSE表中,并按顺序冠以编号n;(4)考察节点n是否为目标节点。若是,则求得了问题的解,成功并退出。(5)若节点n不可扩展,则转第(2)步;(6)扩展节点n,将其子节点放到OPEN表的尾部,并为每一个子节点都配置指向父节点的指针,然后转第(2)步。采用队列结构,宽度优先过程如下:采用队列结构,宽度优先过程如下:2022-3-1658n宽
27、度优先搜索算法原理:n如果当前的节点不是目标节点,则把当点节点的子孙以任意顺序增加到队列的后面,并把队列的前端元素定义为current。n如果目标发现,则算法终止。 2022-3-1659 2022-3-16602022-3-1661宽度优先搜索的性质n当问题有解时,一定能找到解n当问题为单位代价时,且问题有解时,一定能找到最优解n方法与问题无关,具有通用性n效率较低n属于图搜索方法2022-3-1662n宽度优先搜索是一种盲目搜索,时间和空间复杂度都比较高,当目标节点距离初始节点较远时会产生许多无用的节点,搜索效率低。n宽度优先搜索中,时间需求是一个很大的问题,特别是当搜索的深度比较大时,尤
28、为严重,但是空间需求是比执行时间更严重的问题。 宽度优先搜索优点:目标节点如果存在,用宽度优先搜索算法总可以找到该目标节点,而且是最小(即最短路径)的节点。宽度优先搜索的优点和缺点2022-3-1663nOPEN表中节点简单的排序方式:n深度优先扩展当前节点后生成的子节点总是置于OPEN表的前端,即OPEN表作为栈,后进先出,使搜索优先向纵深方向发展。2022-3-1664深度优先深度优先实例实例2 31 8 47 6 5 2 31 8 47 6 52 8 31 47 6 52 31 8 47 6 52 8 31 47 6 52 8 31 6 47 52 8 3 1 47 6 52 8 31
29、6 47 52 8 31 6 4 7 52 8 37 1 4 6 5 8 32 1 47 6 52 81 4 37 6 52 8 31 4 57 6 1 2 37 8 4 6 51 2 38 47 6 52 8 3 6 41 7 52 8 31 67 5 48 32 1 47 6 52 8 37 1 46 52 81 4 37 6 52 8 31 4 57 612346891113141618191 2 3 8 47 6 5目标目标571012151720212022-3-1665深度优先搜索n在深度优先搜索中,首先扩展最新产生的(最深的)节点,深度 相等的节点可以任意排列。n“最晚产生的节点
30、最先扩展” 起始节点深度为0 任何其他节点的深度等于其父辈节点深度加上1 :dn=dn-1+12022-3-1666深度优先搜索很明显这样做,不一定找到最佳解,而且由于深度的限制,可能找不到解,然而,若不加深度限制,可能沿着一条路线无限制地扩展下去,这当然是不允许的。为保证找到解,应选择适当的深度界限,或者采取不断加大深度界限的办法,反复搜索,直到找到解。这种改进的方法叫做迭代加深搜索。2022-3-16671)把初始节点把初始节点S0放入放入OPEN表;表; (2)如果如果OPEN表为空,则问题无解,失败并退出。表为空,则问题无解,失败并退出。 (3)把把OPEN表中的第一个节点取出放入表中
31、的第一个节点取出放入CLOSE表中,表中,并按顺序冠以编号并按顺序冠以编号n; (4)考察节点考察节点n是否为目标节点。若是,则求得了问题的是否为目标节点。若是,则求得了问题的解,成功并退出。解,成功并退出。 (5)若节点若节点n不可扩展,则转第不可扩展,则转第(2)步;步; (6)扩展节点扩展节点n,将其予节点放到,将其予节点放到OPEN表的首部,并为表的首部,并为其配置指向父节点的指针,然后转第其配置指向父节点的指针,然后转第(2)步。步。基于栈实现的深度优先搜索流程: 2022-3-1668n初始节点放到栈中,栈指针指向栈的最上边的元素。n为了对该节点进行检测,需要从栈中弹出该节点,如果
32、是目标,该算法结束,否则把其子节点以任何顺序压入栈中。该过程直到栈变成为空。一棵树的过程(下图)。 2022-3-1669 2022-3-16702022-3-1671n一般不能保证找到最优解n当深度限制不合理时,可能找不到解,可以将算法改为可变深度限制n最坏情况时,搜索空间等同于穷举n是一个通用的与问题无关的方法2022-3-1672n深度优先搜索的优点是比宽度优先搜索算法需要较少的空间,该算法只需要保存搜索树的一部分,它由当前正在搜索的路径和该路径上还没有完全展开的节点标志所组成。n深度优先搜索的存储器要求是深度约束的线性函数。 2022-3-1673 既不是完备的,也不是最优的。既不是完
33、备的,也不是最优的。 主要问题是可能搜索到了错误的路径上。很多主要问题是可能搜索到了错误的路径上。很多问题可能具有很深甚至是无限的搜索树,如果不幸问题可能具有很深甚至是无限的搜索树,如果不幸选择了一个错误的路径,则深度优先搜索会一直搜选择了一个错误的路径,则深度优先搜索会一直搜索下去,而不会回到正确的路径上。这样一来对于索下去,而不会回到正确的路径上。这样一来对于这些问题,深度优先搜索要么陷入无限的循环而不这些问题,深度优先搜索要么陷入无限的循环而不能给出一个答案,要么最后找到一个答案,但路径能给出一个答案,要么最后找到一个答案,但路径很长而且不是最优的答案。很长而且不是最优的答案。2022-
34、3-1674总结 n适用场合 深度优先当一个问题有多个解答或多条解答路径,且只须找到其中一个时;往往应对搜索深度加以限制。 宽度优先确保搜索到最短的解答路径。n共同优缺点: 可直接应用一般图搜索算法实现,不需要设计特别的节点排序方法,从而简单易行,适合于许多复杂度不高的问题求解任务。 节点排序的盲目性,由于不采用领域专门知识去指导排序,往往会在白白搜索了大量无关的状态节点后才碰到解答,所以也称为盲目搜索。 2022-3-1675 有界深度优先搜索过程总体上按深度优先算法方法进行,但对搜索深度需要给出一个深度限制dm,当深度达到了dm的时候,如果还没有找到解答,就停止对该分支的搜索,换到另外一个
35、分支进行搜索。2022-3-1676(1)把初始节点S0放入OPEN表中,置S0的深度d(S0)=0。(2)如果OPEN表为空,则问题无解,失败并退出。(3)把OPEN表中的第一个节点取出放入CLOSE表中。并按顺序冠以编号n。(4)考察节点n是否为目标节点。若是,则求得了问题的解,成功并退出。(5)如果节点n的深度d(n)= dm,则转第(2)步。(6)如果节点n不可扩展,则转第(2)步。(7)扩展节点n。将其子节点放入OPEN表的首部,并为其配置指向父节点的指针。然后转第(2)步。有限深度优先搜索的搜索过程如下有限深度优先搜索的搜索过程如下 :2022-3-1677策略说明: n(1)深度
36、限制dm很重要。 当问题有解,且解的路径长度小于或等于dm时,则搜索过程一定能够找到解,但是和深度优先搜索一样这并不能保证最先找到的是最优解。 但是当dm取得太小,解的路径长度大于dm时,则搜索过程中就找不到解,即这时搜索过程甚至是不完备的。2022-3-1678(2)深度限制dm不能太大。 当dm太大时,搜索过程会产生过多的无用节点,既浪费了计算机资源,又降低了搜索效率。(3)有界深度搜索的主要问题是深度限制值dm的选取。 2022-3-1679改进方法: (迭代加深搜索) 先任意给定一个较小的数作为dm,然后按有界深度算法搜索,若在此深度限制内找到了解,则算法结束;如在此限制内没有找到问题
37、的解,则增大深度限制dm,继续搜索。2022-3-1680n迭代加深搜索,试图尝试所有可能的深度限制:n首先深度为0,n然后深度为1,n然后为2,等等。n如果初始深度为0,则该算法只生成根节点,并检测它。n如果根节点不是目标,则深度加1,通过典型的深度优先算法,生成深度为1的树。n当深度限制为m时,树的深度为m。 2022-3-1681n迭代加深搜索看起来会很浪费,因为很多节点都可能扩展多次。n然而对于很多问题,这种多次的扩展负担实际上很小,直觉上可以想象,如果一棵树的分支系数很大,几乎所有的节点都在最底层上,则对于上面各层节点扩展多次对整个系统来说影响不是很大。 2022-3-1682n表注
38、:b是分支系数,d是解答的深度,m是搜索树的最大深度,l是深度限制。2022-3-1683n宽度优先搜索、深度优先搜索和迭代加深搜索都可以用于生成和测试算法。n宽度优先搜索需要指数数量的空间,深度优先搜索的空间复杂度和最大搜索深度呈线性关系。 2022-3-1684n迭代加深搜索对一棵深度受控的树采用深度优先的搜索。它结合了宽度优先和深度优先搜索的优点。n和宽度优先搜索一样,它是最优的,也是完备的。但对空间要求和深度优先搜索一样是适中的。 2022-3-1685(2)一般图搜索算法n常用的简单方式:n深度优先n宽度优先n【缺点:节点排序的盲目性】n在白白搜索了大量无关的状态节点后才碰到解答,效
39、率低n提高一般图搜索效率的关键n优化OPEN表中节点的排序方式盲目搜索盲目搜索2022-3-1686586427031586407321586427310506487321586470321586047321560487321056487321567480321567481320567408321586427301125634最理想情况:最理想情况:每次排序后每次排序后OPEN表表表首元素表首元素n n总在解答路径上总在解答路径上2022-3-1687n启发式知识指导OPEN表排序的一般图搜索:n全局排序对OPEN表中的所有节点排序,使最有希望的节点排在表首。nA算法, A*算法(掌握!)n局
40、部排序仅对新扩展出来的子节点排序,使这些新节点中最有希望者能优先取出考察和扩展;n爬山法(了解,对深度优先法的改进);2022-3-1688n【基本思想】n设计体现启发式知识的评价函数f(n);n指导一般图搜索中OPEN表待扩展节点的排序:n【评价函数f(n)=g(n)+h(n) (掌握) 】nn-搜索图G中的节点;nf(n)- G中从初始状态节点s,经由节点n到达目标节点ng,估计的最小路径代价;ng(n)- G中从s到n,目前实际的路径代价;nh(n)-从n到ng,估计的最小路径代价;2022-3-1689Snng搜索图搜索图G Gh(n): n-ng的估计最小路径代价的估计最小路径代价
41、g(n):s-n的实际路径代价的实际路径代价 f(n):s-n-ng的的估计估计最小路径代价最小路径代价 2022-3-1690n【评价函数f(n)=g(n)+h(n) (掌握) 】nn-搜索图G中的节点;nf(n)- G中从s经n到ng,估计的最小路径代价;ng(n)- G中从s到n,目前实际的路径代价;nh(n)-从n到ng,估计的最小路径代价; nh(n)值-依赖于启发式知识加以计算;nh(n)称为启发式函数(掌握意义!)。n如何用评价函数来实现A算法? ( 掌握!) 2022-3-1691nA算法的设计与一般图搜索相同,划分为二个阶段:n1、初始化 n建立只包含初始状态节点s的搜索图G
42、:=snOPEN:=snCLOSE:= n2、搜索循环nMOVE-FIRST(OPEN)-取出OPEN表首的节点n n扩展出n的子节点,插入搜索图G和OPEN表 n适当的标记和修改指针(子节点父节点)n排序OPEN表(评价函数f(n)的值排序)n通过循环地执行该算法,搜索图会因不断有新节点加入而逐步长大,直到搜索到目标节点。2022-3-1692n算法A的设计与一般图搜索类似,划分为二个阶段:n1、初始化 n2、搜索循环nMOVE-FIRST(OPEN)-取出OPEN表首的节点n n扩展出n的子节点,插入搜索图G和OPEN表 n对每个子节点ni,计算f(n,ni)=g(n,ni)+h(ni)n
43、适当的标记和修改指针(子节点父节点)n排序OPEN表(评价函数f(n)的值排序)2022-3-1693n扩展出n的子节点,插入搜索图G和OPEN表 n对每个子节点ni,计算f(n,ni)=g(n,ni)+h(ni)n适当的标记和修改指针(子节点父节点)n(i)全新节点:f(ni)=f(n,ni)n(ii)已出现在OPEN表中的节点n(iii)已出现的CLOSE表中的节点nIF f(ni)f(n,ni) THENn 修改指针指向新父结点nn f(ni)=f(n,ni)n排序OPEN表(f(n)值从小到大排序)2022-3-16942.若OPEN表是空表,则失败退出;算法算法A3.3.选择选择OP
44、ENOPEN表上的第一表上的第一个节点,把它从个节点,把它从OPENOPEN表表移出并放进移出并放进CLOSECLOSE表中,表中,称此节点为节点称此节点为节点n n; 1.建立一个只包含起始节只包含起始节点点S S的搜索图G,把S放到一个叫OPEN的未扩展节点表中;建立一个叫做CLOSE的已扩展节点表,其初始为空表;5.扩展节点n,同时生成不是n的祖先的那些子节点的集合M,把M的这些成员作为n的后继节点添入图G中;对于对于MM中每个中每个子节点子节点n ni i, ,计算计算f(n,f(n,n ni i) = ) = g(n,ng(n,ni i) + h(n) + h(ni i); );4.
45、若n为一目标节点,则有解成功退出,此解是追踪图G中沿着指针从n到S这条路径而得到的;2022-3-16956.6.对那些未曾在对那些未曾在G G中出现过的中出现过的MM成员(全新结点)设置一个成员(全新结点)设置一个通向通向n n的指针。把的指针。把MM的这些成的这些成员加进员加进OPENOPEN表。对已经在表。对已经在OPENOPEN表上的每一个表上的每一个MM成员,成员,比较子节点比较子节点n ni i经由新、老父节经由新、老父节点的评价函数值点的评价函数值f(n,nf(n,ni i) )、f(nf(ni i); );若若f(n,nf(n,ni i) f(n) =g*(n)nh(n)尽可能
46、靠近h*(n) A算法的关键。2022-3-16114n4)改进启发式函数八数码游戏nf(n)=d(n)+w(n),其中nw(n)-表示错位的棋牌个数,不够贴切,错误的扩展了节点d;np(n)-节点n与目标状态节点比较,错位棋牌在不受阻拦的情况下,移动到目标状态相应位置所需走步(移动次数)的总和;np(n)比w(n)更接近于h*(n)-p(n)不仅考虑了棋牌的错位因素,还考虑了错位的距离(移动距离)2022-3-161154)改进启发式函数八数码游戏nf(s)计算实例初始布局初始布局s目标布局目标布局ngw(s):错位的棋牌个数错位的棋牌个数d(s):当前节点深度当前节点深度 f(s)0 4
47、4 p(s):错位棋牌移动距离错位棋牌移动距离d(s):当前节点深度当前节点深度 f(s)0 5 5 1 1 1 2 2022-3-16116)5(586427301s初始化初始化OPEN:=s5 CLOSE:= 2022-3-16117)5(586427301s)7(586427031a)5(586407321b)7(586427310c循环循环1CLOSE:=s5 OPEN:=a b c OPEN:=a7 b5 c7 OPEN:=b5 a7 c7 2022-3-16118)5(586427301s)7(586427031a)5(586407321b)7(586427310c)5(50648
48、7321e)7(586470321d)7(586047321i循环循环2CLOSE:=s5 b5 OPEN:=a7 c7 d e i OPEN:=a7 c7 d7 e5 i7 OPEN:=e5 a7 c7 d7 i7 2022-3-16119)4(586427301s循环循环3)7(586427031a)5(586407321b)7(586427310c)5(506487321e)7(586470321d)7(586047321i)5(560487321l)7(056487321mCLOSE:=s5 b5 e5 OPEN:=a7 c7 d7 i7 l m OPEN:=a7 c7 d7 i7 l
49、5 m7 OPEN:=l5 a7 c7 d7 i7 m7 2022-3-16120)5(567480321nCLOSE:=s5,b5,e5,l5 循环循环4)4(586427301s)7(586427031a)5(586407321b)7(586427310c)5(506487321e)7(586470321d)7(586047321i)5(560487321l)7(056487321mOPEN:=a7 c7 d7 i7 m7 n OPEN:=a7 c7 d7 i7 m7 n5 OPEN:=n5 a7 c7 d7 i7 m7 2022-3-16121)5(567480321nCLOSE:=s5
50、,b5,e5,l5,n5 循环循环5)4(586427301s)7(586427031a)5(586407321b)7(586427310c)5(506487321e)7(586470321d)7(586047321i)5(560487321l)7(056487321mOPEN:=a7 c7 d7 i7 m7 o g )7(567481320o)5(567408321gOPEN:=a7 c7 d7 i7 m7 o7 g5 OPEN:=g5 a7 c7 d7 i7 m7 o7 2022-3-16122循环循环6成功结束成功结束)5(567480321n)4(586427301s)7(586427
51、031a)5(586407321b)7(586427310c)5(506487321e)7(586470321d)7(586047321i)5(560487321l)7(056487321m)7(567481320o)5(567408321g最理想搜索图最理想搜索图G2022-3-16123)6(586471320j)8(580476321k避免了错误选择避免了错误选择)5(567480321n)4(586427301s)7(586427031a)5(586407321b)7(586427310c)5(506487321e)7(586470321d)7(586047321i)5(5604873
52、21l)7(056487321m)7(567481320o)5(567408321g2022-3-16124n5) A*算法定义:n1、在A算法中,规定h(n)h*(n);n2、经如此限制以后的A算法就是A*算法。nA*算法是可采纳的,即总能搜索到最短解答路径n【回顾:八数码游戏的h(n)】nw(n)-错位的棋牌个数np(n)-错位棋牌在不受阻拦的情况下,移动到目标状态相应位置所需走步(移动次数)的总和;2022-3-16125n5) A*算法定义:n1、在A算法中,规定h(n)h*(n);n2、经如此限制以后的A算法就是A*算法。nA*算法是可采纳的,即总能搜索到最短解答路径n证明:n1)如
53、果存在一条从初始状态到目标状态的解答路径,则一定存在一条最短解答通路;n2)设状态n是最短解答路径上的一个状态,那么经过有限步后,n必然会成为OPEN表的第一个节点;n3)因为最短解答路径只有有限个节点n,所以有限步后算法必然因到达目标状态ng。这就是最优解。n证明完毕。2022-3-16126n5)满足可采纳性条件的算法A*算法n证明:n2)设状态n是最短解答路径上的一个状态,那么经过有限步后,n必然会成为OPEN表的第一个节点;nf(n)=g(n)+h(n)n根据假设,n在最短解答路径上n 经过有限步骤后,g(n)= g*(n)nf(n)=g*(n)+h(n)n h(n)h*(n)nf(n
54、)=g*(n)+h(n) g*(n)+h*(n)=f*(n)n f*(n)= f*(ng)n f(n) f*(ng)2022-3-16127n5)满足可采纳性条件的算法A*算法n证明:n2)设状态n是最短解答路径上的一个状态,那么经过有限步后,n必然会成为OPEN表的第一个节点;n设OPEN表中n之前的节点只有有限个,设为N个,其中估计值最小者为a1,并称之为第一代节点;由第一代节点生成的节点称为第二代节点,其中估计值最小者为a2;na2a1+e(其中,e0,表示每扩展一次起码的代价)n扩展j代后, aj a1+(j-1)en当j足够大时一定有aj f*(ng)nf(n) f*(ng)且OPE
55、N表中n之前的节点经过j次扩展后的最小估计值aj f*(ng) f(n) n经过有限步后,n必然会成为OPEN表的第一个节点2022-3-161282.启发式函数的强弱及其影响nh(n)接近h*(n)的程度衡量启发式函数的强弱nh(n)h*(n),h(n)过强,A算法失去可采纳性,不能确保找到最短解答路径;nh(n)=h*(n)是最理想的, OPEN表中节点排序没有误差,可以确保产生最小的搜索图,搜索到最短解答路径;n无法设计nA*算法搜索问题解答的关键nh(n)在满足h(n) h*(n)的条件下,越大越好!2022-3-161292.启发式函数的强弱及其影响n定理:解决同一问题的两个A*算法
56、A1和A2,n若h1(n) h2(n) h*(n)且g1(n)=g2(n)n则t(A1) t(A2)n其中,h1、h2分别是算法A1、A2的启发式函数,t指示相应算法到达目标状态时搜索图含的节点总数。n【证明: 人工智能 上册陆汝钤 P250)】n八数码游戏:w(n)p(n) h*(n)np(n)扩展出的节点总数t(w(n)2022-3-16130 n由于A*算法把所有生成的节点保存在内存中,所以A*算法在耗尽计算时间之前一般早已经把空间耗尽了。n目前开发了一些新的算法,它们的目的是为了克服空间问题。n但一般不满足最优性或完备性,如迭代加深A*算法IDA*、简化内存受限A*算法SMA*等。n下
57、面简单介绍IDA*算法。 2022-3-16131n迭代加深搜索算法,它以深度优先的方式在有限制的深度内搜索目标节点。n在每个深度上,该算法在每个深度上检查目标节点是否出现,如果出现则停止,否则深度加1继续搜索。n而A*算法是选择具有最小估价函数值的节点扩展。2022-3-16132n迭代加深A* 搜索算法IDA*是上述两种算法的结合。n这里启发式函数用做深度的限制,而不是选择扩展节点的排序。2022-3-16133迭代加深迭代加深A*算法算法Procedure IDA*算法算法Begin (1) 初始化当前的深度限制初始化当前的深度限制c=1 (2) 把初始节点压入栈把初始节点压入栈; 并假
58、定并假定 (3) While 栈不空桥栈不空桥do Begin 弹出栈顶元素弹出栈顶元素n If n=goal, Then 结束结束, 返回返回n以及从初始节点到以及从初始节点到n的路径的路径 Else do Begin For n 的每个子节点的每个子节点 If , Then 把把 压入栈压入栈 Else End for End End While (4) If 栈为空并且栈为空并且 , Then 停止并退出停止并退出 (5) If 栈为空并且栈为空并且 , Then , 并返回并返回2 End cncnf)(n)(,min(nfcc c ccc2022-3-16134nIDAIDA* *算
59、法和算法和A A* *算法相比,主要优点是对于内存算法相比,主要优点是对于内存的需求。的需求。A A* *算法需要指数级数量的存储空间,算法需要指数级数量的存储空间,因为没有深度方面的限制。而因为没有深度方面的限制。而IDAIDA* *算法只有当算法只有当节点节点n n的所有子节点的所有子节点 的的 小于限制值小于限制值c c时才时才扩展它扩展它, ,这样就可以节省大量的内存。这样就可以节省大量的内存。n另一问题是当启发式函数是最优的时候,另一问题是当启发式函数是最优的时候,IDAIDA* *算法和算法和A A* *算法扩展相同的节点,并且可以找到算法扩展相同的节点,并且可以找到最优路径。最优
60、路径。n)(nf2022-3-16135n启发式知识指导OPEN表排序的一般图搜索:n全局排序对OPEN表中的所有节点排序,使最有希望的节点排在表首。nA算法, A*算法n局部排序仅对新扩展出来的子节点排序,使这些新节点中最有希望者能优先取出考察和扩展;n爬山法(对深度优先法的改进);2022-3-16136 简单的搜索策略: g(n)0, f(n)= h(n), 局部排序只排序新扩展出来的子节点,即局部排序 简单易行,适用于不要求最优解答的问题求解任务。 1)爬山法实现启发式搜索的最简单方法。 类似于人爬山只要好爬,总是选取最陡处,以求快速登顶。 求函数极大值问题非数值解法,依赖于启发式知识
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 井维修合同标准文本
- 出差工作合同标准文本
- 农村安装路灯用工合同标准文本
- 2025职工劳动合同期满评审表
- 保理抵押合同样本
- 水资源保护与生态恢复的协同发展计划
- 职场压力管理的技巧计划
- 中标合同样本字体格式
- 2025环境影响评价技术咨询合同
- 共同创业股东合同样本
- 通信工程建设标准强制性条文汇编(2023版)-定额质监中心
- 人教版 七下 数学《相交线与平行线》期末复习导航
- 大学生职业生涯规划成品
- 2024年全国半导体行业职业技能竞赛(半导体分立器件和集成电路装调工赛项)理论考试题库(含答案)
- 铝合金模板细部节点深化设计指导图册(三维图)
- 信用卡协商还款协议书模板
- GB 20997-2024轻型商用车辆燃料消耗量限值及评价指标
- 福建省福清市2023-2024学年高一下学期期中考试数学试题(原卷版)
- 2023六年级英语下册 Fun Time(Recycle)教案 人教精通版(三起)
- 我是记忆小达人(课件)-心理健康六年级
- 应急预案编制计划再改样本
评论
0/150
提交评论