A算法的改进课程设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
A算法的改进课程设计

课程设计说明书 NO.1 A*最短路径算法的改进 1.课程设计的目的 本课程设计是学习《数据通信与通信网技术》课程必要的教学环节为使学生取得最现代化的技能和研究方法训练就成为一个重要教学环节。A*(A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。注意是最有效的直接搜索算法。之后涌现了很多预处理算法(ALT,CH,HL等等),在线查询效率是A*算法的数千甚至上万倍。公式表示为: f(n)=g(n)+h(n),其中 f(n) 是从初始点经由节点n到目标点的估价函数,g(n) 是在状态空间中从初始节点到n节点的实际代价,h(n) 是从n到目标节点最佳路径的估计代价。保证找到最短路径(最优解的)条件,关键在于估价函数h(n)的选取:估价值h(n)= n到目标节点的距离实际值,这种情况下,搜索的点数多,搜索范围大,效率低。 图1 A*算法与Dijkstra算法搜索区域对比 A* 算法的估价函数 A* 算法的关键在于设计一个合适的启发函数。有文 献对其特点进行了分析, 认为启发函数 f* (j)值是非递减 的,只要能够满足相容性条件即估价函数 h* ( j)小于节点 j到目标点的实际费用,它生成的路径一定是最优的。许多文献都在估价函数的构造中引入了距离和方向两个要素 ,即: h*(j) = w1* L+w2*如图2所示。 其中 L 表示当前节点到终点的欧氏距离,表示起点到当前节点的线段与当前节点到终点的线段的夹角即 SjE,有文献也用到了中间节点与关联节点的线段和关联节点与终点的线段夹角 NjE。w1和w2分别是距离和角度的加权值,w1和w2 的取值范围分别为 055- 0.65和0.35-0.45。但距离和角度的单位不统 一的问题不能忽略,即使角度的单位为弧度、距离的单位 为千米,它们之间也很有可能出现距离值远大于角度值 (即 L )的情况,特别是在大区域路径规划过程中,问题更明显。 沈 阳 大 学 课程设计说明书 NO.5 而当 L时, 方向不再有约束力,而使得估价函数失去意义。 A* 算法的运行结构 当构造合适的估价函数后就要考虑算法的运行,目前大多数方法是将全部数据读入到内存当中, 然后搜索 最短路径。从理论上讲, A* 算法可以通过搜索更少的节 点完成最短路径的搜索。但是算法运行时,必须要考虑两个问题:一是数据读取的速度。即使可以很快地将数 据读入到内存中,我们也还要考虑第二个问题, 即系统内 存的大小。如果系统内存足够大,在算法运行过程中,也将会出现对同一节点进行重复的搜索,从而降低算法的运行效率。针对数据的读取问题,有学者提出了基于限 制区域的A* 算法,减小数据的加载量。但是由于A* 算法本身就是一种有损算法, 这种方法很有可能搜索 不到最短路径, 特别是在考虑道路属性信息和交通限制信息时。 图2 估价函数构造示意图 改进的 A* 算法 (1) A* 算法估价函数的改进针对A* 算法估价函数所出现的问题,我们将距离和角度进行归一化处理,即首先计算当前节点所有关联节点相应的距离和角度值,然后求它们的平均值即 L,从而使得估价函数 变为: h* (j) = w1* L + w2* (5) 其中: L= L/L (6)=/(7) 归一化处理以后,只考虑距离和角度对路径的贡献,而不必考虑距离和角度的数值大小。从而避免了距离和 角度单位不统一的问题。虽然算法的运行要增加计算 量, 但是我们可以通过进一步减小算法的搜索空间, 改善 算法的运行结构来提高算法的搜索效率。 沈 阳 大 学 课程设计说明书 NO.6 针对算法运行效率的问题, 建立k-d树空间索引结构, 动态加载路网数据, 从而提高算法效率不失为一个好方法。 k- d树索引结构是 k( k 1)的二叉检索树,主要用于索引多属性的数据或多维点数据, 它可以通 过坐标快速的访问区域中的路网数据。在算法执行过程中,并非开始就装载所有的路网数据,而是根据算法的需要,读取节点的相关信息,或删除节点信息,虽然会增加运算过程中的 I/O运算,但是这样可以避免无效数据的大量装载,占用大量的内存空间。例如,首先判断当前节点是否在确定的范围内, 如果不在则装载相应区域的数据,如果在确定的范围内,则读取数据的相关信息,并进行节点扩展。然后,在此基础上计算路段的启发值,搜

文档评论(0)

kaiss + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档