第4章 图搜索策略

合集下载

搜索的策略

搜索的策略

1 搜索策略搜索策略是指在搜索过程中如何选择扩展节点的次序问题。

一般来说,搜索策略就是采用试探的方法。

它有两种类型:一类是回溯搜索,另一类是图搜索策略。

2 盲目的图搜索策略图搜索策略又可分为两种:一种称为盲目的图搜索策略,或称无信息图搜索策略;而另一种称为启发式搜索策略,又称为有信息的图搜索策略。

最常用的两种无信息图搜索策略是宽度优先搜索和深度优先搜索。

2.1 宽度优先搜索它是从根节点(起始节点)开始,按层进行搜索,也就是按层来扩展节点。

所谓按层扩展,就是前一层的节点扩展完毕后才进行下一层节点的扩展,直到得到目标节点为止。

这种搜索方式的优点是,只要存在有任何解答的话,它能保证最终找到由起始节点到目标节点的最短路径的解,但它的缺点是往往搜索过程很长。

2.2 深度优先搜索它是从根节点开始,首先扩展最新产生的节点,即沿着搜索树的深度发展下去,一直到没有后继结点处时再返回,换一条路径走下去。

就是在搜索树的每一层始终先只扩展一个子节点,不断地向纵深前进直到不能再前进(到达叶子节点或受到深度限制)时,才从当前节点返回到上一级节点,沿另一方向又继续前进。

这种方法的搜索树是从树根开始一枝一枝逐渐形成的。

由于一个有解的问题树可能含有无穷分枝,深度优先搜索如果误入无穷分枝(即深度无限),则不可能找到目标节点。

为了避免这种情况的出现,在实施这一方法时,定出一个深度界限,在搜索达到这一深度界限而且尚未找到目标时,即返回重找,所以,深度优先搜索策略是不完备的。

另外,应用此策略得到的解不一定是最佳解(最短路径)举例BFS搜索的一般过程。

POJ 2251Dungeon Master#include<iostream>#include<stdio.h>#include<algorithm>#include<queue>using namespace std;#define MMax 31struct node//入队的每个节点的信息{int x,y,z,t;};char map[MMax][MMax][MMax];int r,c,l;node start,end;//上,下,左,右,前,后六个方向,三维地图的搜索intdis[6][3]={{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}};/*二维的有左,右,前,后方向:int dis[4][2]={{0,1},{0,-1},{1,0},{-1,0}}*//*当然,还有相应的八个方向的搜索什么的,修改一下dis就可以了*/bool judge(node a)//判断节点a有无越界{return(a.x>=0&&a.x<l&&a.y>=0&&a.y<r&&a.z>=0&&a.z<c);}int bfs(){node now,next;queue<node>Q;//申请一个结构体node类型的队列Qstart.t=0;//开始节点Q.push(start);//开始节点入队map[start.x][start.y][start.z]='#';//标记while(!Q.empty())//判断队是否为空,空返回true{now=Q.front();//出队一个节点给nowQ.pop();//删除队头元素/*上面两个一般是连起来用的*/for(int i=0;i<6;i++)//枚举6个方向{//next为该方向要搜的那个点next.x=now.x+dis[i][0];next.y=now.y+dis[i][1];next.z=now.z+dis[i][2];if(judge(next)&& map[next.x][next.y][next.z]!='#')//条件{next.t=now.t+1;if(map[next.x][next.y][next.z]=='E')//搜到了return next.t;map[next.x][next.y][next.z]='#';//标记Q.push(next);//入队}}}return-1;}int main(){//freopen("D://1.txt","r",stdin);while(scanf("%d%d%d",&l,&r,&c)!=EOF){if(l+r+c==0)break;for(int i=0;i<l;i++){for(int j=0;j<r;j++){//cin>>map[i][j];scanf("%s",map[i][j]);for(int k=0;k<c;k++){if(map[i][j][k]=='S')start.x=i,start.y=j,start.z=k;//开始节点else if(map[i][j][k]=='E')end.x=i,end.y=j,end.z=k;//}}}int ans=bfs();if(ans==-1)printf("Trapped!\n");else printf("Escaped in %d minute(s).\n",ans);}return0;}。

图搜索策略

图搜索策略

图搜索策略112----⎧⎪⎧⎪⎨⎪⎩⎪⎪⎧⎪⎪⎪⎪⎪⎨⎨⎪⎪⎪⎩⎪⎪⎪⎪⎪⎧⎪⎨⎪⎩⎩⎧⎪⎨⎪⎩一、图搜索概论:①,树的定义和基本术语,图的意义②,图的存储结构2,图的定义1,顶点,2,边,③,显示图的常用术图搜索回顾3,图,4,数据元素隐式图术语,子集树,,排列树二、状态图搜索:①,搜索定义②,搜索树定义广度优先盲目穷举式深度优先有界深度优先全局择优1,树式搜索局部择优分启发式状态图搜索③,搜索方式分类*--A --121*2 4A ⎧⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎩⎩⎪⎧⎪⎧⎪⎨⎪⎪⎩⎪⎨⎪⎧⎪⎪⎨⎪⎪⎩⎩⎩⎧⎧⎧⎪⎪⎨⎨⎪⎩⎨⎪⎪⎩⎪⎩A Beam Search 支界限最近择优算法算法随机碰撞盲目回溯穷举2,线式搜索不回溯启发式可回溯深度优先搜索穷举式搜索,盲目搜索广度优先搜索④,搜索策略盲目碰撞搜索,启发式搜索,⑤搜搜寻算法,3,二分取中查索法找算法算, ⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎩⎩Branch and bound1 2⎧⎨⎩⎧⎨⎩1,猴子与香蕉三,简单实例回顾:2,猴子与香蕉的状态空间图,图搜索一般过程四,图搜索过程,图搜索框过程框图五,通过文章加深图搜索策略(《人工智能图搜索策略的研究》)一,图搜索概论:①图搜索回顾:1.11.2②图的存储结构:1.11.2③图及其术语:1.11.2显示图与隐式图:1.3,显示图的常用术语:1.4隐式图术语二,状态图搜索:①,搜索定义,②,搜索树定义:③,搜索方式分类:④图搜索策略:1.1盲目式搜索:1.2启发式搜索:⑤图搜索算法1.1树搜索方法1.3树搜索举例1.4状态图搜索:1.5状态图搜索举例⑥,常见搜索算法下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的或是比较生僻的,和计算机的不相干,所以没有选取。

人工智能第4章图搜索技术

人工智能第4章图搜索技术
OPEN表的首部,转步2。
例4.4 对于八数码问题,应用
深度优先搜索策略,可得如图4—
6所示的搜索树。
283
深度优先搜索亦称为纵向搜 1 4 765
索。由于一个有解的问题树可能
含有无穷分枝,深度优先搜索如
果误入无穷分枝(即深度无限,但
解不在该分支内),则不可能找到
目标节点。所以,深度优先搜索
策略是不完备的。另外,应用此
例4.6 设A城是出发地,E城是目的地,边上的数字代表 两城之间的交通费。试求从A到E最小费用的旅行路线。
B 4
6
A
3
4
A
E
C 3
D1
3
4
D2 23
E1 3
C
D
2
(a)
E2
B2 6
深度优先搜索算法:
步1 把初始节点S0放入OPEN表中; 步2 若OPEN表为空,则搜索失败,退出。
步3 取OPEN表头节点N放入CLOSED表中,并冠以顺序编号n;
步4 若目标节点Sg=N,则搜索成功,结束。 步5 若N不可扩展,则转步2; 步6 扩展N,将其所有子节点配上指向N的返回指针依次放入
2831 14 765
第4章 图搜索技术
2 283
14 765
6 83
214 765
7 283 714 65
14 83 214 765
15 283 714 65
22 83 214 765
23 813 24 765
3 23 184 765
8 23
1 84 7 65
9 23 184 765
16 1 23
第4章 图搜索技术
步1 把S0放入OPEN表中,置S0的深度d(S0)=0; 步2 若OPEN表为空,则失败,退出。 步3 取OPEN表头节点N,放入CLOSED表中,并 冠以顺序编号n; 步4 若目标节点Sg=N,则成功,结束。 步5 若N的深度d(N)=dm(深度限制值),或者若N无 子节点,则转步2; 步6 扩展N,将其所有子节点Ni配上指向N的返回 指针后依次放入OPEN表中前部,置d(Ni)=d(N)+1,转 步2。

第4章 图搜索策略

第4章 图搜索策略

作者 朱福喜 朱三元
(2)用图结构,不允许搜索图中有相同结点出现。 优点:节省大量空间(相同的结点只存一次) 和时间(相同结点不需要重复产生)。 缺点:每产生一个新的结点需判断这个节点 是否已生成过 , 因而控制更复杂,判断也要占 用时间。 碰到具体问题时,要权衡二者的利弊。若可能 产生大量相同结点,则应采用搜索图。
作者 朱福喜 朱三元
2.4 图搜索策略
图搜索算法只记录状态空间那些被搜索过的状态, 它们组成一个搜索图叫G。G由两张表内的节点组成:
Open表:用于存放已经生成,且已用启发式函数作过 估计或评价,但尚未产生它们的后继节点的那些结点, 也称未考察结点。
Closed表:用于存放已经生成,且已考察过的结点。 一个结构 Tree, 它的节点为G的一个子集。Tree 用来 存放当前已生成的搜索树, 该树由G的反向边组成。
6. 产生n的一切后继,将后继中不是n的先辈点的 一切点构成集合M
7. 对M中的元素P,分别作两类处理: 7.1 若P∈G,则P对P进行估计加入open表, 记入G和Tree。
7.2 P∈G,则决定更改Tree中P到n的指针
并且更改P的子节点n的指针和费用。
8. 转3。
作者 朱福喜 朱三元
2.A*算法的性质

f*(n)表示从S0经过n到Sg的最优路的实际
最小费用。
作者 朱福喜 朱三元
证:令 S0=n0 , n1 , n2 , … , nk=Sg 为一条
最优路径,设 n’∈path(n0 , n1 , … , nk ) 中最后一个出现在 open表上的元素。显然 n’一定存在,因为至少有S0=n0必然在open 上,只考虑当 nk 还未在 closed 表中时,因 为若nk已在closed表中时,则nk=Sg,A*算 法将终止于成功退出。

920083-人工智能导论教学大纲(第4版)

920083-人工智能导论教学大纲(第4版)

《人工智能导论》课程教学大纲一、课程的性质和教学目标课程性质:人工智能是计算机科学中的重要内容,已经成为计算机技术发展以及许多高新技术产品中的核心技术。

由于人工智能是模拟人类智能解决问题,几乎在所有领域都具有非常广泛的应用。

《人工智能导论》是计算机科学与技术、软件工程、网络工程等专业本科生的一门基础选修课程。

本课程主要介绍人工智能问题求解的一般性原理和基本思想以及一些前沿内容,为学生提供最基本的人工智能技术和有关问题的入门性知识,为进一步学习和研究人工智能理论与应用奠定基础。

教学目标:1. 了解人工智能的特点、主要研究领域、研究历史及未来发展动向。

2. 掌握人工智能的基本概念、基本原理和基本方法。

3. 了解应用人工智能技术解决实际问题的范例。

该课程的目标是把握计算机科学与技术的发展趋势,熟悉本专业的前沿知识和研究热点。

该课程讲述了人工智能的发展简史、人工智能研究的基本内容和主要研究领域、人工智能的研究热点包括人工神经网络及其应用和遗传算法及其应用等。

要求学生掌握基本创新方法,能够针对创新点开展切实有效的理论和应用研究。

该课程紧密联系计算机学科中的前沿内容和所涉及的新技术,例如模糊推理方法及其在计算机控制系统中的应用、人工神经网络及其改进方法在模式识别、软测量、联想记忆、优化计算中的应用,遗传算法及其改进算法在生产调度中的应用等,学生通过该课程的学习能够了解基本的人工智能新技术和有关问题求解的创新方法;课程要求完成A*算法应用实验、遗传算法应用实验、基于神经网络的优化计算实验等自主型实验项目,学生通过实验,能够发挥主动性,研究探讨人工智能系统的运行和实现过程,提出思路并积极验证和探索自己的思路,从而更好的掌握知识,培养学生的理论联系实际能力和创新能力,逐步培养他们发现问题、提出问题、分析问题和解决问题的能力。

课程支撑的毕业要求及其指标点:该课程支撑以下毕业要求和具体细分指标点:【毕业要求3】设计/开发解决方案:能够设计针对复杂工程问题的解决方案,设计满足特定需求的系统、单元(部件)或工艺流程,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。

第4章+图搜索技术_2(启发式)

第4章+图搜索技术_2(启发式)

g=0
h=3 f=3
A
优先队:FBH
设g 为已搜索的路程代价 h 为将付出的估计代价
F g=1 h=2 f=3 G h=1
B g=1 h=3 f=4
H g=1 h=4 f=5
F
h=3 A
h= 2
h=3
B
h=4
C
初始结点
h=2 h=3
D
h=1 h=2
E
h=0
目标结点
H
I
J
第4章 图搜索技术
(d)
A
算出f值对OPEN表重排序
(3)用于删除节点的选择,即用于决定应删除哪些
无用节点,以免造成进一步的时空浪费。
第4章 图搜索技术
一般来说启发信息过弱,产生式系统在找到一条 路径之前将扩展过多的节点,即求得解路径所需搜索 的耗散值(搜索花费的工作量)较大;相反引入强的 启发信息,有可能大大降低搜索工作量,但不能保证 找到最小耗散值的解路径(最佳路径),因此实际应
模式,需要具体问题具体分析。通常可以参考的思路 有:一个节点到目标节点的某种距离或差异的度量; 一个节点处在最佳路径上的概率;或者根据经验的主 观打分等等。例如,对于八数码难题,用h(x)就可表 示节点x的数码格局同目标节点相比,数码不同的位 置个数。
第4章 图搜索技术
4.启发式搜索算法
启发式搜索要用启发函数来导航,其搜索算法就 要在状态图一般搜索算法基础上再增加启发函数值的 计算与传播过程,并且由启发函数值来确定节点的扩 展顺序。为简单起见,下面我们仅给出树型图的树式 搜索的两种策略。
第4章 图搜索技术
4.1.5 加权状态图搜索
1. 加权状态图与代价树 例4.6 图4—8(a)是一个交通图,设A城是出发地,E 城是目的地,边上的数字代表两城之间的交通费。试 求从A到E最小费用的旅行路线。

人工智能及其应用第四版答案

人工智能及其应用第四版答案

人工智能及其应用第四版答案【篇一:人工智能及其应用习题参考答案第9章】txt>9-1 分布式人工智能系统有何特点?试与多艾真体系统的特性加以比较。

分布式人工智能系统的特点:(1) 分布性系统信息(数据、知识、控制)在逻辑上和物理上都是分布的(2) 连接性各个子系统和求解机构通过计算机网络相互连接(3) 协作性各个子系统协调工作(4) 开放性通过网络互连和系统的分布,便于扩充系统规模(5) 容错性具有较多的冗余处理结点、通信路径和知识,提高工作的可靠性(6) 独立性系统把求解任务归约为几个相对独立的子任务,降低了问题求解及软件开发的复杂性9-2 什么是艾真体?你对agent的译法有何见解?agent是能够通过传感器感知其环境,并借助执行器作用于该环境的实体,可看作是从感知序列到动作序列的映射。

其特性为:行为自主性,作用交互性,环境协调性,面向目标性,存在社会性,工作协作性,运行持续性,系统适应性,结构分布性,功能智能性把agent 译为艾真体的原因主要有:(1) 一种普遍的观点认为,agent是一种通过传感器感知其环境,并通过执行器作用于该环境的实体。

(2) “主体”一词考虑到了agent具有自主性,但并未考虑agent还具有交互性,协调性,社会性,适应性和分布性的特性(3) “代理”一词在汉语中已经有明确的含义,并不能表示出agent的原义(4) 把agent译为艾真体,含有一定的物理意义,即某种“真体”或事物,能够在十分广泛的领域内得到认可(5) 在找不到一个确切和公认的译法时,宜采用音译9-3 艾真体在结构上有何特点?在结构上又是如何分类的?每种结构的特点为何?真体=体系结构+程序(1) 在计算机系统中,真体相当于一个独立的功能模块,独立的计算机应用系统。

(2) 真体的核心部分是决策生成器或问题求解器,起到主控作用(3) 真体的运行是一个或多个进程,并接受总体调度(4) 各个真体在多个计算机cpu上并行运行,其运行环境由体系结构支持。

第四章 搜索引擎

第四章 搜索引擎
第 四 章 基于搜索引擎的网络信息资源检索
1
2

搜索引擎概述
搜索引擎类型 索引型搜索引擎

基于搜索引擎的网络信息资源检索
返回目录
3
搜索引擎概述
近日,Search Engine Watch提供了一份最新报告,在全球搜 来自市场研究公司 ComScore在2012年11月和12月份期间的统计数据。 报告显示,在2012年11月和12月份期间,全球用户通过谷歌 进行的搜索查询达到了1%;使用雅虎搜 索的查询达到了86亿次,份额为4.9%。 除排在前三的搜索外,排在第四的是来自俄罗斯的Yandex搜 索,其搜索量为48亿次,份额为2.8%。 微软的必应搜索被挤到第五位,其搜索量为44亿次,份额为 2.5%。
基于搜索引擎的网络信息资源检索
返回目录
8
3 基于网页链接的搜索引擎
编程者将传统的Spider程序工作原理作了些改进。其设想 是,既然所有网页都可能有连向其他网站的链接,那么 从一个网站开始,跟踪所有网页上的所有链接,就有可 能检索整个互联网。到1993年底,一些基于此原理的搜 索引擎开始纷纷涌现,其中最负盛名的三个是: Scotland的JumpStation Colorado 大学Oliver McBryan的The World Wide Web Worm NASA(美国国家航空航天局(National Aeronautics and Space Administration)简称NASA )的 Repository-Based Software Engineering spider
基于搜索引擎的网络信息资源检索
返回目录
22
搜索引擎的检索方法和技巧
1. 选用适当的搜索引擎 2. 认真分析和思考 3. 准确提炼搜索关键词 4. 小心使用逻辑运算符 5. 掌握一些小的检索技巧 6. 培养有效的搜索习惯 7. 搜索主题要明确,不要迷失
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1.1 通用或图搜索算法
或图通用搜索算法:
设S0 :初始状态, Sg:目标状态 1. 产生一仅由S0组成的open表,即open=(S0); 2. 产生一个空的closed表; 3. 如果open为空,则失败退出; 4. 在 open 表上按某一原则选出第一个优先结点, 称为n,将n放到closed表中,并从open表中去掉 n;
4.1.2 A算法与A*算法
由定义有 f(n’ ) =g(n’ ) +h(n’ ) =g*(n’ ) +h(n’ ) (因为n’在最优路径上) ≤ g*(n’ ) +h*(n’ ) =f*(n’ ) =f*(S0 ) (由于A*的定义h(n) ≤h*(n)) 所以f(n’)≤f*(S0)成立。
4.1.2 A算法与A*算法
推论1 若问题有解,A*算法一定终止。
(2-1)
因为若A*算法不终止,则命题2的
f(n)≥g(n)≥g*(n)≥d*(n)· e
与命题3的
f(n’)≤f*(S0) (2-2)
同时成立,则产生矛盾。
4.1.2 A算法与A*算法
命题 4 若问题有解, A* 算法终止时一定 找到最优解, 即A*算法是可采纳的。
4.1.1 通用或图搜索算法
注1 : 若生成的后继节点放于:
( 1 ) Open 表的尾部 —— 相当于 Breadth-firstsearch;
( 2 ) Open 表 的 首 部 —— 相 当 于 Depth-firstsearch; (3)根据启发式函数f的估计值确定最佳者,放 于Open 表的首部——相当于Best-first-search 最佳优先搜索。
证:A*终止只有两种情况。 (1) 在第3步, 因open为空而失败退出 但由命题 3 可知: A* 终止前, open 表上必 存在一点n’,满足 f(n’)≤f*(S0) 即open表不会空,所以,不会终止于第3步。
推 论 2 凡 open 表 中 任 一 点 n , 若 f(n ) < f*(S0 ),最终都将被 A* 算法挑选出来求 后继,也即被挑选出来进行扩充。
4.1.1 通用或图搜索算法
S0
过去对Ps所选 的最优路径 k
现在生成P 的路径 n
过去生成 P的路径
Ps
m
P 图2-23 p∈M且在closed表中时不同的最优路径
4.1.1 通用或图搜索算法

即 过 去 对 S0→P 而 言 的 最 优 路 径 为
S0→m→p,现在要从S0→m→p与S0→n→p中 求最优路径。
h*(n),g(n)≥g*(n)。
S0
n
Sg
4.1.2 A算法与A*算法
1.A算法与A*算法定义
或图通用算法在采用如下形式的估计函数时, 称为 A算法。 f(n)=g(n)+h(n)
其中g(n)表示从S0到n点的搜索费用的估计,因为 n 为当前节点,搜索已达到 n 点,所以 g(n) 可计 算出。h(n)表示从n到Sg接近程度的估计,因为 尚未找到解路径,所以h(n)仅仅是估计值。
4.1.1 通用或图搜索算法

注2 : (1) 若P∈M且在open表中,这说明P在n之 前已是某一结点 m 的后继 , 但本身尚未被考察 ( 未 生成P的后继),
S0 Path1 Path2
n
后扩展 p
m
先扩展
P在n之前已是某一结点m的后继
4.1.1 通用或图搜索算法
这说明从S0→p至少有两条路径,这时有两种情 况:

4.1.2 A算法与A*算法
证:令 S0=n0 , n1 , n2 , … , nk=Sg 为一条 最优路径,设 n’∈path(n0 , n1 , … , nk ) 中最后一个出现在 open表上的元素。显然 n’一定存在,因为至少有S0=n0必然在open 上,只考虑当 nk 还未在 closed 表中时,因 为若nk已在closed表中时,则nk=Sg,A*算 法将终止于成功退出。
a .若 Path1 的代价 <Path2 的代价时,当前路
径较好,要修改 p 的指针,使其指向 n ,即标 出搜索之后的最好路径; b.若Path1的代价≥Path2的代价时,原路径 较好,不改变p的指针。
4.1.1 通用或图搜索算法
(2)若p∈M且在closed表中,这说明: a. p在n之前已是某一节点m的后继,所以需 要作如(1)同样的处理,如下图右部。 b . p在 closed 表中,说明 p的后继也在 n 之前 已生成,我们称为 Ps ,那么对 Ps 同样可能由 于 n→p 这一路径的加入又必须比较多条路径 代价后而取代价小的一条,如下图左部。
设当前扩展的节点是搜索图中的n,设p是n的
后继, 如下图 2-25(a) , p 是已考察节点,则
在扩展了节点n后,P 的f值应从4减少到2,这
时Tree中P原来指向m的指针应改变指向n,
4.1.1 通用或图搜索算法
S0 S0
n
n
F
m
F
m
Ps
P 扩充n 的搜索图
Ps,
Ps
P Ps, 修改P指针的搜索树
命题5 凡A*算法挑选出来求后继的点n必定 满足: f(n)≤f*(S0) (2-3)
4.1 或图搜索策略
图搜索算法只记录状态空间那些被搜索过的状态,它 们组成一个搜索图叫G。G由两张表内的节点组成:
Open表:用于存放已经生成,且已用启发式函数作过 估计或评价,但尚未产生它们的后继节点的那些结点, 也称未考察结点。
Closed表:用于存放已经生成,且已考察过的结点。 一个结构Tree, 它的节点为G的一个子集。Tree 用来存 放当前已生成的搜索树, 该树由G的反向边(反向指针) 组成。

同理,若过去对 S0→Ps 而言的最优路径为 S0→k→Ps, 现在要从{S0→p→Ps,S0→k→Ps} 中选最优路径。
4.1.1 通用或图搜索算法
例2.9 设当前搜索图和搜索树分别为: S0 n n
S0
P Ps
m Ps,
P
Ps
m P s,
当前搜索图和搜索树
4.1.1 通用或图搜索算法

若启发式函数f(n)为从起点S0到节点n的 最短路径的长度,该长度用边的数目表示。

(1)证若问题有解,A*一定终止,由如 下命题1-3证出。 (2)证若问题有解,A*终止时一定找到 最优解,由如下命题4证出。

4.1.2 A算法与A*算法

命题1 对有限图而言,A*一定终止。
证:考察A*算法,算法终止只有二处: 第一处 在第5步,找到解时成功终止。 第二处 在第 3 步, open 为空时失败退 出。 算法每次循环从 open上去掉一个点,而 有限图的open表只有有限个节点加入,所以 找不到解也会因为open表为空而停止
4.1.1 通用或图搜索算法
7. 对M中的元素P,分别作两类处理: 7.1 若P ∈ G,即P不在open表中也不 在closed表中,则P根据一定原则加入open 表注1,同时加入搜索图G中,对P进行估计 放入Tree中。 7.2 P∈G,则决定是否更改Tree中P到n 的指针注2。 8. 转3。
4.1.2 A算法与A*算法
A*算法
设S0 :初态, Sg:目标状态 1. open={S0};
2. closed={ };
3. 如果open={},失败退出;
4. 在open表上取出f最小的结点n, n放到closed 表中;
f(n)=g(n)+h(n) h<=h*
4.1.2 A算法与A*算法
到某节点 ni 所经过的路径,虚线表示 ni 与 Sg 的可选择的路
径,双虚线表示 ni 与 Sg 的直线距离 ( 可以从地图上量出) , 但并没有实际的道路,则实线表示的路径为 g(n), 双虚线 和 虚 线 表 示 的 路 径 都 可 作 为 h(n) , 虚 线 表 示 的 路 径 为 h*(n)。如果以双虚线表示的路径作为h(n), 则有h(n)
4.1.2 A算法与A*算法
命题3 若问题有解,在A* 终止前,open表 上必存在一点 n’ , n’ 位于从 S0→Sg 的最优 路径上,且有 f(n’)≤f*(S0) (2-2)

f*(S0)表示从S0到Sg的最优路的实际最小 费用。 f*(n)表示从 S0经过n到Sg 的最优路的实际 最小费用。
4.1 或图搜索策略
(2)用图结构,不允许搜索图中有相同结点出现。 优点:节省大量空间(相同的结点只存一次) 和时间(相同结点不需要重复产生)。 缺点:每产生一个新的结点需判断这个节点 是否已生成过 , 因而控制更复杂,判断也要占 用时间。 碰到具体问题时,要权衡二者的利弊。若可能 产生大量相同结点,则应采用搜索图。
4.1.2 A算法与A*算法
命题2 若A*不终止,则搜索图中open表上的点 的f值将会越来越大。

证:设 n 为 open 中任一节点, d*(n )为从 S 到 n 中最 短路径长度,由于从某一点求出其后继的费用不小 于某个小的正数e,所以 g*(n)≥d*(n)· e 而 g(n)≥g*(n)≥d*(n)· e 又因为 h(n)≥0 所以f(n)≥g(n)≥g*(n)≥d*(n)· e (2-1)
4.1.1 通用或图搜索算法
S0
P 的指针改变后, Ps , 的路径自动改变了, Ps的f值从4减少到了 3,这时也应该修改 在 Tree 中 的 指 针 , 修 改 的 结 果 为 图 226

n
F
m
Ps
P
Ps,
P的指针改变后,Tree中指针的修改

例:在地图上寻找城市 A 至 B 的最短路径,实线表示从 S0
第4章 图搜索策略
相关文档
最新文档