人工智能课件第2章3.ppt

上传人:b****2 文档编号:2644558 上传时间:2022-11-04 格式:PPT 页数:75 大小:1.33MB
下载 相关 举报
人工智能课件第2章3.ppt_第1页
第1页 / 共75页
人工智能课件第2章3.ppt_第2页
第2页 / 共75页
人工智能课件第2章3.ppt_第3页
第3页 / 共75页
人工智能课件第2章3.ppt_第4页
第4页 / 共75页
人工智能课件第2章3.ppt_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

人工智能课件第2章3.ppt

《人工智能课件第2章3.ppt》由会员分享,可在线阅读,更多相关《人工智能课件第2章3.ppt(75页珍藏版)》请在冰豆网上搜索。

人工智能课件第2章3.ppt

2.4.2A算法与A*算法1A算法与算法与A*算法定义算法定义或图通用算法在采用如下形式的估计函数时,称为A算法。

f(n)=g(n)+h(n)其中g(n)表示从S0到n点费用的估计,因为n为当前节点,搜索已达到n点,所以g(n)可计算出。

h(n)表示从n到Sg接近程度的估计,因为尚未找到解路径,所以h(n)仅仅是估计值。

例2.10在地图上寻找城市A至B的最短路径,双虚线表示ni与Sg的直线距离(可以从地图上量出),虚线表示ni与Sg的路径,则实线表示的路径为g(n),虚线表示的路径为h(n)。

A=S0B=Sgn1n2n3n4n52.4.2A算法与A*算法若规定h(n)0,并且定义:

f*(n)=g*(n)+h*(n)表示S0经点n到Sg最优路径的费用,也有人将f*(n)定义为实际最小费用。

其中g*(n)为S0到点n的最小费用,h*(n)为n到Sg的实际最小费用。

在上例中,双虚线表示的路径就可以作为h*(n),显然有g(n)g*(n)。

h(n)h*(n)若令h(n)0,则A算法相当于广度优先,因为上一层节点的搜索费用一般比下一层的小。

g(n)h(n)0,则相当于随机算法。

g(n)0,则相当于最佳优先算法。

特别是当要求h(n)h*(n),就称为这种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*5.若nSg,则成功退出;6.产生n的一切后继,将后继中不是n的先辈点的一切点构成集合M7.对M中的元素P,分别作两类处理:

7.1若PG,则P对P进行估计加入open表,记入G和Tree。

7.2PG,则决定更改Tree中P到n的指针并且更改P的子节点n的指针和费用。

8.转3。

2A*算法的性质算法的性质A*算法与一般的最佳优先比较,有其特有的性质:

如果问题有解,即S0Sg存在一条路径,A*算法一定能找到最优解。

这一性质称为可可采采纳纳性性(admissibility)。

(p35例2.11)下面要证明A*算法的可采纳性,证明分两步:

(1)证若问题有解,A*一定终止,由如下命题1-3证出。

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

命题命题1对有限图而言,A*一定终止。

证:

考察A*算法,算法终止只有二处:

第一处在第5步,找到解时成功终止。

第二处在第3步,open为空时失败退出。

算法每次循环从open上去掉一个点,而有限图的open表只有有限个节点加入,所以找不到解也会因为open表为空而停止命题命题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)命命题题3若问题有解,在A*终止前,open表上必存在一点n,n位于从S0Sg的最优路径上,且有f(n)f*(S0)(2-2)f*(S0)表示从S0到Sg的最优路的实际最小费用。

f*(n)表示从S0经过n到Sg的最优路的实际最小费用。

证:

令S0=n0,n1,n2,nk=Sg为一条最优路径,设npath(n0,n1,nk)中最后一个出现在open表上的元素。

显然n一定存在,因为至少有S0=n0必然在open上,只考虑当nk还未在closed表中时,因为若nk已在closed表中时,则nk=Sg,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)成立。

推推论论1若问题有解,A*算法一定终止。

因为若A*算法不终止,则命题2的(2-1)与命题3的(2-1)同时成立,则产生矛盾。

命命题题4若问题有解,A*算法终止时一定找到最优解,即A*算法是可采纳的。

证:

A*终止只有两种情况。

(1)在第3步,因open为空而失败退出但由命题3可知:

A*终止前,open表上必存在一点n,满足f(n)f*(S0)即open表不会空,所以,不会终止于第3步。

推推论论2凡open表中任一点n,若f(n)f*(S0),最终都将被A*算法挑选出来求后继,也即被挑选出来进行扩充。

证:

用反证法,设f(n)f*(S0)且n没有被选出来作后继由命题4,A*算法将找到一条路S0=n0,n1,nk=Sg,为最优路径且f(ni)f(n)对一切i=0,1,k成立因为最优路径选择的是ni而不是n,又因为ni在最优路上,由f(ni)=f*(S0)所以f*(S0)f(n)与f(n)f*(S0)同时成立,这是一个矛盾。

命命题题5凡A*算法挑选出来求后继的点n必定满足:

f(n)f*(S0)(2-3)证明:

若n=Sg,由命题4可知,A*一定找到最优解,所以f(n)=f*(Sg)f*(S0);若nSg,由命题3可知:

存在nopen且有f(n)f*(S0)而现在A*算法选中了n而不是n,所以必有f(n)f(n)f*(S0)即f(n)f*(S0)定定义义1若A1,A2均是A*算法,A1采用f1(x)=g1(x)+h1(x)作为估计函数,A2采用f2=g2(x)+h2(x)作为估计函数。

h1(x),h2(x)都满足:

hi(x)hi*(x),i=1,2(2-4)如果h1(x)AC分枝中任一点的值,则永远不会走B这条路,这将导致可能找不到解。

BCASg实际是1,估计21.51另外搜索的费用并不完全由搜索节点数多少来确定,若f2(n)计算远比f1(n)复杂,则在比较两个搜索算法时,必须要考虑f的计算费用。

一般来说要权衡如下三个因素:

(1)路径费用;

(2)寻找路径时所搜索的节点数;(3)计算f所需的计算量。

若h(x)满足一定限制,如单调性限制,则搜索路径几乎就是解路径,因而大大减小了搜索费用。

定定义义2一个启发式函数中的h(x)满足单调限制,可定义为:

如果对所有ni与nj,nj是ni的后继,有h(ni)h(nj)+c(ni,nj),并且h(Sg)=0,即nj到目标的最佳费用估计不会大于ni到目标的最佳费用估计加上ni至nj的费用。

这个要求相当一个三角不等式。

命命题题7估计函数若满足单调限制,那么A*所扩充的任一点(即用来求过后继的点)n必在最优路上。

证明思路:

令g*(n)代表从S0n的最优路径费用,所以一般有g(n)g*(n)(2-12)下面再利用单调限制能够证明:

g(n)g*(n)(2-13)联立(2-12),(2-13),可得g(n)=g*(n),也就说明了n位于最佳路径上。

3对对A*算法的评价算法的评价A*算法的优点有:

(1)A*算法一定能保证找到最优解。

(2)若以搜索的节点数来估计它得效率,则当启发式函数h的值单调上升时,它的效率只会提高,不会降低。

(3)有比较合理的渐近性质。

A*算法的缺点是:

在不仅考虑搜索节点的多少,而且还要考虑搜索节点被搜索的次数的时候,则当h(n)过低估计h*(n)时,有时会显出很高的复杂性。

例题:

走迷宫算法假设某个精灵从A点走到B点,而A,B点之间隔着半堵墙。

如下图所示,左边的浅色方块代表起点A,右边的浅色方块代表终点B,正中间的深灰色填充区域代表墙。

求从A点到B点的一条(最短)路径算法总结

(1)添加起始位置到OpenList中

(2)重复下面的步骤:

(2.1).在OpenList中寻找F值最低的节点,这个节点称为当前位置。

(2.2)把当前位置交换到CloseList中,即从OpenList中删除该节点并添加到CloseList中。

(2.3)对于当前位置的8个邻域,操作如下:

如果该区域走不通或该区域已经在CloseList中,则忽略该区域。

否则做下面的操作。

如果该区域不在OpenList中,则把该区域添加到OpenList中,并使该区域的父指针指向当前位置。

如果该区域已经在OpenList中,则计算一下当前区域到该区域的G累加值。

如果这个G值比原来该区域的G值还小,则说明这条路径很好。

如果是这样,将该区域的父指针指向当前区域,并重新计算该区域的G值和F值。

如果OpenList是按F值排序的,则现在需要重新排序。

(2.4)当下面任意一个条件满足时,停止搜索。

目标区域已经被加入到OpenList中,即路径找到了。

没有找到目标区域,并且OpenList已经为空,即没有可达路径。

(3)保存路径。

利用父指针从目标区域往回走直到回到起始点。

2.5问题归约与问题归约与AO*算法算法2.5.1问题归约求解方法与问题归约求解方法与“与与/或图或图”在问题求解过程中,将一个大的问题变换成若干子问题,子问题又可分解成更小的子问题,这样一直分解到可以直接求解为止,全部子问题的解即为大的问题的解,这样的过程称为问题的规约(ProblemReduction)。

并称大的问题为初始问题,可直接求解的问题为本原问题。

一般说来,归约方法求解问题需要三大要素:

1初试问题的描述。

2一组将问题变换成子问题的变换规则。

3一组本原问题的描述。

例2.13符号积分问题分解时有三种可能:

1.and2.or3.and,or都有从初始问题出发,建立子问题以及子问题的子问题,直至把初始问题规约为一个本原问题的集合,这就是问题规约的实质。

2.5.2与与/或图搜索或图搜索将问题求解归约为与/或图的时,作如下规定:

1与或图中始点(根)为原始问题描述;与或图中对应于本原问题的节点为终叶节点。

2可解节点为:

2.1终叶节点是可解节点;2.2若n为一非终叶节点,且含有“或”后继节点,则只有当后继节点中至少有一个是可解节点时,n才可解;2.3若n为一非终叶节点,且含“与”后继节点,则只有当后继节点全部可解时,n才可解。

3不可解节点:

3.1没有后继节点的非终叶节点为不可解;3.2若n为一非叶节点含有“或”后继节点,则仅当全部后继节点为不可解时,n不可解。

3.3若n为一非叶节点含有“与”后继节点,则只要有一个后继节点为不可解时,n为不可解。

4与或图中搜索费用的计算:

设从当前节点n到目标集Sg费用估计为h(n).4.1若nSg,则h(n)=0;4.2若n有一组由“与”弧连接的后继节点n1,n2,ni则h(n)=c1+c2+ci+h(n1)+h(n2)+h(ni)。

其中ci为n到ni弧的费用。

4.3若n既有“与”又有“或”弧,则“与”弧算作一个“或”后继,再取各or弧后继中费用最小者为n的费用。

2.5.3与与/或图搜索的特点或图搜索的特点1与与/或图搜索搜索费用的估计或图搜索搜索费用的估计对与对与/或图则不同,其费用计算的规则是:

或图则不同,其费用计算的规则是:

n未生成后继节点时,费用由未生成后继节点时,费用由n本身决定本身决定;n已已生生成成后后继继节节点点时时,费费用用由由n的的后后继继节节点的费用决定。

点的费用决定。

因为后继节点代表分解的子问题因为后继节点代表分解的子问题,子问子问题的难易程度决定原问题求解的难易程度,题的难易程度决定原问题求解的难易程度,所以不再考虑所以不再考虑n本身的难易程度。

因此当本身的难易程度。

因此当决定了某个路径时,要将后继节点的决定了某个路径时,要将后继节点的估计估计值往回传送。

值往回传送。

例2.14图2-35为一个与/或图的搜索过程。

第一步,A是唯一节点;第二步,扩展A后,得到节点B,C和D,因为B,C的耗费为9,D的耗费为6,所以把列D的弧标志为出自A最有希望的弧;第三步,选择对D的扩展,得到E和F的与弧,其耗费估计值为10。

此时回退一步后,发现与弧BC比D更好,所以将弧BC标志为目前最佳路径;第四步,在扩展B后,再回传值发现弧BC的耗费为12(6+4+2),所以D再次成为当前最佳路径。

最后求得的耗费为:

f(A)=min(12,4+4+2+1)=11。

以上搜索过程由两大步组成:

(1)自顶向下,沿当前最优路产生后继节点。

(2)由底向上,作估计值修正

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1