- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java Floyd算法求解最短路徑问题(完整程序代码)
交通运输学院课程设计
PAGE 17
引言
在图论中经常会遇到这样的问题,在一个有向图里求出任意两个节点之间的最短距离。当节点之间的权值是正值的时候,我们可以采用Dijkstra算法,用贪心策略加于解决。但当节点之间的权值有负数的时候,Dijkstra就行不通了,这里介绍另外一种算法—Floyd最短路径算法。对于任意图,选择存储结构存储图并实现FLOYD算法求解最短路经。将问题分解,分解为两方面。一是对于任意图的存储问题,第二个是实现FLOYD算法求解最短路经。首先对于图的创建选择合适的存储结构进行存储,对于合适的存储结构可以简化程序。本实验采用邻接矩阵存储。然后是实现FLOYD算法求解最短路经,在FLOYD算法中路径的长度即是图中两定点间边的权值,FLOYD算法要求输出任意两个顶点间的最短路径,而且经过的顶点也要输出。考虑到问题的特殊性,采用一个二维数组和一个三???数组进行存储。二维数组存储最短路径,三维数组存储路径经过的顶点,在进行适当的算法后对这两个数组进行输出即可。通过问题的分解,逐个解决,事先所要求的程序。
最短路径算法问题是计算机科学、运筹学、地理信息系统和交通诱导、导航系统等领域研究的一个热点。传统的最短路径算法主要有Floyd算法和Dijkstra算法。Floyd算法用于计算所有结点之间的最短路径。Dijkstra算法则用于计算一个结点到其他所有结点的最短路径。Dijkstra算法是已经证明的能得出最短路径的最优解,但它的效率是一个很大的问题。对于具有n个结点的一个图,计算一个结点到图中其余结点最短路径的算法时间复杂度为O(n2)。对于一座大中型城市,地理结点数目可能达到几万个到几十万个,计算最短路径的时间开销将是非常巨大的。本文根据吴一民老师的建议,分析当前存在的各种求最短路径的算法,提出一种新的基于层次图的最短路径算法,即将一个平面图划分若干子图,子图抽象为一个高层图。最短路径的计算首先在高层图中进行,缩小了最短路径的查找范围,降低了最短路径计算的时间开销。由于可以动态计算子图间的阻抗函数,算法可适用于动态交通诱导系统。
设计目的(1)培养学生分析解决问题的能力,掌握java语言的程序设计方法;(2)通过课程设计实践,训练并提高学生在统筹全局、结构设计、查阅设计资料和计算机编程方面的能力;(3)提高学生实践论文撰写能力。
任务与要求: (1) 理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式进行书写和装订;(2) 课程设计报告(论文)包括要求的作业。
第一章 Floyd算法
1.1 最短路的定义
最短路径问题是图论研究中的一个经典算法,旨在寻找图中两结点之间的最短路径。算法的具体形式包括:确定起点的最短路径问题即已知起始结点,求最短路径问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路经反转的确定起点的问题。确定起点终点的最短路径问题即已知起点和终点求两结点之间的最短路径。求距离最短路径问题求图中所有的最短路径。用于解决最短路径问题的算法被称为最短路径算法。
单源最短路 定义:给定一个赋权有向图G =(V,E),记G中每一条弧aij=(vi,vj)上的权为W(aij)=Wij,有给定G中的一个起点s和重点t,设p是G中从s到t的一条路,则定义路径p的权是p中有弧的权之和,记为W(p),即:
W(p)=
又若p*是图G中从s到t的一条路径,且满足
W(p*)=min{W(p)|p为Vs到Vt的路}
试中对G的所有从s到t的路p取最小,则称p*为从s到t的最短路,W(p*)为s到t的最短距离。在一个图G中,求从s到t的最短路径和最短距离问题就称为最短路径问题。
1.2 Floyd的定义与思想
1.2.1 Floyd算法的定义
Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。
1.2.2 Floyd 算法的思想
利用一个三重循环产生一个存储每个结点最短距离的矩阵.弗洛伊德算法仍然使用图的邻接矩阵arcs[n+1][n+1]来存储带权有向图。算法的基本思想是:设置一个n x n的矩阵A(k),其中除对角线的元素都等于0外,其它元素a(k)[i][j]表示顶点i到顶点j的路径长度,K表示运算步骤。开始时,以任意两个顶点之间的有向边的权值作为路径长度,没有有向边时,路径长度为∞,当K=0时, A (0)[i][j]=arcs[i][j],以后逐步尝试在原路径中加入其它顶点作为中间顶点,如果增加中间顶点后,得到的路径比原来的路径长度减少了,则以此新路径代替原路径,修改矩阵元素。具体做法为:??
第一步,让所有边上加入中间顶点1,取A[i][j]与A[i][1]+A[1][j]中较小的值作A[i][j]
您可能关注的文档
最近下载
- 成人胃残余量超声监测技术规范.docx VIP
- 金属冶炼企业安全生产管理人员:事故应急处置和案例分析.ppt VIP
- 采购降本推进计划.pdf VIP
- 定制产品合同协议.docx VIP
- 恒大地下车库VI标识标牌标准化方案(超豪华版)恒大地产集团.pdf VIP
- 【教学课件】《人体对外界环境的感知》(人教).ppt VIP
- 滚动轴承外球面球轴承和偏心套外形尺寸.pdf VIP
- 第一单元第四课《上学路上》教案 湘美版(2024)一年级上册.doc VIP
- 突发事件应急预案.doc VIP
- 2024年03月上海市公安局浦东分局2024年上半年度招考文员笔试上岸试题历年典型考题与考点剖析附带答案解析.docx VIP
文档评论(0)