图搜索与问题求解课件_第1页
图搜索与问题求解课件_第2页
图搜索与问题求解课件_第3页
图搜索与问题求解课件_第4页
图搜索与问题求解课件_第5页
已阅读5页,还剩171页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 图搜索与问题求解7/31/20221人工智能推理与搜索图搜索技术是人工智能的核心技术之一。任一搜索过程也都是一个推理过程。隐式图的搜索过程是一种利用局部性知识构造全局性答案的过程。在各种搜索过程中,人工智能最感兴趣的是那些具有很强选择性的启发式方法,即那些利用很局部的状态空间可以有效地找到问题的解的方法。机器学习等很多过程都是在假设空间中搜索目标的过程。7/31/20222人工智能第3章 图搜索与问题求解3.1 状态图知识表示(状态图搜索问题求解)3.2 状态图搜索3.3 与或图知识表示(与或图搜索问题求解 )3.4 与或图搜索3.5 博弈树搜索7/31/20223人工智能3.1 状态

2、图知识表示3.1.1 状态、操作和状态空间3.1.2 修道士和野人的状态空间3.1.3 梵塔问题的状态空间3.1.4 问题求解的基本框架3.1.5 重排九宫问题和隐式图7/31/20224人工智能3.1.1状态、操作和状态空间(1)例3.1走迷宫7/31/20225人工智能3.1.1 状态、操作和状态空间(2)例3.2八数码问题 2831476512384765初始棋局目标棋局以上两个问题抽象来看,都是某个有向图中寻找目标或路径的问题,在人工智能技术中,把这种描述问题的有向图称为状态空间图,简称状态图。7/31/20226人工智能3.1.1 状态、操作和状态空间(3)状态 (State)为了描

3、述某一类事物中各个不同事物之间的差异而引入的最少的一组变量q的有序组合。表示成矢量形式:状态在状态图中表示为节点。7/31/20227人工智能3.1.1 状态、操作和状态空间(4)状态转换规则(操作 operator)引起状态中某些分量发生改变,从而使一个具体状态变化到另一个具体状态的作用。它可以是一个机械性的步骤、过程、规则或算子。操作描述了状态之间的关系。状态转换规则在状态图中表示为边。在程序中状态转换规则可用数据对、条件语句、规则、函数、过程等表示。7/31/20228人工智能3.1.1 状态、操作和状态空间(5)状态空间(State Space)问题的状态空间是一个表示该问题全部的可能

4、状态及相互关系的图。一般用赋值有向图表示,包含S:问题的可能有的初始状态的集合;F:操作的集合;G:目标状态的集合。状态空间常记为三元序列7/31/20229人工智能3.1.1 状态、操作和状态空间(6)状态空间中问题求解在状态空间表示法中,问题求解过程转化为在图中寻找从初始状态Qs出发到达目标状态Qg的路径问题,也就是寻找操作序列的问题。状态空间的解为三元组Qs :某个初始状态Qg :某个目标状态a:把变换成的有限的操作序列状态转换图S1S3S2O1O2O3O4QsQgOn7/31/202210人工智能3.1.1 状态、操作和状态空间(7)例 3.7 迷宫问题的状态图表示。 S:SoF:(S

5、o, S4), (S4, So), (S4, S1), (S1, S4), (S1,S2), (S2, S1), (S2, S3), (S3, S2), (S4, S7), (S7, S4), (S4, S5), (S5, S4), (S5, S6), (S6, S5), (S5, S8), (S8, S5), (S8, S9), (S9, S8), (S9, Sg)G:Sg 迷宫问题规则集描述了图中所有节点和边。类似于这样罗列出全部节点和边的状态图称为显式状态图,或者说状态图的显式表示。7/31/202211人工智能3.1.1 状态、操作和状态空间(8)补充例1 三枚钱币,能否从下面状态翻动

6、三次后出现全正或全反状态。反正反正正正反反反初始状态s目标状态集合0, 77/31/202212人工智能3.1.1 状态、操作和状态空间(9)引入一个三元组(q0,q1,q2)来描述总状态,钱币正面为0,反面为1,全部可能的状态为: 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)。翻动钱币的操作抽象为改变上述状态的算子, 即Fa, b, c a:把钱币q0翻转一次 b:把钱币q1翻转一次 c:把钱币q2翻转一次 问题的状态空间为7/31/202213人

7、工智能3.1.1 状态、操作和状态空间(10)状态空间图(0,0,0)(1,0,1)(0,0,1)(0,1,0)(1,1,0)(1,0,0)(0,1,0)(1,1,1)acabacabcbbc7/31/202214人工智能3.1.2 修道士和野人问题的状态空间(1)补充例2 修道士和野人问题。在河的左岸有三个修道士、三个野人河一条船,修道士们想用这条船将所有的人都运过河去,但受到以下条件的限制: (1)修道士和野人都会划船,但船一次最多只能运两个人; (2)在任何岸边野人数目都不得超过修道士,否则修道士就会被野人吃掉。 假定野人会服从任何一种过河安排,试规划出一种确保修道士安全过河方案。7/3

8、1/202215人工智能3.1.2 修道士和野人问题的状态空间(2)解:先建立问题的状态空间。问题的状态可以用一个三元数组来描述: S(m, c, b) m:左岸的修道士数 c:左岸的野人数 b:左岸的船数 右岸的状态不必标出,因为: 右岸的修道士数m3m 右岸的野人数c3c 右岸的船数b=1-b7/31/202216人工智能3.1.2 修道士和野人问题的状态空间(3)状态m, c, b状态m, c, b状态m, c, b状态m, c, bS03 3 1S81 3 1S163 3 0S241 3 0S13 2 1S91 2 1S173 2 0S251 2 0S23 1 1S101 1 1S18

9、3 1 0S261 1 0S33 0 1S111 0 1S193 0 0S271 0 0S42 3 1S120 3 1S202 3 0S28 0 3 0S52 2 1S130 2 1S212 2 0S290 2 0S62 1 1S140 1 1S222 1 0S300 1 0S72 0 1S150 0 1S232 0 0S310 0 07/31/202217人工智能3.1.2 修道士和野人问题的状态空间(4)操作集Fp01, p10,p11,p02,p20,q01,q10,q11, q02,q20q20b=0, (m=0,c=2)或(m=1,c=1)b=1, m=m+2q02b=0, m=0或

10、3, c2b=1, c=c+2q11b=0, m=c, c2b=1, m=m+1, c=c+1q10b=0, (m=0,c=1)或(m=2,c=2)b=1, m=m+1q01b=0, m=0或3, c2b=1, c=c+1p20b=1, (m=3,c=1)或(m=2,c=2)b=0, m=m-2p02b=1, m=0或3, c2b=0, c=c-2p11b=1, m=c, c1b=0, m=m-1, c=c-1p10b=1, (m=3,c=2)或(m=1,c=1)b=0, m=m-1p01b=1, m=0或3, c1b=0, c=c-1操作符条 件动 作7/31/202218人工智能3.1.2

11、 修道士和野人问题的状态空间(5)S0(3,3,1)S18(3,1,0)p02q02S17(3,2,0)p01q01S21(2,2,0)p11q11S1(3,2,1)q01p01p10q10S19(3,0,0)q02p02S2(3,1,1)q01p01S26(1,1,0)q20p20S0(0,0,0)q11p11S14(0,1,1)p01q01p02q02S10(1,1,1)p10q10S13(0,2,1)q01p01S30(0,1,0)p02q02S12(0,3,1)p01q01S29(0,2,0)p20q20S5(2,2,1)q11p117/31/202219人工智能3.1.3 梵塔问题的

12、状态空间(1) 例3.9 二阶梵塔问题 一号杆有A、B两个金盘,A小于B。要求将AB移至三号杆,每次只可移动一个盘子,任何时刻B不能在A上。 用二元组(SA,SB)表示状态,SA表示A所在杆号,SB表示B所在杆号,全部状态如下: (1,1),(1,2),(1,3) (2,1),(2,2),(2,3) (3,1),(3,2),(3,3)7/31/202220人工智能3.1.3 梵塔问题的状态空间(2)AB123S0:(1,1)123S1:(1,2)123S2:(1,3)AA123S5:(2,3)123S4:(2,2)123S3:(2,1)123S8:(3,3)123S7:(3,2)123S6:(

13、3,1)AAAAABABBBBB7/31/202221人工智能3.1.3 梵塔问题的状态空间(3)转换规则:A(I,j)表示金盘A从第I号杆移到j号杆 B(I,j)表示金盘B从第I号杆移到j号杆 A(1,2),A(1,3), A(2,1) A(2,3),A(3,1), A(3,2) B(1,2),B(1,3), B(2,1) B(2,3),B(3,1), B(3,2)初始状态(1,1),目标状态(3,3)梵塔问题用状态图表示为: 7/31/202222人工智能3.1.3 梵塔问题的状态空间(4)1,12,13,12,33,31,33,21,22,2A(1,3)A(2,1)B(3,1)A(3,2

14、)A(1,3)B(1,3)A(2,1)B(1,2)A(3,2)7/31/202223人工智能n(n3)阶梵塔问题假设金片Pk从小片到大片按下标k顺序编号,即k=1,2,3,n,n阶梵塔问题状态空间可用矢量表示为: (P1, P2, P3, Pk, Pn) Pk表示第k个金片穿在编号为Pk的宝石针上, Pk=1,2,3初始状态 S0=(1,1,1,1,1)目标状态 Sg1 =(2,2,2,2,2) Sg2 =(3,3,3,3,3)7/31/202224人工智能n(n3)阶梵塔问题n阶梵塔问题的操作集合表示为: F=Rk(i,j) | i,j=1,2,3,k=1,2,n全部可能状态数为3n个,最佳

15、解长度为2n-1。三阶梵塔问题状态图S0=(1,1,1)Sg2=(3,3,3)Sg1=(2,2,2)7/31/202225人工智能3.1.4 问题求解的基本框架(1)问题求解所需要的知识与描述问题的状态有关的各种叙述性知识。描述状态之间的变换关系的各种过程性知识。一般以一组操作的形式出现的。任何一个操作都含有条件和动作两部分,条件给定了操作的适用范围,动作描述了由于操作而引起的状态中某些分量的变化情形。描述如何根据当前状态和目标状态选择合适的操作的控制性知识。根据叙述性和过程性知识可以构造问题的状态空间。一般讲状态空间是一个赋值有向图,节点对应着问题的状态,边对应操作。7/31/202226人

16、工智能3.1.4 问题求解的基本框架(2)问题求解就是在图中寻找一条从初始节点到达目标节点的通路或操作序列。首先从操作集中选择可作用在当前状态上的操作;如果符合条件的操作有许多个,则要从挑选出最有希望导致目标状态的操作施加到当前状态上,以便克服组合爆炸;如果解的长度很大,还需要更为复杂的克服组合爆炸的技术。7/31/202227人工智能3.1.5 重排九宫问题和隐式图(1)显式图 全部结构都可以在一张纸上或贮存在一台计算机上。隐式图 利用有关状态描述和状态转换的知识定义的状态空间图。如何隐式的描述一个状态空间有描述问题状态的有关知识,包括该问题的各状态分量的取值情况,开始条件、结束条件、各种约

17、束条件等等。需要由任何一个状态生成其所有直接后继节点的的有关知识。7/31/202228人工智能3.1.5 重排九宫问题和隐式图(2)例3.8重排九宫问题(八数码难题)X1X2X3X8X0X4X7X6X5将棋局用向量A(X0,X1 , X2 , X3 , X4 , X5 , X6 , X7 , X8)表示,其中Xi为变量,值表示方格Xi内的数字。 初始状态 S0 (0,2,8,3,4,5,6,7,1) 目标状态 Sg (0,1 ,2,3,4,5,6,7,8)数码的移动规则就是该问题的状态变化规则。经分析,该问题共有24条规则,分为9组。2831476512384765初始棋局目标棋局7/31/

18、202229人工智能3.1.5 重排九宫问题和隐式图(3)0组规则 r1(X0=0 ) (X2=n ) X0 = n X2 =0; r2(X0=0 ) (X4=n ) X0 = n X4 =0; r3(X0=0 ) (X6=n ) X0 = n X6 =0; r4(X0=0 ) (X8=n ) X0 = n X8 =0;1组规则 r5(X1=0 ) (X2=n ) X1 = n X2 =0; r6(X1=0 ) (X8=n ) X1 = n X8 =0;8组规则: r22(X8=0 ) (X1=n ) X8 = n X1 =0; r23(X8=0 ) (X0=n ) X8 = n X0=0;

19、r24(X8=0 ) (X7=n ) X8 = n X7 =0;7/31/202230人工智能3.1.5 重排九宫问题和隐式图(4)八数码的状态图可表示为 (S0, r1 , r2 , , r24 , Sg) 八数码问题状态图仅给出了初始节点和目标节点,其余节点需用状态转换规则来产生。类似于这样表示的状态图称为隐式状态图,或者说状态图的隐式表示。7/31/202231人工智能3.1.5 重排九宫问题和隐式图(5)例3.10 旅行商问题(TravelingSalesmanProblem,简称TSP)。设有n个互相可直达的城市,某推销商准备从其中的A城出发,周游各城市一遍,最后又回到A城。要求为该

20、推销商规划一条最短的旅行路线。 该问题的状态为以A打头的已访问过的城市序列:A S0:A。 Sg:A,A。其中“”为其余n-1个城市的一个序列。状态转换规则: 规则1 如果当前城市的下一个城市还未去过,则去该城市,并把该城市名排在已去过的城市名序列后端。 规则2 如果所有城市都去过一次,则从当前城市返回A城,把A也添在去过的城市名序列后端。7/31/202232人工智能3.2 状态图搜索3.2.1状态图搜索3.2.2穷举式搜索3.2.3启发式搜索3.2.4加权状态图搜索3.2.5启发式图搜索的A算法和A*算法3.2.6状态图搜索策略小结7/31/202233人工智能3.2.1 状态图搜索(1)

21、搜索:从初始节点出发,沿着与之相连的边试探地前进,寻找目标节点的过程。搜索过程中经过的节点和边,按原图的连接关系,便会构成一个树型的有向图,这种树型有向图称为搜索树。搜索进行中,搜索树会不断增长,直到当搜索树中出现目标节点,搜索便停止。这时从搜索树中就可很容易地找出从初始节点到目标节点的路径(解)来。 7/31/202234人工智能3.2.1 状态图搜索(2)1 搜索方式树式搜索 在搜索过程中记录所经过的所有节点和边。树式搜索所记录得轨迹始终是一棵树,这棵树也就是搜索过程中所产生得搜索树。线式搜索 在搜索过程中只记录那些当前认为在所找路径上的节点和边。不回溯线式搜索可回溯线式搜索 7/31/2

22、02235人工智能3.2.1 状态图搜索(3)2 搜索策略盲目搜索 无向导的搜索,树式盲目搜索就是穷举搜索,不回溯的线式搜索是随机碰撞式搜索,回溯的线式搜索也是穷举式搜索。启发式搜索 是利用“启发性信息”引导的搜索策略。“启发性信息”就是与问题有关的有利于尽快找到问题解的信息或知识。启发式搜索分为不同的策略,如全局择优,局部择优,最佳图搜索。按扩展顺序不同分为广度优先和深度优先。7/31/202236人工智能3.2.1 状态图搜索(4)3 搜索算法搜索的目的是为了寻找初始节点到目标节点的路径,搜索过程中就得随时记录搜索轨迹。ClOSED表动态数据结构来记录考察过的节点。OPEN表的动态数据结构

23、来专门登记当前待考查的节点。节点父节点编号编号节点父节点编号OPEN表CLOSED表7/31/202237人工智能3.2.1 状态图搜索(5)树式搜索算法 步1 把初始节点S0放入OPEN表中。 步2 若OPEN表为空,则搜索失败,退出。 步3 取OPEN表中第一个节点N放在CLOSED表中;并冠以顺序编号n; 步4 若目标节点Sg=N,成功退出。 步5 若N不可扩展,转步2。 步6 扩展N,生成一组节点,对这组子节点作如下处理:7/31/202238人工智能3.2.1 状态图搜索(6)(1)删除N的先辈节点(如果有的话)。(2)对于已存在于OPEN表中的节点(如果有的话)也删除之; 删除之前

24、要比较其返回初始节点的新路径与原路径,如果新 路径“短”,则修改这些节点在OPEN表中的原返回指针,使 其沿新路径返回。(3)对已存在于CLOSED表的节点,作与(2)同样的处理,并 且将其移出CLOSED表,放入OPEN表中重新扩展。(4)对其余子节点配上指向N的返回指针后放入OPEN表中某处, 或对OPEN表进行重新排序,转步2。7/31/202239人工智能3.2.1 状态图搜索(7)树式算法的几点说明返回指针指的是父节点在CLOSED表中的编号。步6中修改指针的原因是返回初始节点的路径有两条,要选择“短”的那条路径。这里路径长短以节点数来衡量,在后面将会看到以代价来衡量。按代价衡量修改

25、返回指针的同时还要修改相应的代价值。7/31/202240人工智能3.2.1 状态图搜索(8)图 3-5 修改返回指针示例 7/31/202241人工智能3.2.1 状态图搜索(9)树式搜索例对于已存在于OPEN表中的节点(如果有的话)也删除之;删除之前要比较其返回初始节点的新路径与原路径,如果新路径短,则修改这些节点在OPEN表中的原返回指针,使其沿原路径返回。Path1Path2S0mnP先扩展后扩展P在n之前已是某一节点m的后继如图所示:说明从S0P至少有两条路,这时有两种情况:f(Path2) f(Path1),当前路径较好,要修改P的指针,使其指向n,即搜索之后的最佳路径。否则,原路

26、径好。7/31/202242人工智能3.2.1 状态图搜索(10)对已存在于CLOSED表的节点,作与(2)同样的处理,并将其移出CLOSED表,放入OPEN表中重新扩展。S0过去生成P的路径现在生成P的路径过去对Ps的最优路径PsPmnka.P在n之前已是某一节点m的后继,所以需要做如同(2)同样的处理,如图右部所示。b.P在Closed表中,说明P的后继也在n之前已经生成,称为Ps。对Ps而言同样可能 由于nP这一路径的加入,又必须比较多条路径之后而取代价小的一条,如图左部所示。7/31/202243人工智能3.2.1 状态图搜索(11)例:设当前搜索图和搜索树如图所示S0nPmPsPsS

27、0nPmPsPsFF7/31/202244人工智能3.2.1 状态图搜索(12)若启发函数f(n)为从S0到节点n的最短路径的长度,用边的数目来考察,当前扩展的节点是搜索图中的n,P是n的后继S0nPmPsPsnPPsPsS0mFF7/31/202245人工智能3.2.1 状态图搜索(13)P的指针改变后,修改搜索树结果如下:nPPsS0FmPs7/31/202246人工智能3.2.1 状态图搜索(14)不回溯线式搜索算法 步1 把初始节点S0放入CLOSED表中; 步2 令N S0 ; 步3 若N是目标节点,则搜索成功,结束。 步4 若N不可扩展,则搜索失败,退出。 步5 扩展N,选取其一个

28、未在CLOSED表中出现过的 子节点N1放入 CLOSED表中,令NN1,转步3。7/31/202247人工智能3.2.1 状态图搜索(15)可回溯的线式搜索步1 把初始节点S0放入CLOSED表中;步2 令N S0 ;步3 若N是目标节点,则搜索成功,结束。步4 若N不可扩展,则移出CLOSED表中的末端节点Ne ,若NeS0, 则搜索失败,退出。否则以CLOSED表新的末端节点Ne作为 N,即令N Ne,转步4;步5 扩展N,选取其一个未在CLOSED表中出现过的子节点N1放入 CLOSED表中,令N N1 ,转步3。7/31/202248人工智能3.2.2 穷举式搜索(1)广度优先搜索(

29、算法Aed)策略 始终在同一级节点中考查,当同一级节点考查完了之后,才 考查下一级节点。搜索树自顶向下一层一层逐渐生成。算法 步1 把初始节点S0放入OPEN表中; 步2 若OPEN表为空,则搜索失败,退出。 步3 取OPEN表中第一个节点N放 在CLOSED表中;并冠以顺序编号n; 步4 若节点N为目标节点,成功退出。 步5 若N不可扩展,转步2; 步6 扩展N,将其所有子节点配上指向N的指针放入OPEN尾部,转步2。7/31/202249人工智能3.2.2 穷举式搜索(2)7/31/202250人工智能3.2.2 穷举式搜索(3)广度优先搜索的特点广度优先中OPEN表是一个队列,CLOSE

30、D表是一个顺序表,表中各节点按顺序编号,正被考察的节点在表中编号最大。广度优先搜索又称为宽度优先或横向搜索。广度优先策略是完备的,即如果问题的解存在,则它一定可以找到解,并且找到的解还是最优解。广度优先搜索策略与问题无关,具有通用性。缺点搜索效率低。7/31/202251人工智能3.2.2 穷举式搜索(4)八数码问题2 8 31 47 6 5初始状态8 1 32 47 6 5目标状态7/31/202252人工智能3.2.2 穷举式搜索(5)2 8 31 47 6 51 2 3 1 8 47 6 592 31 8 47 6 582 81 4 37 6 5102 8 37 1 4 6 57 8 3

31、2 1 47 6 562 8 31 4 57 6112 8 3 1 47 6 522 31 8 47 6 532 8 31 47 6 542 8 31 6 4 7 5122 8 31 6 47 5138 32 1 47 6 5142 8 37 1 46 5152 3 41 87 6 5161 2 3 8 47 6 5172 81 4 37 6 5182 8 31 4 57 6192 8 3 6 41 7 5202 8 31 6 7 5 4218 32 1 47 6 5222 8 31 6 47 558 1 32 47 6 523八数码广度优先搜索7/31/202253人工智能3.2.2 穷举式

32、搜索(6)深度优先搜索(过程Apd )搜索策略 在搜索树的每一层始终先扩展一个子节点,不断地向纵深前进,直到不能再前进,才从当前节点返回到上一级节点,从另一方向继续前进。算法 步1 把初始节点S0放入OPEN表中; 步2 若OPEN表为空,则搜索失败,退出。 步3 取OPEN表中第一个节点N放在CLOSED表中;并冠以编号n; 步4 节点N为目标节点,成功退出。 步5 若N不可扩展,转步2; 步6 扩展N,将其所有子节点配上指向N的指针放入OPEN首部,转 步2。7/31/202254人工智能3.2.2 穷举式搜索(7)7/31/202255人工智能3.2.2 穷举式搜索(8)深度优先搜索的特

33、点OPEN表为一个堆栈。深度优先又称纵向搜索。一般不能保证找到最优解。当深度限制不合理时,可能找不到解,可以将算法改为可变深度限制,即有界深度优先搜索。最坏情况时,搜索空间等同于穷举。7/31/202256人工智能3.2.2 穷举式搜索(9)2 31 8 47 6 52 8 31 47 6 52 8 3 1 47 6 52 8 31 6 47 52 8 31 47 6 512 8 31 6 47 532 8 31 6 7 5 442 8 31 6 47 522 8 31 6 7 5 42 81 6 37 5 45八数码深度优先搜索7/31/202257人工智能3.2.2 穷举式搜索(10)有界

34、深度优先搜索(过程Acd )搜索策略 给出搜索树深度的限制,当从初始节点出发沿某一分支扩展到一定深度限制时,就不能再继续往下扩展,而只能改变方向继续搜索。算法 步1 把初始节点S0放入OPEN表中,置S0的深度d( S0 )0; 步2 若OPEN表为空,则搜索失败,退出。 步3 取OPEN表中第一个节点N放在CLOSED表中;并冠以编号n; 步4 若节点N为目标节点,成功退出。 步5 若N的深度d(N)dm(深度限制值),或者若N无子节点, 则转步2; 步6 扩展N,将其所有子节点Ni配上指向N的指针放入OPEN首部, 置的d( Ni )d(N)1,转步2。7/31/202258人工智能3.2

35、.2 穷举式搜索(11)a1a2a3a6b1b2b4b3b5S7/31/202259人工智能3.2.2 穷举式搜索(12)有界深度优先搜索存在的问题深度界限的选择很重要 dm 若太小,则达不到解的深度,得不到解;若太大,既浪费了计算机的存储空间与时间,又降低了搜索效率。由于解的路径长度事先难以预料,所以要恰当地给出dm的值是比较困难的。即使能求出解,它也不一定是最优解。7/31/202260人工智能3.2.2 穷举式搜索(13)有界深度优先搜索改进dm随搜索深度不断加大(迭代加深搜索) 先任意给定一个较小的数作为dm,然后进行上述的有界深 度优先搜索,当搜索达到了指定的深度界限dm仍未发现目标

36、节点,并且CLOSED表中仍有待扩展节点时就将这些节点送回OPEN表,同时增大深度界限dm,继续向下搜索。如此不断地增大dm,只要问题有解,就一定可以找到它。增加一个R表 此时找到的解不一定是最优解。为找到最优解,可增设一 个表(R),每找到一个目标节点Sg后,就把它放入到R的前,并令dm等于该目标节点所对应的路径长度,然后继续搜索。由于后求得的解的路径长度不会超过先求得的解的路径长度,所以最后求得的解一定是最优解。7/31/202261人工智能3.2.2 穷举式搜索(14)迭代加深搜索过程: 步1 把初始节点S0放入OPEN表中,置S0的深度d( S0 )0,dm为任意初值。 步2 若OPE

37、N表为空,则考查CLOSED表是否有待扩展节点: 若无,则问题无解,退出。 若有,则取出CLOSED表中待扩展节点放入到OPEN表中,令 dm=dm+d。 7/31/202262人工智能3.2.2 穷举式搜索(15) 步3 取OPEN表中第一个节点N放在CLOSED表中;并冠以编号n; 步4 若节点N为目标节点,成功退出。 步5 若N的深度d(N)dm(深度限制值),则标N为待扩展节点,则转步2; 步6 N无子节点,则转步2; 步7 扩展N,将其所有子节点Ni配上指向N的指针放入OPEN首部, 置 d( Ni )d(N)1,转步2。7/31/202263人工智能7/31/202264人工智能3

38、.2.3 启发式搜索(1)启发式搜索的目的利用知识来引导搜索,达到减少搜索范围,降低问题复杂度。启发性信息的强弱 强:降低搜索的工作量,但可能导致找不到最优解。 弱:一般导致工作量加大,极限情况下变为盲目搜索,但可能可以找到最优解。启发性信息的类型用于扩展节点的选择用于生成节点的选择用于删除节点的选择7/31/202265人工智能3.2.3 启发式搜索(2)启发函数启发函数是用来估计搜索树节点x与目标节点接近程度的一种函数,通常记为h(x)。定义启发函数的参考思路一个节点到目标节点的某种距离或差异的量度。一个节点处在最佳路径上的概率根据主观经验的主观打分等。启发式搜索算法启发式搜索要用启发函数

39、来导航,其搜索算法就要在状态图一般搜索算法基础上再增加启发函数值的计算与传播过程,并且由启发函数值来确定节点的扩展顺序。7/31/202266人工智能3.2.3 启发式搜索(3)全局择优搜索全局择优搜索就是利用启发函数制导的一种启发式搜索方法。该方法亦称为最好优先搜索法。基本思想:在OPEN表中保留所有已生成而未考察的节点,并用启发函数h(x)对它们全部进行估价,从中选出最优节点进行扩展,而不管这个节点出现在搜索树的什么地方。7/31/202267人工智能3.2.3 启发式搜索(4)全部择优搜索算法 步1 把初始节点S0放入OPEN表中,计算h( S0 ); 步2 若OPEN表为空,则搜索失败

40、,退出。 步3 移出OPEN表中第一个节点N放入CLOSED表中, 并冠以序号n; 步4 若目标节点Sg N,则搜索成功结束。 步5 若N不可扩展,则转步2。 步6 扩展N,计算每个子节点x的函数值h(x),并将所有子节点配以指向N的返回指针后放入OPEN表中,再对OPEN表中所有子节点按其函数值的大小以升序排列,转步2。7/31/202268人工智能3.2.3 启发式搜索(6)启发函数h(x)为节点x与目标格局相比数码不同的位置个数。从图看出解为: S0 ,S1 ,S2 ,S3, Sg。2 8 31 47 6 552 31 8 47 6 542 8 31 6 47 552 8 37 1 4

41、6 552 31 8 47 6 54 2 3 1 8 37 6 558 32 1 47 6 533 8 32 1 47 6 5S218 32 1 47 6 5S308 1 32 47 6 5Sg2 8 31 47 6 5S02 8 3 1 47 6 54S1Sg8 1 32 47 6 57/31/202269人工智能3.2.3 启发式搜索(7)局部择优搜索局部择优搜索是一种启发式搜索方法,是对深度优先搜索方法的一种改进。基本思想是当每一个节点被扩展后,按h(x)对每一个子节点计算启发值,并选择最小者作为下一个要考察的节点,由于每次都只是在子节点的范围内选择下一个要考察的节点,范围比较狭窄,所以

42、称为局部择优搜索。7/31/202270人工智能3.2.3 启发式搜索(8)局部择优搜索算法 步1 把初始节点S0放入OPEN表中,计算h( S0 ); 步2 若OPEN表为空,则搜索失败,退出。 步3 移出OPEN表中第一个节点N放入CLOSED表中, 并冠以序号n; 步4 若目标节点Sg N,则搜索成功结束。 步5 若N不可扩展,则转步2。 步6 扩展N,计算N每个子节点x的函数值h(x),并 将N的子节点按估计值升序排列放入OPEN表的首 部,为每个子节点配置指向节点N的指针,转步 2。7/31/202271人工智能3.2.4加权状态图搜索(1)例3.6 交通图A城是出发地,E是目的地,

43、数字表示两城之间交通费用。求A到E的最小费用的旅行路线。ADCEB4643327/31/202272人工智能3.2.4加权状态图搜索(2)加权状态图与代价树边上附有数值的状态图称为加权状态图或赋权状态图,这种数值称为权值。加权状态图的搜索加权状态图的搜索与权值有关,并且要用权值来导航。具体来讲,加权状态图的搜索算法,要在一般状态图搜索算法基础上再增加权值的计算与传播过程,并且要由权值来确定节点的扩展顺序。代价的计算 g(x)表示从初始节点S0到节点x的代价。 c(xi,xj)表示父节点xi到子节点xj的代价 g( xj )g( xi ) c(xi,xj) g( x0 )07/31/202273

44、人工智能3.2.4加权状态图搜索(3)加权状态图转换为代价树搜索从初始节点出发,先把每一个与初始节点相邻的节点作为该节点的子节点。然后对其他节点依次类推,但对其他节点x,不能将其父节点及祖先再作为x的子节点。ADCEB464332323462344632C1B1D1D2E1C2E2D3C3B2E4E26B37/31/202274人工智能3.2.4加权状态图搜索(4)分支界限法( A*eg )其基本思想是:每次从OPEN表中选出g(x)值最小的节点进行考察,而不管这个节点在搜索树的什么位置上。与全局择优法的区别选取扩展节点标准计算方法分支界限法代价值g(x)g(x)与节点所处的位置有关,与边也有

45、关系,从初始节点S0计算而来。全局择优法启发函数值h(x)h(x)与节点有关,与边可能有关或无关,从目标节点方向计算而来。7/31/202275人工智能3.2.4加权状态图搜索(5)分支界限搜索算法步1 把初始节点S0放入OPEN表中,计算g( S0 );步2 若OPEN表为空,则搜索失败,退出。步3 移出OPEN表中第一个节点N放入CLOSED表中, 并冠以序号n;步4 若目标节点Sg N,则搜索成功结束。步5 若N不可扩展,则转步2。步6 扩展N,并将所有子节点配以指向N的返回指针后放 OPEN表中;计算每个子节点x的函数值g(x), 再对OPEN表中所有子节点按g(x)值的大小以升 序排

46、列,转步2。7/31/202276人工智能3.2.4加权状态图搜索(6)最近择优法(瞎子爬山法)基本思想:每次仅考察N的子节点的g(x),选取N的子节点中代价最小的子节点进行扩展。最近择优法与局部择优法的区别:选取扩展节点标准计算方法最近择优法代价值g(x)g(x)与节点所处的位置有关,与边也有关系,从初始节点S0计算而来。局部择优法启发函数h(x)h(x)与节点有关,与边可能有关或无关,从目标节点方向计算而来。7/31/202277人工智能323462344632C1B1D1D2E1C2E2D3C3B2E4E26B3编号节点父节点A7/31/202278人工智能3.2.4加权状态图搜索(7)

47、代价树的有界深度优先法与直接树的有界深度优先相比,用gm来代替最大深度dm。7/31/202279人工智能3.2.4加权状态图搜索(8)代价树深度优先搜索搜索的解为A -C -D -E323462344632C1B1D1D2E1C2E3D3C3B2E4E26B37/31/202280人工智能3.2.5启发式图搜索的A算法和A*算法(1)估价函数 将启发函数与代价函数相结合,为了防止在单独利用启发函数的时候误入歧途。 f(x) g(x)h(x) h(x)启发函数,有利于搜索纵向发展,提高搜索效率,但影响完备性。 g(x)代价函数,有利于搜索横向发展,提高搜索的完备性,但影响搜索效率。 f(x)是

48、初始节点S0到达节点x处已付出的代价与节点x 到达目标节点Sg的接近程度估计值总和。是 g(x)与h(x)的折中。7/31/202281人工智能3.2.5启发式图搜索的A算法和A*算法(2)A算法 步1 把附有f(S0)的初始节点S0放入OPEN表中; 步2 若OPEN表为空,则搜索失败,退出。 步3 移出OPEN表中第一个节点N放入 CLOSED表中,并冠以顺序编号n; 步4 若目标节点SgN,则搜索成功,结 束。 步5 若N不可扩展,则转步2;7/31/202282人工智能3.2.5启发式图搜索的A算法和A*算法(3)步6 扩展N,生成一组附有f(x)的子节点,对这组节点作如下处理:(1)

49、考察是否有已在OPEN表或CLOSED表中存在的节点;若有则再考察其中有无N的先辈节点,若有则删除之;对于其余节点,也删除之,但由于它们被第二次生成,需考虑是否修改已经存在于OPEN表或CLOSED表中的这些节点及其后裔的返回指针和f(x)的值,修改原则是抄f(x)值小的路走”。(2)对其余子节点配上指向N的返回指针后放入OPEN表中,并对OPEN表按f(x)以升序排列,转步2。7/31/202283人工智能3.2.5启发式图搜索的A算法和A*算法(4)重排九宫问题的启发式搜索补充例1:把估计函数定义为 f(n)=h(n)=w(n) 其中w(n)代表n的格局域目标节点格局相比,位置不符的将牌数

50、目。 2 8 31 47 6 5S01 2 38 47 6 5Sg7/31/202284人工智能2 8 31 47 6 5s02 8 31 47 6 542 8 3 1 47 6 532 31 8 47 6 53 8 32 1 47 6 532 8 37 1 4 6 548 32 1 47 6 538 32 1 47 6 548 1 32 6 47 548 1 3 2 47 6 538 1 32 4 7 6 54 1 38 2 47 6 528 1 37 2 4 6 541 38 2 47 6 521 2 38 47 6 501 38 2 47 6 518 1 32 47 6 53重排九宫问题

51、的局部择优搜索2 8 31 6 47 541 2 38 47 6 5Sg7/31/202285人工智能2 8 31 47 6 51 2 3 1 8 47 6 592 31 8 47 6 582 81 4 37 6 5102 8 37 1 4 6 57 8 32 1 47 6 562 8 31 4 57 6112 8 3 1 47 6 522 31 8 47 6 532 8 31 47 6 542 8 31 6 4 7 5122 8 31 6 47 5138 32 1 47 6 5142 8 37 1 46 5152 3 41 87 6 5161 2 3 8 47 6 5172 81 4 37

52、6 5182 8 31 4 57 6192 8 3 6 41 7 5202 8 31 6 7 5 4218 32 1 47 6 5222 8 31 6 47 558 1 32 47 6 523和宽度优先搜索所得到的最优解相比,采用启发函数h(n)所获得的解并不是最优解,即采用这种方法得到了一个次高峰。7/31/202286人工智能3.2.5启发式图搜索的A算法和A*算法(5)补充例2:九宫重排问题把估计函数f(x)定义为f(n)d(n)w(n) 其中d(n)表示节点深度,w(n)意义与前同。用最好优先法。2 8 31 47 6 5S01 2 38 47 6 5Sg7/31/202287人工智能

53、2 8 31 47 6 53423652 8 3 1 47 6 542 38 1 47 6 542 8 31 47 6 552 8 31 6 47 55 8 32 1 47 6 552 8 37 1 4 6 56 2 31 8 47 6 545 31 8 47 6 561 2 3 8 47 6 541 2 38 47 6 561 2 38 47 6 541 2 38 47 6 5Sg1扩展顺序f(x)值7/31/202288人工智能3.2.5启发式图搜索的A算法和A*算法(6)分析 上述的解是一个最佳解,但是w(n)没有反映出从n节点变化到目标节点的难易程度。如 w(a)=7,w(b)=6,似

54、乎a格局离目标格局更远,其实不然,a格局需要8步就可以到达目标格局,而b格局需要11步才能到达目标格局,显然w(n)启发信息不够。8 1 26 37 5 4a1 2 38 47 6 5Sg2 8 14 6 37 5b7/31/202289人工智能3.2.5启发式图搜索的A算法和A*算法(7)对w(n)进行改进:一种改进是令h(n)=P(n),而p(n)是n格局中每个将牌离家(在sg中的位置)的最短距离 p(a)=8,p(b)=9 这种改进是对w(n)的启发信息有所增加,但仍未反映出两个将牌对换位置的难易程度。 8 1 26 37 5 4a1 2 38 47 6 5Sg2 8 14 6 37 5

55、b7/31/202290人工智能3.2.5启发式图搜索的A算法和A*算法(8)另一种改进 h(n)=p(n)+3s(n) s(n)是这样计算的:沿着周围那些非中心方格上依顺时针方向检查n格局上的每一个将牌,如果其后紧跟着的将牌正好是目标格局中该将牌的后续者,则该将牌得0分,否则得2分;在正中方格上有将牌得1分,否则得0分。 s(a)=6,s(b)=13,s(sg)=0, h(a)=8+3*6=26,h(b)=9+3*13=48,h(sg)=08 1 26 37 5 4a1 2 38 47 6 5Sg2 8 14 6 37 5b7/31/202291人工智能3.2.5启发式图搜索的A算法和A*算

56、法(9)补充例3:利用上面定义的h(x)解下列九宫重排问题。 1 2 38 47 6 5Sg2 1 64 87 5 3s07/31/202292人工智能2 1 64 87 5 3S01 2 38 47 6 5Sg2 1 6 4 87 5 3572 64 1 87 5 3592 1 64 8 7 5 3572 1 64 5 87 359 1 62 4 87 5 3592 1 67 4 8 5 3592 14 8 67 5 3572 1 64 8 37 5572 14 8 67 5 3582 1 64 8 37 557 2 14 8 67 5 3592 8 14 67 5 3582 1 64 8

57、3 7 5542 1 64 37 8 5622 8 1 4 67 5 3552 8 14 5 67 3572 8 14 67 5 3552 1 6 8 34 7 561 8 12 4 67 5 3572 8 17 4 6 5 3572 84 6 17 5 3572 8 14 6 37 5552 8 14 6 3 7 5572 8 14 37 6 5462 8 1 4 37 6 5432 14 8 37 6 5492 8 14 37 6 547 8 12 4 37 6 5452 8 17 4 3 6 5518 12 4 37 6 5458 12 4 37 6 5458 4 12 37 6 546

58、1234567891011121314151617182 8 14 6 37 5557/31/202293人工智能8 1 3 2 4 7 6 5278 32 1 4 7 6 5418 1 32 6 4 7 5478 1 32 4 7 6 5368 1 32 4 57 647 1 38 2 4 7 6 5278 1 37 2 4 6 5291 38 2 4 7 6 5271 2 38 4 7 6 5181 38 2 4 7 6 5298 12 4 37 6 5451819202223247/31/202294人工智能3.2.5启发式图搜索的A算法和A*算法(13)A*算法对A算法再限制其估价函数

59、中的启发函数h(x)满足:对所有的节点x均有: h(x)=h* (x) 其中h* (x)是从节点x到目标节点的最小 代价,这就称为A*算法。A*算法也称为最佳图搜索算法,利用A*算法,如果问题存在最优解,就保证能找到最优解。7/31/202295人工智能3.2.6状态图搜索策略小结(1)树式搜索 盲目搜索 穷举式 广度优先 深度优先 有界深度优先 启发式搜索 全局择优(最好优先,基于启发函数h(x) 局部择优(瞎子爬山,基于h(x) 分支界限(全局最小代价优先,基于代价g(x) 最近择优(瞎子爬山,局部最小代价优先,基于g(x)) A算法(基于估价函数f(x)g(x)h(x) A*算法(最佳图

60、搜索,h(x)(3,3,3)(1,1,1)=(1,1,3)(1,2,3)=(1,2,2)(3,2,2)=(3,2,1)(3,3,1)=(3,3,3)(1,1,3)=(1,2,3)(3,2,1)=(3,3,1)(1,1,1)=(1,2,2)(1,2,2)=(3,2,2)(3,2,2)=(3,3,3)三阶梵塔问题的与或树7/31/2022109人工智能3.3.2与或图知识表示(5)把本原问题的解按照从左至右的顺序排列,就得到了原始问题的解:(1,1,1)=(1,1,3)(1,1,3)=(1,2,3) (1,2,3)=(1,2,2) (1,2,2)=(3,2,2) (3,2,2)=(3,2,1) (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论