版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最短路径问题的算法分析及建模案例TOC\o"1-3"\h\u12477一.摘要28159二.网络最短路径问题的根底知识28582.1有向图319722.2连通性4271242.3割集5169532.4最短路问题65517三.最短路径的算法研究6152563.1最短路问题的提出630853.2Bellman最短路方程6109753.3Bellman-Ford算法的根本思想7220253.4Bellman-Ford算法的步骤7217903.5实例7204383.6Bellman-FORD算法的建模应用举例8191263.7Dijkstra算法的根本思想11246233.8Dijkstra算法的理论依据11307003.9Dijkstra算法的计算步骤11104763.10Dijstre算法的建模应用举例11274473.11两种算法的分析13109151.Diklstra算法和Bellman-Ford算法思想有很大的区别131767Bellman-Ford算法在求解过程中,每次循环都要修改所有顶点的权值,也就是说源点到各顶点最短路径长度一直要到Bellman-Ford算法结束才确定下来。14230862.Diklstra算法和Bellman-Ford算法的限制14166613.Bellman-Ford算法的另外一种理解14244144.Bellman-Ford算法的改良14摘要近年来计算机开展迅猛,图论的研究也得到了很大程度的开展,而最短路径问题一直是图论中的一个典型问题,它已应用在地理信息科学,计算机科学等诸多领域。而在交通路网中两个城市之间的最短行车路线就是最短路径问题的一个典型例子。由于最短路径问题在各方面广泛应用,以及研究人员对最短路径的深入研究,使得在最短路径问题中也产生了很多经典的算法。在本课题中我将提出一些最短路径问题的算法以及各算法之间的比拟,最后将这些算法再应用于实际问题的建模问题中。关键词:计算机图论交通道路网最短路径A.Inthispaper,Computerdevelopingrapidlyinrecentyears,graphtheoryresearchalsohavebeengreatlydeveloped,andtheshortestpathproblemisatypicalproblemingraphtheory,ithasbeenappliedingeographicalinformationscience,computerscience,andmanyotherfields.Andinthetransportationnetworkoftheshortestroutebetweentwocitiesinisatypicalexampleoftheshortestpathproblem.Duetotheshortestpathproblemiswidelyusedinvariousaspects,andtheresearchersonthein-depthstudyoftheshortestpath,make
intheshortestpathproblemalsogeneratesalotofclassicalalgorithm.InthistopicI'llsuggestsomealgorithmandthealgorithmoftheshortestpathproblembetweenthecomparison,finallythealgorithmisappliedtothemodelingoftheactualproblemagain.Keywords:computergraphtrafficroadnetworkTheshortestpath前言最短路径问题是图论以及运筹学中的一个非常重要的问题,在生产实践,运输及工程建筑等方面有着十分广泛的应用。本文对图论中的最短路径问题进行分析,对其运算解法进行分析寻求比拟快捷的模型解法;主要解决的是从某个顶点到其余各个顶点的最短路径问题。本文从Floyd算法以及Dijkstra算法两种算法入手,概述了这两种方法的原理,提出了求解最短路径问题的算法思想,并且对两种算法进行分析比拟,提出改良的方法。一网络最短路径问题的根底知识图11.1图图G是一个〔无向〕图,其中有序二元组〔V,E〕,V={,,...}是顶点集,E={}是集,是一个无序二元组{,}它表示该边连接的是顶点,。图1就是一个图。注释:图形的大小,位置,形状是无关紧要的。假设={,}那么称连接和;点和称为的顶点,和是邻接的顶点;如果两条边有公共的一个顶点,那么称这两边是邻接的。1.2无环图定义:没有环的图称之为无环图。1.3简单图定义:没有环且没有重边的图称之为简单图。设G=〔V,E〕是一个简单图,那么有|E|不大于|V|〔|V|-1〕/21.4完全图定义:假设上式的等号成立那么该图中每对顶点恰好有一条边相连,那么称该图为完全图。1.5有向图定义:一个有向图G是一个有序二元组〔V,A〕,V={,,...,}是顶点集,A={}称为G的弧集,为有序二元组。称为连向的弧,为的出弧,的入弧;称为的得尾,称为aij的头;称为的前继,称为的后继。图2就是一个有向图。图21.6环定义:头尾重合的弧称为环。1.7简单有向图定义:没有环和重弧的有向图称为简单有向图。1.8完全有向图定义:设G=〔V,E〕是一个简单有向图,那么|A|不大于|V|〔|V|-1〕,假设等号成立那么称这样的图为完全有向图。1.9途径,迹,路定义:设图G=〔V,E〕,假设它的某些顶点与边可以排成一个非空的有限交错序列〔,,,...,〕,这里该途径中边互不相同,那么称为迹;如果顶点互不相同,那么称之为路。显然路必为迹,但反之不一定成立。1.10连通图定义:图G中如果存在一条从顶点到的途径,那么称和是连通的。如果图G中任何两个顶点都是连通的,那么称G是连通图。1.11有向途径定义:设有一个有向图G=〔V,A〕,G中某些顶点与弧组成的非空有限序列〔,,,,...,,〕这里,...,V,A,且=〔,〕,那么称它为从到的有向途径。类似的可定义有向迹,有向路,有向闭途径,有向闭迹,有向回路〔圈〕等。当G时简单有向图时,从到的一条有向途径可简记为〔,...,〕。二最短路问题定义:所谓最短路径是指如果从图中某一顶点〔称为源点〕到达另一顶点〔称为终点〕的路径可能不止一条,如何找到一跳有向路径使得沿这条路径上各弧的权值总和最小。2.1最短路问题的提出某旅客要从杭州乘飞机前往奥地利的萨尔斯堡,因为他害怕乘坐飞机,因此要选择一条航线,使得在空中飞行的时间尽可能的少。如何选择航线以到达要求。为此构造一个无向网络总可以化成有向网络。设G=〔V,A,w〕是一个有向网络,p为G中一条有向路,称w〔P〕=为路径p的路长。现找网络中一条从指定顶点vi到另一个指定顶点vj的最短有向路径。三最短路径算法研究3.1Dijkstra算法3.11Dijkstra算法的根本思想对网络中每个顶点赋一个标号,用来记录从顶点到该顶点的最短路的长度〔称为永久标号〕或最短长度的上界〔称为临时标号〕。算法开始时,只有顶点被赋予永久标号=0,其他顶点赋予临时标号。一般的,算法在被临时标号的顶点中寻找一个顶点,其临时标号最小,然后将赋予永久标号,并且对其余临时标号的顶点vj按照方式修正其标号。算法在所有顶点被赋予永久标号时结束。3.12Dijkstra算法的理论依据对于S中任意一顶点,其永久标号都是从顶点到该顶点的最短路的长度。对于R中任意一顶点,其临时标号都是从顶点出发,只经过S中顶点到达该顶点的最短路的长度。3.13Dijkstra算法的计算步骤最短路径问题是指在一个赋予权值的图的两个指定节点和v之间找出一条具有最小权值的路。Dijkstra算法是一个解最短路径问题的算法,这个算法不仅可以找到最短的〔,v〕,路径而且可以给出从到图中所有节点的最短路径,根本步骤如下:设=0,对所有节点来说,设=,并且将标号为0,→t,d为和w之间的权值〔距离〕。按照每个没有标号的节点w计算,,表示节点t到节点w之间的权值。如果标号被修改了说明在当前得到的到w的最优路径上t和w相邻,用记录下来在所有中选择一个最小的即,w未标号。将s标号为/,表示节点到s的最优路径的长度且与s相邻。如果重点v已经标号,那么停止。得到一条从到v的最优路径。否那么s→t,反向。按照上述步骤继续计算。3.14Dijstre算法的建模应用举例某城市要在该城市所辖的8个区中的区建立一个取水点,如下图的是这8个区之间的分布以及相邻各区的距离。现要从区向其他各区运水,求出区到其他各区的最短路径。先写出带权邻接矩阵:W=因为G是无向图,所以W是对称矩阵。迭代次数1020218328104831058610126710127912812最后标记L〔v〕021736912Z〔v〕因此得到最短路径为:迭代次数最后标记L〔v〕021736912Z〔v〕由上表可得到到各点的最短路径为:;;,,;;;,,;,。上述Dijkstra算法的MATLAB代码:w=[0218infinfinf;20inf61infinfinf;1inf07infinf9inf;8670512inf;inf1inf503inf9;infinfinf13046;infinf92inf403;infinfinfinf9630]n=size(w,1);w1=w(1,:);%赋初值%fori=1:nl(i)=w1(i);z(i)=1;ends=[];s(1)=1;u=s(1);k=1;whilek<n%更新l(v)和z(v)%fori=1:nforj=1:kifi~=s(j)ifl(i)>l(u)+w(u,i)l(i)=l(u)+w(u,i);z(i)=u;endendendendl,z%求v*L1=1;fori=1:nforj=1:kifi~=s(j)l1(i)=l1(i);elsel1(i)=inf;endendendlv=inf;fori=1:nifl1(i)<lvlv=l1(i);v=i;endendlv,vs(k+1)=vk=k+1u=s(k)endl,z3.2FLOYD算法3.21FLOYD算法的根本思想直接在图的带权邻接矩阵中使用插入顶点的方法依次构造出n个矩阵,...,,使得最终得到的矩阵成为图的距离矩阵,并且同时求出插入的点的矩阵以便于得到两点间的最短路径。3.22FLOYD算法原理〔1〕FLOYD算法求路径矩阵的方法:在建立距离矩阵的同时可建立路径矩阵R。每一次求到一个时,按照以下的方式产生相应的新,即当被插入在任何两点间的最短路径时,被记录在中,依次求时求得,可由来查找任何两个点之间的最短路径。〔2〕FLOYD算法查找最短路径的方法:如果,那么点是点到点的最短路的中点。用同样的方法再查找,如果:〔1〕向点查找得:,,...,。〔2〕向点查找得:,,...,。那么从点到的最短路径为:,,...,,,,,...,,3.23FLOYD算法的算法步骤Floud算法算法目的:求任意两个顶点间的最短路径。:表示到之间的距离。:表示到之间的插入点。起始:选定带权值的邻接矩阵〔1〕赋值:对所有的,,,,1。〔2〕更新,对所有的,,如果,那么,。〔3〕如果=,那么算法终止;否那么,再次回到〔2〕,以此类推。3.24FLOYD建模应用举例某个城市要建立一个消防站,为该城市所属的七个区效劳,如下图。问应该把这个消防站设置在哪个区,才能使该消防站到最远的区的路径最短。用Floyd算法求出各点之间的距离,得到表格:0351075.57302742.54520524.5610750378.57423045.55.52.54.57401.57468.55.51.50从上表可以得出距离矩阵计算在各点设立效劳设施的最大效劳距离,。,,,,,,由于=那么应该将消防站设置在处。上述Floyd算法的MATLAB算法代码为:clear:w=[0,3,inf,inf,inf,inf,inf;3,0,2,inf,1.8,2.5,inf;inf,2,0,6,2,inf,inf;inf,inf,6,0,3,inf,inf;inf,1.8,2,3,0,4,inf;inf,2.5,inf,inf,4,0,1.5;inf,inf,inf,1.5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋拆除施工合同书参考例
- 《基因突变上》课件
- 妙笔绘花颜融情醉秋香-初中语文八年级上册 第三单元《学习描写景物》 情境化公开课一等奖创新教学设计
- 统编版语文三年级上册第五单元习作我们眼中的缤纷世界 公开课一等奖创新教学设计(共两课时)
- 2024年抗静电剂项目资金申请报告代可行性研究报告
- 年产xxx轻质硅酸钙砌块项目可行性研究报告(投资方案)
- 年产xx内燃机项目可行性研究报告(项目建议书)
- 凸板门项目可行性研究报告
- 新建中低产田综合开发改造项目立项申请报告
- 年产xxx轮式平开门机项目可行性研究报告(项目说明)
- 森林火灾中的自救与互救课件
- 数据新闻可视化
- 中学生应急救护知识讲座
- ISO9001质量管理体系培训教材
- 纸质文物保护修复的传统及现代技术研究
- 前庭周围性眩晕个案护理
- 帕金森病患者认知功能障碍的评估与处理
- 金属热处理设备行业分析
- 达州市消防救援支队智能接处警和智能指挥系统暨全国消防
- 银行系统的数字化转型
- 日用品采购服务投标方案(技术标)
评论
0/150
提交评论