- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘 要
寻找最短的路径到达想要去的地方在这个快节奏的时代已经变得越来越重要,它对于节约人们的时间成本具有重要意义。当前城市的规模越来越大,交通道路状况也越来越复杂,从一个地方到另一个地方可能有很多种路径,如何从众多的路径中选择距离最短或者所需时间最短的路径便成了人们关注的热点。能够选择出一条最符合条件的路径会给我们的日常生活带来极大地方便。本文就通过找重庆邮电大学几个代表性地点之间寻找最短距离路径为例,介绍经典的最短路径算法Floyd算法及其算法的实现。
关键字: 最优路径,Floyd算法,寻路
一、图论的基本知识
图论起源于的柯尼斯堡七桥问题。在柯尼斯堡的普莱格尔河上有七座桥将河中的岛及岛与河岸起来问题是要从这四块陆地中任何一块开始,通过每一座桥正好一次,再回到起点。然而无数次的尝试都没有成功。在1736年欧拉解决了这个问题,他用抽像分析法将这个问题化为第一个图论问题:即用点来代替每一块陆地,将每一座桥用联接相应的两个点的一条线来代替,相当于得到一个“图”(如下图)。柯尼斯堡七桥
欧拉证明了这个问题没有解,并且推广了这个问题,给出了对于一个给定的图可以某种方式走遍的判定法则。这项工作使成为图论〔及〕的创始人。
图论〔Graph Theory〕是数学的一个分支它图论中的是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。
? Floyd算法的基本思想:
??? 可以将问题分解,先找出最短的距离,然后在考虑如何找出对应的行进路线。如何找出最短路径呢,这里还是用到动态规划的知识,对于任何一个地点而言,i到j的最短距离不外乎存在经过i与j之间的k和不经过k两种可能,所以可以令k=1,2,3,...,n(n是地点的数目),在检查d(ij)与d(ik)+d(kj)的值;在此d(ik)与d(kj)分别是目前为止所知道的i到k与k到j的最短距离,因此d(ik)+d(kj)就是i到j经过k的最短距离。所以,若有d(ij)d(ik)+d(kj),就表示从i出发经过k再到j的距离要比原来的i到j距离短,自然把i到j的d(ij)重写为d(ik)+d(kj),每当一个k查完了,d(ij)就是目前的i到j的最短距离。重复这一过程,最后当查完所有的k时,d(ij)里面存放的就是i到j之间的最短距离了。
??? Floyd算法的基本步骤:
??? 定义n×n的方阵序列D-1, D0 , … Dn-1,
初始化: D-1=C
??? D-1[i][j]=边i,j的长度,表示初始的从i到j的最短路径长度,即它是从i到j的中间不经过其他中间点的最短路径。
迭代:设Dk-1已求出,如何得到Dk(0≤k≤n-1)
??? Dk-1[i][j]表示从i到j的中间点不大于k-1的最短路径p:i…j,
??? 考虑将顶点k加入路径p得到顶点序列q:i…k…j,
??? 若q不是路径,则当前的最短路径仍是上一步结果:Dk[i][j]= Dk-1[i][j];
??? 否则若q的长度小于p的长度,则用q取代p作为从i到j的最短路径。
??? 因为q的两条子路径i…k和k…j皆是中间点不大于k-1的最短路径,所以从i到j中间点不大于k的最短路径长度为:
Dk[i][j]=min{ Dk-1[i][j], Dk-1[i][k] +Dk-1[k][j] }
利用图论知识寻找指定两点最短路径
2.1 把实际问题转化成图论问题
图1 重庆邮电大学地图
上图为邮电大学的地图,我们在地图中选取重邮的八个地方看成是八个点(1、新世纪超市 2、三教学楼 3、数字图书馆 4、二教学楼 5、信科大楼 6、太极操场 7、老图书馆 8、31栋宿舍),用线段把每一个点与其相邻的点连接起来,从而形成一个无向图。再根据实际情况:不同地点的距离问题;路的畅通与否等给相应的边赋上权值,最后得出一个赋权图,如图2:
图2 赋权图
2.2 Floyd算法用C++实现
#includeiostream
#includevector
#includestring
using namespace std;
#define MAX_VEX_NUM 10
vectorstring allPath; //向量,用来存放所有的顶点a到顶点i的路径
vectorint all; //向量,用来存放对应路径的长度
struct M
您可能关注的文档
最近下载
- 涉密运行维护管理制度.docx VIP
- MobileFlow-大模型驱动的终端自动化测试新范式-2025研发效能最佳实践.pdf VIP
- OPPO企业AI赋能研效提升的应用与原理解析-2025研发效能最佳实践.pdf VIP
- 《第四单元 西方音乐发展史掠影学习学习项目二 音乐中的浪漫主义》七年级上册音乐人教版 教案(表格式)(2024新版).docx
- T∕CACM 1090-2018 中医治未病技术操作规范 穴位敷贴.docx VIP
- 学科教学与综合育人能力提升谈谈个人见解与感悟.docx VIP
- 新解读《GB_T 35070.3-2018停车场电子收费 第3部分:交易流程》.docx VIP
- 1 《中国人民站起来了》课件(共61张PPT)统编版高中语文选择性必修上册.pptx VIP
- CMF:中国宏观经济专题报告(第98期):读懂价格信号,稳住经济大盘.pdf VIP
- 字节跳动 研发效能提升之道-2025研发效能最佳实践.pdf VIP
文档评论(0)