- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多源最短路径Floyd算法的分析和实现
PAGE 108
多源最短路径Floyd算法的分析与实现
周玉清 张红梅
重庆市地理信息中心 400020
Email:zhouyuqing214@126.com
摘要:本文比较详细的介绍了多源最短路径的Floyd算法设计思想,并使用C语言实现了该算法,并对该算法的时间复杂度进行了讨论,在此基础上使用Rational Quantify测试了该算法的实际时间复杂度。
关键词:最短路径 Floyd算法 算法分析 GIS
Abstract: This paper introduces the thinking of the shortest path’s Floyd in great details, and implements the algorithm with C language. Also, the article analyses the time complexity of the algorithm and tests it with Rational Quantify.
Keywords: shortest path; algorithm Floyd; algorithm analysis; GIS
PAGE
PAGE 114
1. 引言
网络分析作为GIS最主要的功能之一,在电子导航、交通旅游、城市规划以及电力、通讯等各种管网、管线的布局设计中发挥了重要的作用,而网络分析中最基本、最关键的问题是最短路径问题。最短路径不仅仅指一般地理意义上的距离最短,还可以引申到其它的度量,如时间、费用、线路容量等等。相应地,最短路径问题就成为最快路径问题、最低费用问题等。对于单源点的最短路径问题,一般采用经典的最短路径算法——Dijkstra算法,只是不同系统对Dijkstra算法采用了不同的实现方法。本文对多源路径算法Floyd算法做了详细的介绍,并编程实现了该算法,最后测试了该算法的性能。
2. 多源路径Floyd算法思路
本算法采用邻接矩阵存储图的网络信息,在此用邻接矩阵cost[MAX][MAX]来表示带权有向图,若从Vi到Vj有弧,则cost[i][j]值为弧(Vi,Vj)上的权值,否则为∞。从图的邻接矩阵cost出发,求图中从Vi到Vj的最短路径长度和结点序列。节点图图l的cost矩阵如图2所示。
1
2
3
4
5
1
4
2
100
1
3
1
5
4
2
3
4
图1:节点图 图2:矩阵图
1
2
3
4
5
1
4
2
100
1
3
1
5
4
2
3
如果从Vi到Vj存在弧,则从Vi到Vj存在一条长度为cost「i][j]的路径,该路径不一定是最短路径,尚需进行n次试探。第一次判别(Vi,V1,)和(V1,Vj),即判别(Vi,V1,Vj)是否存在,若存在,则比较(Vi,Vj)和(Vi,V1,,Vj)路径,取其中最短路径,作为从Vi到Vj的中间顶点不多于一个的最短路径;第二次增加顶点V2,若(Vi……V2)和(V2……Vj)是当前找到的中间结点个数不多于一个的最短路径,则(Vi,……,V2,……,Vj)就有可能是从Vi到Vj的最短路径。将它和已经得到从Vi到Vj的中间顶点不多于一个的最短路径相比较,从中选出长度较短者作为从Vi到Vj的中间顶点不多于二个的最短路径;第三次再增加一个顶点V3,继续进行试探,以此类推。经过n次比较后,最后求得的一定是从Vi到Vj最短路径。按此算法,可以同时求得各对顶点之间的最短路径。
由上所述,随着试探时内的不断变化,递推地产生一个n×n方阵序A0,A1,A2,……,Ak……,An记录着试探的过程。
其中:A0 [i] [j] =cost[i] [j]
Ak[i][j]== min{Ak-1[i][j],Ak-1[i][k]+Ak-1[k][j]} 1≤k≤n
在计算公式中,A0[i][j]为初始值,A1[i][j]是从Vi到Vj的中间顶点个数不多于一个的最短路径;Ak[i][j]是从Vi到Vj中间顶点个数不多于K个的最短路径;An[i][j]是从Vi到Vj中间顶点个数不多于n-1个的最短路径;即An[i][j]就是从Vi到Vj的最短路径。在程序中,用数组C[i][j]来存放从顶点Vi到Vj的中间点。
算法分两部分:第一部分计算出最短路径矩阵An和中间点矩阵C;第二部分根据矩阵An和C求出给定起点到终点的最短路径值和最短路径所经过的中间点。
2.1. 计算最短路径矩阵和中间点矩阵
将网络图用表示各顶点间距离dij的相邻矩阵D=(dij)表达。若图中不存在弧(i,j),则置dij=M(M为足够大的正数)。dij按下述情况确定:若自顶点i必须经其他点才能回到i,则置dij=M
您可能关注的文档
最近下载
- DB41T 2431-2023 重点区域地质灾害风险调查评价规范(1:10000).docx VIP
- 2012 INTERNATIONAL BUILDING CODE (2012年国际建筑规范).pdf VIP
- 金龙湖养老度假基地可行性报告.doc VIP
- 光伏发电工程施工规范.docx VIP
- 渗透检测工艺规程.pptx VIP
- 质量员考试(市政质量)基础知识试卷真题(2025年新版附解析).docx VIP
- 幼儿园课件:变焦PPT.ppt
- KEF音响无线HiFi扬声器LS50 Wireless II用户手册.pdf VIP
- 一种低气味、低刺激双固化胶粘剂及其制备方法.pdf VIP
- 设计机构设置和岗位职责.docx VIP
文档评论(0)