改进的dijkstra算法

上传人:今*** 文档编号:105924118 上传时间:2019-10-14 格式:DOCX 页数:15 大小:376.20KB
返回 下载 相关 举报
改进的dijkstra算法_第1页
第1页 / 共15页
改进的dijkstra算法_第2页
第2页 / 共15页
改进的dijkstra算法_第3页
第3页 / 共15页
改进的dijkstra算法_第4页
第4页 / 共15页
改进的dijkstra算法_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《改进的dijkstra算法》由会员分享,可在线阅读,更多相关《改进的dijkstra算法(15页珍藏版)》请在金锄头文库上搜索。

1、湖北文理学院毕 业 论 文 (设 计)论文(设计)题目: Dijkstra算法在嵌入式GIS中的改进与研究 学 院 继续教育学院 专 业 计算机应用技术 层 次 专 科 学 生 周金涛 指导教师 2016年5月20日- II -Dijkstra算法在嵌入式GIS中的改进与研究专业:计算机应用技术 学号:201421255 姓名:周金涛 指导教师:摘要:Dijkstra算法是求解嵌入式GIS系统中最短路径的经典算法,通过对Dijkstra算法进行分析,改变图的存储结构和搜索方法,采用基于矩形限制区域的二叉排序树改进算法,减少了内存存储空间,缩短了查询时间,在一定程度上优化了最短路径的计算过程,实

2、际数据测试也表明了该算法的有效性。关键词:Dijkstra算法;嵌入式GIS;最短路径;矩形限制区域;二叉排序树Research and Improvement of Dijkstra Algorithm to Embedded GIS SystemAbstract: Dijkstra algorithm is a classic algorithm to solve the shortest path in the embedded GIS system. Changing the storage structure of the graphics and the search method

3、, Dijkstra algorithm is modified by using binary sort tree based on rectangle boundary area through analyzing algorithm. The memory space needed is decreased and the search time is shortened and the algorithm has optimized calculation process in some degree. The algorithm is achieved good results by

4、 testing some data. Key Words: Dijkstra algorithm; embedded GIS; shortest path; rectangle boundary area; binary sort tree目 录一、引言1二、Dijkstra算法及其存在的问题1三、基于Dijkstra算法的GIS路径优化2(一)改进的方面2(二)网络路径优化的拓扑结构3(三)限制搜索区域加载部分网络模型4(四)Dijkstra算法的优化改进5四、算法分析及测试7五、总结8参考文献9一、引言随着无线网络的普及和智能移动设备的发展,嵌入式移动终端成为空间信息服务的核心组成和数字

5、城市的重要服务方式。最短路径分析是GIS中最主要的一个基本功能,其中Dijkstra算法1由于算法稳定,适应网络拓扑,成为最短路径规划中的一个经典算法。但由于Dijkstra算法是一种以起点为中心,想外层层搜索的盲目搜索算法,随着网络规模的扩大,对于嵌入式GIS无论是计算时间还是存储空间上的需求都是十分巨大的,必须进行优化。许多基于Dijkstra的最短路径分析算法对此进行了改进。TQQ算法、DKA算法、DKD算法2以及最大相关边法3、最大邻接点法4减少了算法对存储空间的需求,基于二叉堆优先级队列算法、四叉堆优先级队列的算法5以及排序优化算法6则提高了算法的运行效率。这些算法或是节省了存储空间

6、但导致系统的响应速度变慢,或是搜索时间变短但占用大量的存储资源,无法在嵌入式GIS系统中正常运行。直线优化Dijkstra算法7和快速Dijkstra优化算法8对算法本身和存储结构都进行了优化,但前者不太适合城市间道路的交通复杂情况,而且搜索过程中需要进行大量空间距离计算,而后者使用的村树结构十字链表过于复杂。因此,笔者试图对Dijkstra算法进行数据结构和运算方法的优化处理,并将其应用于GIS路径分析,希望能够同时提高时间与空间效率。二、Dijkstra算法及其存在的问题经典Dijkstra算法将网络节点分成3部分:未标记结点、临时标记结点和永久标记结点。网络中所有结点首先初始化为未标记结

7、点,在搜索过程中与最短路径中的结点相连通的结点为临时标记结点,每次循环都是从临时标记结点中搜索距源点路径长度最短的结点作为永久标记结点,直至找到目标结点或者所有结点都成为永久标记结点,算法结束。设G=(V, E)是一个赋权有向图,对于图中的每一条边都有权值w。单源的最短路径问题是指求一源结点到其他所有结点的最短路径及路径长度。算法中把V分成两个子集S和T,S集合用来存放已经得到的最短路径的结点,集合T满足T=VS,用来存放目前还没有参与计算的结点。设长度为N的一位数组DistN,用来存放从源点到图中其他结点的最短路径长度。设二维数组path_matrix,该矩阵用来记录源点到图中其他每个结点的

8、最短路径所经过的结点的集合,可以根据该矩阵进行路径回溯。Dijkstra算法的流程如下:(1) 初始化集合S和集合T;(2) 利用图的邻接矩阵来初始化DistN数组;(3) 初始化path_matrix,使其中元素都为无穷大;(4) 从DistN中选择最小的元素,假设此最小元素对应结点的索引为i,即结点i;(5) 将结点i加入到集合S中,同时从集合T中删除结点i;(6) 根据结点i来更新距离数组DistN,只更新源点到集合T中的结点之间的距离,更新过程如下:if( Distj Disti + path_matrixij )Distj = Disti + path_matrixij;(7) 如果

9、集合T不为空,则返回(3);如果集合T为空,则结束算法。Dijkstra算法简单直观,容易编码实现,已经证明能够计算出最短路径的最优解,有非常强的鲁棒性,但它的计算效率是一个很大的问题。首先它采用带权的邻接矩阵存储图形数据,占用大量存储空间;而且它是一种盲目搜索算法,对于具有n个结点的图,计算源点到图中所有其余结点的最短路径的算法时间复杂度为O(n2),对于一座大中型城市,无论是计算时间还是存储空间上的开销都是十分巨大的。算法的搜索速度受图的存储结构的影响:搜索速度快,则图的存储空间就小;反之,图的存储空间大,则会降低搜索速度。所以经典的Dijkstra算法不适合CPU处理能力较低、存储空间较

10、小的嵌入式GIS,必须对其进行优化。三、基于Dijkstra算法的GIS路径优化(一)改进的方面本文在改进时间与空间效率方面进行了以下重要改进:(1) 采用了一种新型的网络存储模型;(2) 采用矩形限制区域,结合方向优化,分块加载地图数据,限制搜索区域;(3) 采用二叉排序树优化搜索临时结点。(二)网络路径优化的拓扑结构传统的Dijkstra算法在存储图形数据和运算时,采用nn的邻接矩阵,其中n为网络模型的结点数。但是当网络模型的节点数较大时,将占用大量的计算机内存。而且在网络的节点数很大而各结点的邻接结点数又不多的情况下,有大量的无效的0元素或元素,造成了空间的浪费。在此基础上进行矩阵运算,

11、必将浪费大量运行时间。为了避免空间的浪费,本文的优化Dijkstra算法拟采用邻接结点的结构。该结构通过构造邻接矩阵和判断矩阵以实现拓扑数据的存储。邻接矩阵用来存储结点之间的邻接关系,判断矩阵用来存储邻接矩阵中对应弧的权值。这样只需要2nm的存储空间,m为最大邻接结点数,城市道路的相邻一般不超过5个,所以占用空间为2n5。(1) 构造邻接矩阵。以结点为行,邻接的结点为列,矩阵的行数为网络模型的实际结点数,列数为网络模型的最大相邻结点数。邻接矩阵的行按结点的索引号从小到大顺序排列,与结点i邻接的结点号写在矩阵的第i行,如果结点i的邻接结点数小于最大邻接结点数,则用0填充,直至填满矩阵;(2) 构

12、造判断矩阵。对照邻接矩阵,用邻接矩阵里的各个元素的邻接关系对应的弧的权值填在矩阵的同一个位置上,就得到了相应的判断矩阵;针对图1所示的网络模型,邻接矩阵和判断矩阵如图2所示。这种存储结构既节省了存储空间,也提高了运算速度。图1 网络模型实例 (a)邻接矩阵 (b)判断矩阵 图2 邻接矩阵和判断矩阵实例(三)限制搜索区域加载部分网络模型对于嵌入式系统,考虑硬件计算环境的限制,不需要一次性加载所有的网络模型信息。本文采用的矩阵限制区域地图数据选择法9,以用户输入的起点和重点为地图数据选择的参考点,在参考点的基础上,按照一定的规则扩大范围以生成最初的矩形区域。GIS两点之间除空间距离关系之外,还有方

13、向的关系,理想状态下,两点之间线段最短,这条线段作为一条道路存在的可能性极小,但这条从起点至终点的线段代表了一个路线的趋势方向,顺着这个趋势方向的某条路径是起点到终点的最短路径的组成部分的可能性极大。因此在实际搜索过程中,可以借助备选结点到目标点的趋势方向来确定最佳。在矩形限制区域内遍历道路图层,求最短路径的道路的范围选择原则如下:(1) 载入用户设置的起点、终点、途经点、障碍点,以起点和终点作为矩形区域对角线上的两个顶点,确定范围,加载范围以内的数据,可以减少空间分析时所要检索的临时结点的数量;(2) 以A为起点,B为终点。设Pi为与A点的邻接点,求线段PjA与线段AB的夹角。如果夹角小于9

14、0,把Pi选入范围;否则继续计算下一个A点的邻接点Pi+1;(3) 以B为起点,A为终点。设Qj为B点的邻接点,求线段QjB与线段AB的夹角。如果夹角小于90,则把Qj选入范围;否则继续计算下一个B点的邻接点Qj+1;(4) 以所有选入范围的A点的邻接点P为起点,B为终点,进行类似(2)中的计算;同时以所有选入范围的B点的邻接点Q为起点,A为终点,进行类似(3)中的计算;(5) 对(4)中计算完成之后,再进行更深一层的计算,直到两个集合相交,就确定了算法所涉及的道路的范围子集;(6) 在道路范围自己中应用Dijkstra算法,来求A点到所有其他结点的距离,到前点为B时,算法结束,并根据path

15、_matrix矩阵回溯路径,输出路径和最短距离;(7) 如果在限制范围内没有找到一条最优的路径,则适当扩大范围,并采用分块加载数据的方法。采用矩形限制区域地图数据选择法并借助方向优化,可以有效缩小搜索范围,使得搜索结点的数量明显小于全部结点数,提高了搜索的速度。(四)Dijkstra算法的优化改进在经典Dijkstra算法中,临时标记结点无序地存储在无序表中,这无疑成为Dijkstra算法的瓶颈。因为每次在临时标记结点中搜索路径最短的结点时,都要遍历所有的临时标记结点。解决办法就是将临时标记结点按照最短路径排序,每个搜索过程不必全部遍历或者较少地遍历临时标记结点。为了减少最短路径分析过程中搜索的临时结点数量,尽快到达目标结点,优化Dijkstra算法利用二叉排序树,减少更新T集合的时间。二叉排序树是利用二叉树的结构特点来实现对元素排序的。二叉排序树的构造过程实质上就是排序的过程,它以

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号