A_star算法及其研究.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
A_star算法及其研究

.引言 图论是计算机科学中的一个重要研究工具,它产生于欧拉(Euler)对图的连通性的研究,但直到本世纪计算机诞生以后才得最迅猛的发展。 图论中的最短路径问题在计算机中有着广泛的应用,例如网络通信中最短路由的选择,人工智能中搜索算法的研究等。 本文对几种常见最短路径的算法进行介绍,尤其是在1968年发展起来的A*算法。 二.?????? 常用算法简介 为叙述的方便,本文中假定所有图均以邻接矩阵表示,并将图论中的常用符号列于下: G---------------------无向图或有向图 A=[aij]----------------图G的邻接矩阵表示 V(G)------------------图G的顶点数 ε(G)-----------------图G的边数。 1. Floyd算法 这是几种最短路径算法中最简单的一种,本文不详细介绍,仅给出算法描述。 算法: For k:=1 to n do For i:=1 to n do For j:=1 to n do If A[i,j]+A[k,j]A[i,j] then ??? A[i,j]=a[i,k]+a[k,j]; ??????? 易知该算法的复杂度为o(n3)。 执行该算法后矩阵A中aij即为点i与点j间的最短路径,若要求路径的具体行程,需在算法中以数组保存路径的改变信息,这里不再介绍。 2. Dijkstra算法 这种算法是Dijkstra于1959年提出的,主要用于计算图G中的某一点u0到其它点的最短距离。 ??? 算法: Step1:令l(u0)=0;l(v)=∞;v≠u0 S0={u0};v=0; Step2:v?┑Si=V(G)-Si l(v)=min{l(v),l(uI)+ω(ui,v)} 设uI+1是使l(v)取到最小值的┑Si中的点。 令Si+1=Si∪{ui+1} Step3:If i=γ(G)-1 then Stop. If iγ(G)-1 then i=i+1,Goto Step2. 该算法的复杂度为o(n2)。它与Floyd算法相比,优点在于计算量小,缺点是每次只能计算出图G中的一个点到其它点的最短路径,但由于网络通信中对路由的选择只需计算当前点与它点的距离,故此法得以广泛应用。 3.?? 广度优先搜索算法(Broad-First-Search) 广度优先搜索算法是一种搜索策略,与之相对应的还有深度优先搜索算法。广度优先是指从图G中 的某点为始点出发,标记出所有与之相邻的点,并再以所有与之相邻的点为始点,搜索所有与这些点相邻的点,从而逐层向下扩展,实现对图的遍历。同理,深度优 先搜索是指从某点出发,逐层向下扩展,直到无路可扩展时向上回溯,它是优先考虑图的深度(指从某点的扩展深度),而广度优先则优先考虑图的广度(指从某点 的可扩展量)。由于该算法仅提供出一种搜索的策略,故它不仅可用于最短路径的搜索,事实上,图论中有很多问题均可通过此类搜索策略而得到实现。本文提出它 只是因为在A*算法中,其部分地用到了该算法的思想。这里仅给出它的思想,不再对它在最短路径中的应用介绍。 算法: Step1: v?V(G),令l(v)=0,l=0 Step2:If所有标号为l的顶点u的相关联的边皆已标号时,Then Goto Step3。 ??? Else 把与u相关联的边的未标号的顶点标以l+1,并记录这些边。 ???????????? 令l=l+1,Goto(2)。 Step3:Stop。 4. 动态规划算法 这 种算法利用动态规划理论求解最短路径,即将始点到终点的路程分为若干状态,从而将之转化为多阶段决策问题,这样就可用动态规划理论来解决。但这也必然决定 了它的局限性,即只有求解可进行状态划分的问题,而事实上有很多问题是不能进行如是转化的,但这种算法却是在这种特殊条件下的最佳算法,因而也得到一些应 用,这里不再详述。 三.?????? A*算法 1.???? 简介 A*算法是到目前为止最快的一种计算最短路径的算法,但它一种‘较优’算法,即它一般只能找到较优解,而非最优解,但由于其高效性,使其在实时系统、人工智能等方面应用极其广泛。 A*算法结合了启发式方法(这种方法通过充分利用图给出的信息来动态地作出决定而使搜索次数大大降低)和形式化方法(这种方法不利用图给出的信息,而仅通过数学的形式分析,如Dijkstra算法)。它通过一个估价函数(Heuristic Function)f(h)来估计图中的当前点p到终点的距离(带权值),并由此决定它的搜索方向,当这条路径失败时,它会尝试其它路径。 因而我们可以发现,A*算法成功与否的关键在于估价函数的正确选择,从理论上说,一个完全正确的估价函数是可以非常迅速地得到问题的正确解答,但一般完全正确的估价函数是得不到的,因而A*算法不能

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档