图论最短路径分析及应用文档格式.docx
《图论最短路径分析及应用文档格式.docx》由会员分享,可在线阅读,更多相关《图论最短路径分析及应用文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
最短路问题是图论理论的一个经典问题。
寻找最短路径就是在指定网络中两结点间找一条距离最小的路。
最短路不仅仅指一般地理意义上的距离最短,还可以引申到其它的度量,如时间、费用、线路容量等。
最短路径算法的选择与实现是通道路线设计的基础,最短路径算法是计算机科学与地理信息科学等领域的研究热点,很多网络相关问题均可纳入最短路径问题的范畴之中。
经典的图论与不断发展完善的计算机数据结构及算法的有效结合使得新的最短路径算法不断涌现。
2最短路
2.1最短路的定义
对最短路问题的研究早在上个世纪60年代以前就卓有成效了,其中对赋权图
的有效算法是由荷兰著名计算机专家E.W.Dijkstra在1959年首次提出的,该算法能够解决两指定点间的最短路,也可以求解图G中一特定点到其它各顶点的最短路。
后来海斯在Dijkstra算法的基础之上提出了海斯算法。
但这两种算法都不能解决含有负权的图的最短路问题。
因此由Ford提出了Ford算法,它能有效地解决含有负权的最短路问题。
但在现实生活中,我们所遇到的问题大都不含负权,所以我们在
的情况下选择Dijkstra算法。
定义①1若图G=G(V,E)中各边e都赋有一个实数W(e),称为边e的权,则称这种图为赋权图,记为G=G(V,E,W)。
定义②2若图G=G(V,E)是赋权图且
若u是
到
的路
的权,则称
为
的长,长最小的
称为最短路。
若要找出从
的通路
使全长最短,即
。
2.2最短路问题算法的基本思想及基本步骤
在求解网络图上节点间最短路径的方法中,目前国内外一致公认的较好算法有迪杰斯特拉(Dijkstra)及弗罗伊德(Floyd)算法。
这两种算法中,网络被抽象为一个图论中定义的有向或无向图,并利用图的节点邻接矩阵记录点间的关联信息。
在进行图的遍历以搜索最短路径时,以该矩阵为基础不断进行目标值的最小性判别,直到获得最后的优化路径。
Dijkstra算法是图论中确定最短路的基本方法,也是其它算法的基础。
为了求出赋权图中任意两结点之间的最短路径,通常采用两种方法。
一种方法是每次以一个结点为源点,重复执行Dijkstra算法n次。
另一种方法是由Floyd于1962年提出的Floyd算法,其时间复杂度为
虽然与重复执行Dijkstra算法n次的时间复杂度相同,但其形式上略为简单,且实际运算效果要好于前者。
Dijkstra算法基本步骤:
令:
并令:
{
1、对
,求
2、求
得
,使
令
3、若
则已找到
的最短路距离
,否则令
从
中删去
转1
这样经过有限次迭代则可以求出
的最短路线,可以用一个流程图来表示:
第一步先取
意即
的距离为0,而
是对
所赋的初值。
第二步利用
已知,根据
对
进行修正。
第三步对所有修正后的
求出其最小者
其对应的点
是
所能一步到达的店
中最近的一个,由于所有
因此任何从其它点
中转而到达
的通路上的距离都大于
直接到
的距离
,因此
就是
的最短距离,所以在算法中令
并从s中删去
,若k=n则
的最短路线,计算结束。
否则令
回到第二部,计算运算,直到k=n为止。
这样每一次迭代,得到
到一点
的最短距离,重复上述过程直到
Floyd算法的基本原理和实现方法为:
如果一个矩阵
其中
表示i与j间的距离,若i与j间无路可通,则
为无穷大。
i和j间的最短距离存在经过i和j间的k和不经过k两种情况,所以可以令
n(n为节点数)。
检查
与
的值,在此,
分别为目前所知的i到k与k到j的最短距离,因此,
就是i到j经过k的最短距离。
所以,若有
就表示从i出发经k再到j的距离要比原来的i到j距离短,自然把i到j的
写成
每当一个k搜索完,
就是目前i到j的最短距离。
重复这一过程,最后当查完所有k时,
就为i到j的最短距离。
3最短路的应用
例2从北京(Pe)乘飞机到东京(T)、纽约(N)、墨西哥城(M)、伦敦(L)、巴黎(Pa)五城市做旅游,每城市恰去一次再回北京,应如何安排旅游线,使旅程最短?
各城市之间的航线距离如下表:
L
M
N
Pa
Pe
T
56
35
21
51
60
57
78
70
36
68
61
13
解:
编写程序如下:
clc,clear
a(1,2)=56;
a(1,3)=35;
a(1,4)=21;
a(1,5)=51;
a(1,6)=60;
a(2,3)=21;
a(2,4)=57;
a(2,5)=78;
a(2,6)=70;
a(3,4)=36;
a(3,5)=68;
a(3,6)=68;
a(4,5)=51;
a(4,6)=61;
a(5,6)=13;
a(6,:
)=0;
a=a+a'
;
c1=[51:
46];
L=length(c1);
flag=1;
whileflag>
flag=0;
form=1:
L-3
forn=m+2:
L-1
ifa(c1(m),c1(n))+a(c1(m+1),c1(n+1))<
a(c1(m),c1(m+1))+a(c1(n),c1(n+1))
flag=1;
c1(m+1:
n)=c1(n:
-1:
m+1);
end
end
sum1=0;
fori=1:
sum1=sum1+a(c1(i),c1(i+1));
circle=c1;
sum=sum1;
c1=[561:
4];
%改变初始圈,该算法的最后一个顶点不动
...
a(c1(m),c1(m+1))+a(c1(n),c1(n+1))
ifsum1<
sum
sum=sum1;
circle=c1;
circle,sum
4结语
本文将最短路理论应用到实际生活中,同时也凸显出学习和应用最短路问题原理的重要性。
另外,最短路问题在城市道路建设、物资供应站选址等问题上也有很重要的作用。
分析和研究最短路问题趋于热门化。
参考文献:
【1】卜月华图论及其应用南京:
东南大学出版社,2000
【2】基于图论的舰船通道路线优化余为波王涛2008
【3】最短路问题在运输网络中的应用李玲2006
【4】戴文舟.交通网络中最短路径算法的研究[D].重庆大学硕士学位论文,2004.
【5】谢灼利,等.地铁车站站台火灾中人员的安全疏散[J].中国安全科学学报,2004,14(7):
21.
【6】荣玮.基于道路网的最短路径算法的研究与实现.武汉理工大学硕士学位论文[D],2005.
【7】朱建青,张国梁.数学建模方法M.郑州大学出版社.
【8】杨民助,运筹学M.西安交通大学出版社.
【9】殷剑宏,吴开亚.图论及其算法M.中国科学技术出版社.
【10】王朝瑞.图论M.国防工业出版社.
【11】姚思瑜.数学规划与组合优化M.浙江大学出版社.
【12】秦裕瑗,秦明复.运筹学简明教材M.高等教育出版社.