论文部分内容阅读
目前在GIS领域,网络分析作为其中最重要的功能之一,在电子导航、交通旅游、城市规划以及电力、通讯等各种管网,管线的布局设计中发挥了重要作用。而网络分析中最基本最重要的问题就是最短路径搜索问题。目前对最短路径搜索问题的研究和应用较多,其中最短路径搜索算法的效率问题是普遍关注和在实际应用中迫切需要解决的问题。本文通过对基于Dijkstra最短路径搜索算法的优化途径的分析,从数据存储结构和算法实现等方面同时对此问题进行了优化,提出了一个高效率的解决方案。
本文首先就目前GIS系统国内外的研究现状、现代GIS软件存在的问题以及未来GIS系统的发展方向进行了探讨,其次从最短路径算法的发展现状、算法分析及算法实现三个方面分别进行了研究。在最短路径的算法研究综述中,文中从最短路径的问题类型、网络特征、实现技术等几方面进行了Dijkstra算法与其他几种较为常见的最短路径算法的比较,从中明确了该算法在GIS领域最为适用,并对目前一些文献中提出的优化方案进行了比较。
在最短路径的算法分析研究中,主要阐述了“面向网络海量空间信息的大型GIS”的数据基础,给出了其中部分地理网络目标的详细数据定义。并详细描述了地理网络对象模型图。其次,对于经典Djikstra算法步骤进行了较为深入的讨论。项目采用了ESRI为GIS系统提出的Shapefile文件存储结构作为数据存储基础,对该文件结构进行了较为详细的分析。在最短路径的算法分析基础上,对最短路径算法的优化及实现过程进行了重点研究。首先就大型GIS系统的地理网络特征而言,对比邻接矩阵,十字链表等存储结构,确定了使用邻接表的结构来存储网络是最为高效的。其次在计算结点的邻接点时,提出了一种方便的解决方案,在内存中开辟数组,将数组的下标与某结点点号相对应,可以快速计算出该结点的出度,从而通过弧段起点数组和弧段终点数组的对应关系可以找到该结点的邻接点。最后,在对Dijkstra算法的实现过程中,对其中的一个关键步骤——搜索最小权值的顶点进行了优化,针对快速排序算法的不稳定性,提出了改进的搜索方案,使用折半插入排序函数对最短路径值数组重新进行地址排序,以减少查找次数,提高排序的效率。可使排序的平均时间复杂度从O(n2)降低到O(n)。通过对优化算法的评价,表明了本文提出的优化算法是高效率的。
在理论研究的基础上,编程实现了该算法。通过编程生成随机数据的实验方法对该优化算法进行了验证,结果显示在30000个结点,36万条弧段的较大数据量下,该算法能够迅速的计算完成,取得了较好的效果。