版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1l内容:状态空间的搜索问题。l搜索方式:盲目搜索启发式搜索l关键问题:如何利用知识,尽可能有效地找到问题的解(最佳解)。2S0Sg3l讨论的问题:有哪些常用的搜索算法。问题有解时能否找到解。找到的解是最佳的吗?什么情况下可以找到最佳解?求解的效率如何。4l例:皇后问题QQQQ5( )6( )Q(1,1)7( )QQ(1,1)(1,1) (2,3)8( )Q(1,1)(1,1) (2,3)9( )QQ(1,1)(1,1) (2,3)(1,1) (2,4)10( )QQ(1,1)(1,1) (2,3)(1,1) (2,4)Q(1,1) (2,4) (3.2)11( )QQ(1,1)(1,1) (
2、2,3)(1,1) (2,4)(1,1) (2,4) (3.2)12( )Q(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)13( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)14( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)Q(1,2)15( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)Q(1,2)Q(1,2) (2,4)16( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.
3、2)Q(1,2)Q(1,2) (2,4)Q(1,2) (2,4) (3,1)17( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)Q(1,2)Q(1,2) (2,4)Q(1,2) (2,4) (3,1)Q(1,2) (2,4) (3,1) (4,3)18当前状态目标状态g19BACKTRACK(DATA)DATA:当前状态。返回值:从当前状态到目标状态的路径(以规则表的形式表示)或FAIL。20递归过程BACKTRACK(DATA)1, IF TERM(DATA) RETURN NIL;2, IF DEADEND(DATA) RETURN FAIL;
4、3, RULES:=APPRULES(DATA);4, LOOP: IF NULL(RULES) RETURN FAIL;5, R:=FIRST(RULES);6,RULES:=TAIL(RULES);7,RDATA:=GEN(R, DATA);8,PATH:=BACKTRACK(RDATA);9,IF PATH=FAIL GO LOOP;10,RETURN CONS(R, PATH);21l解决办法:对搜索深度加以限制记录从初始状态到当前状态的路径当前状态l问题:深度问题死循环问题22BACKTRACK1(DATALIST)DATALIST:从初始到当前的状态表(逆向)返回值:从当前状态到目
5、标状态的路径(以规则表的形式表示)或FAIL。231, DATA:=FIRST(DATALIST)2, IF MENBER(DATA, TAIL(DATALIST) RETURN FAIL;3, IF TERM(DATA) RETURN NIL;4, IF DEADEND(DATA) RETURN FAIL;5, IF LENGTH(DATALIST)BOUND RETURN FAIL;6, RULES:=APPRULES(DATA);7, LOOP: IF NULL(RULES) RETURN FAIL;8,R:=FIRST(RULES);249,RULES:=TAIL(RULES);10,
6、RDATA:=GEN(R, DATA);11,RDATALIST:=CONS(RDATA, DATALIST);12,PATH:=BACKTRCK1(RDATALIST)13,IF PATH=FAIL GO LOOP;14,RETURN CONS(R, PATH);25l失败原因分析、多步回溯QQ26l回溯搜索中知识的利用基本思想(以皇后问题为例):尽可能选取划去对角线上位置数最少的。QQQQ3 2 2 327l问题的引出回溯搜索:只保留从初始状态到当前状态的一条路径。图搜索:保留所有已经搜索过的路径。28l节点深度:根节点深度=0其它节点深度=父节点深度+1012329l路径设一节点序列为(
7、n0, n1,nk),对于i=1,k,若节点ni-1具有一个后继节点ni,则该序列称为从n0到nk的路径。l路径的耗散值一条路径的耗散值等于连接这条路径各节点间所有耗散值的总和。用C(ni, nj)表示从ni到nj的路径的耗散值。30l扩展一个节点生成出该节点的所有后继节点,并给出它们之间的耗散值。这一过程称为“扩展一个节点”。311, G=G0 (G0=s), OPEN:=(s);2, CLOSED:=( );3, LOOP: IF OPEN=( ) THEN EXIT(FAIL);4, n:=FIRST(OPEN), REMOVE(n, OPEN),ADD(n, CLOSED);5, IF
8、 GOAL(n) THEN EXIT(SUCCESS);6, EXPAND(n)mi, G:=ADD(mi, G);327, 标记和修改指针:ADD(mj, OPEN), 并标记mj到n的指针;计算是否要修改mk、ml到n的指针;计算是否要修改ml到其后继节点的指针;8, 对OPEN中的节点按某种原则重新排序;9, GO LOOP;33.mjmkml34修改指针举例123456s35修改指针举例(续1)123456s36123456修改指针举例(续2)s37123456修改指针举例(续3)s38l深度优先搜索l宽度优先搜索391, G:=G0(G0=s), OPEN:=(s), CLOSED:
9、=( );2, LOOP: IF OPEN=( ) THEN EXIT (FAIL);3, n:=FIRST(OPEN);4, IF GOAL(n) THEN EXIT (SUCCESS);5, REMOVE(n, OPEN), ADD(n, CLOSED);6, IF DEPTH(n)Dm GO LOOP;7, EXPAND(n) mi, G:=ADD(mi, G);8, IF 目标在mi中 THEN EXIT(SUCCESS);9, ADD(mj, OPEN), 并标记mj到n的指针;10, GO LOOP;402 31 8 47 6 5 2 31 8 47 6 52 8 31 47 6
10、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 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 6123456789abcd1 2 3 8 47 6 5目标41l一般不能保证找到最优解l当深度限制不合理时,可能找不
11、到解,可以将算法改为可变深度限制l最坏情况时,搜索空间等同于穷举l与回溯法的差别:图搜索l是一个通用的与问题无关的方法42宽度优先搜索1, G:=G0(G0=s), OPEN:=(s), CLOSED:=( );2, LOOP: IF OPEN=( ) THEN EXIT (FAIL);3, n:=FIRST(OPEN);4, IF GOAL(n) THEN EXIT (SUCCESS);5, REMOVE(n, OPEN), ADD(n, CLOSED);6, EXPAND(n) mi, G:=ADD(mi, G);7, IF 目标在mi中 THEN EXIT(SUCCESS);8, ADD
12、(OPEN, mj), 并标记mj到n的指针;9, GO LOOP;432 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 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 5444l当问题有解时,一定能找到解l当问题为单位耗
13、散值,且问题有解时,一定能找到最优解l方法与问题无关,具有通用性l效率较低l属于图搜索方法45l目的解决宽度优先方法的空间问题和回溯方法不能找到最优解的问题。l思想首先给回溯法一个比较小的深度限制,然后逐渐增加深度限制,直到找到解或找遍所以分支为止。l过程ITERATIVE-DEEPENING-BACKTRACK(DATA0);DATA0为初始状态lBOUND := 1;lPATH := FAIL;lWhile (PATH != FAIL)l DATALIST := LIST(DATA0);用初始状态组成一个表l PATH := BACKTRACK1(DATALIST,BOUND);调用回溯过
14、程,如果PATH等于FAIL表示没有搜索到目标,否则PATH得到一条从初始节点到目标节点的路径l BOUND := BOUND + 1; 加大一层搜索深度lEnd While; lRETURN PATH;返回解路径46l设在一个满b叉树上搜索,最佳解的深度为dl可以认为算法的运行时间与产生的节点数成正比l宽度优先产生的节点数:47l渐进式回溯策略产生的节点数:48l由于b2,有49b2345678910 时间比 2 1.5 1.33 1.25 1.2 1.17 1.14 1.13 1.11l节省空间l有时间限制的搜索l比如计算机博弈、规划等5051l利用知识来引导搜索,达到减少搜索范围,降低问
15、题复杂度的目的。l启发信息的强度强:降低搜索工作量,但可能导致找不到最 优解弱:一般导致工作量加大,极限情况下变为 盲目搜索,但可能可以找到最优解52l引入启发知识,在保证找到最佳解的情况下,尽可能减少搜索范围,提高搜索效率。53l定义一个评价函数f,对当前的搜索状态进行评估,找出一个最有希望的节点来扩展。54l评价函数的格式:f(n) = g(n) + h(n)f(n):评价函数h(n):启发函数55lg*(n):从s到n的最短路径的耗散值lh*(n):从n到g的最短路径的耗散值lf*(n)=g*(n)+h*(n):从s经过n到g的最短路径的耗散值lg(n)、h(n)、f(n)分别是g*(n
16、)、h*(n)、f*(n)的估计值l用f(n)对待扩展节点进行评价561, OPEN:=(s), f(s):=g(s)+h(s);2, LOOP: IF OPEN=( ) THEN EXIT(FAIL);3, n:=FIRST(OPEN);4, IF GOAL(n) THEN EXIT(SUCCESS);5, REMOVE(n, OPEN), ADD(n, CLOSED);6, EXPAND(n) mi, 计算f(n, mi):=g(n, mi)+h(mi);57ADD(mj, OPEN), 标记mj到n的指针;IF f(n, mk)f(mk) THEN f(mk):=f(n, mk), 标记
17、mk到n的指针;IF f(n, ml) 其中为大于0的常数l几个等式 f*(s) = f*(t) = h*(s) = g*(t) = f*(n) 其中s是初始节点,t是目标节点,n是s到t的最佳路径上的节点。69定理1:对有限图,如果从初始节点s到目标节点t有路径存在,则算法A一定成功结束。70引理2.1 :对无限图,若有从初始节点s到目标节点t的路径,则A*不结束时,在OPEN表中即使最小的一个f值也将增到任意大,或有f(n)f*(s)。71引理2.2:A*结束前,OPEN表中必存在f(n)f*(s)。OPEN表中存在一个节点n,n在最佳路径上。f(n) = g(n) + h(n) = g*
18、(n)+h(n) g*(n)+h*(n) = f*(n) = f*(s)72定理2:对无限图,若从初始节点s到目标节点t有路径存在,则A*一定成功结束。引理2.1:A*如果不结束,则OPEN中所有的n有f(n) f*(s)引理2.2:在A*结束前,必存在节点n,使得 f(n) f*(s)所以,如果A*不结束,将导致矛盾。73推论2.1:OPEN表上任一具有f(n)f*(s)的节点n,最终都将被A*选作扩展的节点。 由定理2,知A*一定结束,由A*的结束条件,OPEN表中f(t)最小时才结束。而 f(t) f*(t) f*(s) 所以f(n) f*(s)l由引理2.2知结束前OPEN中存在f(n
19、)f*(s)的节点n,所以 f(n) f*(s) h1(n),则在具有一条从s到t的路径的隐含图上,搜索结束时,由A2所扩展的每一个节点,也必定由A1所扩展,即A1扩展的节点数至少和A2一样多。简写:如果h2(n) h1(n) (目标节点除外),则A1扩展的节点数A2扩展的节点数79l注意: 在定理4中,评价指标是“扩展的节点数”,也就是说,同一个节点无论被扩展多少次,都只计算一次。80l使用数学归纳法,对节点的深度进行归纳l(1)当d(n)0时,即只有一个节点,显然定理成立。l(2)设d(n)k时定理成立。(归纳假设)l(3)当d(n)=k+1时,用反证法。l设存在一个深度为k1的节点n,被
20、A2扩展,但没有被A1扩展。而由假设,A1扩展了n的父节点,即n已经被生成了。因此当A1结束时,n将被保留在OPEN中。81l所以有:f1(n) f*(s) l 即:g1(n)+h1(n) f*(s) l所以: h1(n) f*(s) - g1(n)l另一方面,由于A2扩展了n,有f2(n) f*(s)l即: h2(n) f*(s) g2(n) (A)l由于d(n)=k时,A2扩展的节点A1一定扩展,有 g1(n) g2(n) (因为A2的路A1均走到了)l所以: h1(n) f*(s) - g1(n) f*(s) g2(n) (B)l比较A、B两式,有 h1(n) h2(n) ,与定理条件矛
21、盾。故定理得证。82定理4(简写):如果h2(n) h1(n) (目标节点除外),则A1扩展的节点数A2扩展的节点数l为什么条件不能是h2(n) h1(n) ?什么情况下会出现问题?能否给定理在增加条件,使得定理在h2(n) h1(n) 条件下也成立?83l平均分叉数设共扩展了d层节点,共搜索了N个节点,则:其中,b*称为平均分叉数。lb*越小,说明h效果越好。l实验表明,b*是一个比较稳定的常数,同一问题基本不随问题规模变化。*1*1)1(bbNd84例:8数码问题,随机产生若干初始状态。l使用h1:d=14, N=539,b*=1.44; d=20, N=7276, b*=1.47;l使用
22、h2:d=14, N=113, b*=1.23;d=20, N=676,b*=1.2785l一般来说,A*的算法复杂性是指数型的,可以证明,当且仅当以下条件成立时:abs(h(n)-h*(n) O(log(h*(n)A*的算法复杂性才是非指数型的,但是通常情况下, h与h*的差别至少是和离目标的距离成正比的。86l问题的提出:因A算法第6步对ml类节点可能要重新放回到OPEN表中,因此可能会导致多次重复扩展同一个节点,导致搜索效率下降。87s(10)A(1)B(5)C(8)G 目标631118一个例子:OPEN表CLOSED表s(10)s(10)A(7) B(8) C(9)A(7) s(10)
23、B(8) C(9) G(14)A(5) C(9) G(14)C(9) G(12)B(7) G(12)A(4) G(12)G(11)B(8) s(10)A(5) B(8) s(10)C(9) A(5) s(10)B(7) C(9) s(10)A(4) B(7) C(9) s(10)88l在前面的扩展中,并没有找到从初始节点到当前节点的最短路径,如节点A。l问题的突破口?s(10)A(1)B(5)C(8)G 目标63111889l对h加以限制能否对h增加适当的限制,使得第一次扩展一个节点时,就找到了从s到该节点的最短路径。l对算法加以改进能否对算法加以改进,避免或减少节点的多次扩展。90l可采纳性
24、不变l不多扩展节点l不增加算法的复杂性91l定义:一个启发函数h,如果对所有节点ni和nj,其中nj是ni的子节点,满足h(ni) - h(nj) c(ni, nj)h(t) = 0或 h(ni) c(ni, nj) + h(nj) h(t) = 0 则称h是单调的。h(ni)ninjh(nj)c(ni,nj)92l定理5:若h(n)是单调的,则A*扩展了节点n之后,就已经找到了到达节点n的最佳路径。即:当A*选n扩展时,有g(n)=g*(n)。93l设n是A*扩展的任一节点。当ns时,定理显然成立。下面考察n s的情况。l设P(n0=s, n1, n2, , nk=n)是s到n的最佳路径lP
25、中一定有节点在CLOSED中,设P中最后一个出现在CLOSED中的节点为nj,则nj+1在OPEN中。 l 94l由单调限制条件,对P中任意节点ni有: h(ni) C(ni, ni+1)+h(ni+1) g*(ni)+h(ni) g*(ni)+C(ni, ni+1)+h(ni+1)l由于ni 、ni+1在最佳路径上,所以: g*(ni+1) = g*(ni)+C(ni, ni+1)l带入上式有: g*(ni)+h(ni) g*(ni+1)+h(ni+1)l从i=j到i=k-1应用上不等式,有: g*(nj+1)+h(nj+1) g*(nk)+h(nk)l即:f(nj+1) g*(n)+h(n
26、) 注意:注意:(nj在在CLOSED中,中,nj+1在在OPEN中中)95l重写上式:f(nj+1) g*(n)+h(n)l另一方面,A*选n扩展,必有: f(n) = g(n)+h(n) f(nj+1) l比较两式,有: g(n) g*(n)l但已知g*(n)是最佳路径的耗散值,所以只有:g(n) = g*(n)。得证。96l定理6:若h(n)是单调的,则由A*所扩展的节点序列其f值是非递减的。即f(ni) f(nj)。 其中nj在ni的后面扩展。只需证明nj是ni的子节点的情况。 97l由单调限制条件,有: h(ni) h(nj) C(ni, nj) = f(ni)-g(ni)= f(n
27、j)-g(nj) f(ni)-g(ni) - f(nj)+g(nj) C(ni, nj)= g(ni)+C(ni, nj) f(ni)-g(ni) - f(nj)+ g(ni)+C(ni, nj) C(ni, nj) f(ni) - f(nj) 0,得证。98l8数码问题:h为“不在位”的将牌数 1h(ni) - h(nj) = 0(nj为ni的后继节点) -1 h(t) = 0c(ni, nj) = 1 满足单调的条件。99l一些结论:OPEN表上任以具有f(n) f*(s)的节点定会被扩展。A*选作扩展的任一节点,定有f(n)f*(s)。当h(n)恒等于0时,h为单调的。100OPEN = ( )f*(s)f值小于f*(s)的节点f值大于等于f*(s)的节点fm:到目前为止已扩展节点的最大f值,用fm代替f*(s)1011, OPEN:=(s), f(s)=g(s)+h(s), fm:=0;2, LOOP: IF OPEN=( ) THEN EXIT(FAIL);3, NEST:=ni|f(ni)fmIF NEST ( ) THEN n:=NEST中g最小的节点 ELSE n:=FIRST(OPEN), fm:=f(n);4, , 8: 同过程A。102s(10)A(1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目部人员休假审批表
- 项目资金分析表
- 精-品解析:2024学年度第二学期期末七年级数学试题(原卷版)
- 2025-2026学年山西省运城市高考临考冲刺语文试卷含解析
- 【2026年】面试题题库应答技巧
- 四川省遂宁市射洪中学2025-2026学年高二下学期期中考试物理试卷
- 26年洗头水温控制操作规范课件
- 【2025年】南宁市高校毕业生三支一扶考试真题解析《综合知识》
- 医学26年:痛风诊疗进展解读 查房课件
- 医学26年:肾内科规培生带教要点 查房课件
- 渣土车运输安全培训课件
- 2025年成果转化专员岗位招聘面试参考题库及参考答案
- 上海市复兴中学2026届化学高一第一学期期末达标测试试题含解析
- 铲车驾驶员安全操作规程
- 医院一级护理知识培训课件
- 特慢病申报培训课件
- 血液透析常用药物管理要点
- 云南省云南师范大附属中学2026届中考联考物理试卷含解析
- 《常见疾病康复》课程标准
- 肺癌戒烟健康宣教
- 【Aspen流程模拟二甲基亚砜生产的案例1200字】
评论
0/150
提交评论