最短路径问题的算法分析及建模案例资料

上传人:w****i 文档编号:93297716 上传时间:2019-07-19 格式:DOC 页数:14 大小:714.50KB
返回 下载 相关 举报
最短路径问题的算法分析及建模案例资料_第1页
第1页 / 共14页
最短路径问题的算法分析及建模案例资料_第2页
第2页 / 共14页
最短路径问题的算法分析及建模案例资料_第3页
第3页 / 共14页
最短路径问题的算法分析及建模案例资料_第4页
第4页 / 共14页
最短路径问题的算法分析及建模案例资料_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《最短路径问题的算法分析及建模案例资料》由会员分享,可在线阅读,更多相关《最短路径问题的算法分析及建模案例资料(14页珍藏版)》请在金锄头文库上搜索。

1、 最短路径问题的算法分析及建模案例一.摘要2二.网络最短路径问题的基础知识22.1有向图32.2连通性42.3割集52.4最短路问题6三最短路径的算法研究63.1最短路问题的提出63.2 Bellman最短路方程63.3 Bellman-Ford算法的基本思想73.4 Bellman-Ford算法的步骤73.5实例73.6 Bellman-FORD算法的建模应用举例83.7 Dijkstra算法的基本思想113.8 Dijkstra算法的理论依据113.9 Dijkstra算法的计算步骤113.10 Dijstre算法的建模应用举例113.11 两种算法的分析131.Diklstra算法和Be

2、llman-Ford算法思想有很大的区别13Bellman-Ford算法在求解过程中,每次循环都要修改所有顶点的权值,也就是说源点到各顶点最短路径长度一直要到Bellman-Ford算法结束才确定下来。142.Diklstra算法和Bellman-Ford算法的限制143.Bellman-Ford算法的另外一种理解144.Bellman-Ford算法的改进14 摘要 近年来计算机发展迅猛,图论的研究也得到了很大程度的发展,而最短路径问题一直是图论中的一个典型问题,它已应用在地理信息科学,计算机科学等诸多领域。而在交通路网中两个城市之间的最短行车路线就是最短路径问题的一个典型例子。 由于最短路径

3、问题在各方面广泛应用,以及研究人员对最短路径的深入研究,使得在最短路径问题中也产生了很多经典的算法。在本课题中我将提出一些最短路径问题的算法以及各算法之间的比较,最后将这些算法再应用于实际问题的建模问题中。 关键词:计算机 图论 交通道路网 最短路径A. In this paper, Computer developing rapidly in recent years, graph theory research also have been greatly developed, and the shortest path problem is a typical problem in gr

4、aph theory, it has been applied in geographical information science, computer science, and many other fields. And in the transportation network of the shortest route between two cities in is a typical example of the shortest path problem.Due to the shortest path problem is widely used in various asp

5、ects, and the researchers on the in-depth study of the shortest path, makein the shortest path problem also generates a lot of classical algorithm. In this topic Ill suggest some algorithm and the algorithm of the shortest path problem between the comparison, finally the algorithm is applied to the

6、modeling of the actual problem again.Key words: computer graph traffic road network The shortest path前言 最短路径问题是图论以及运筹学中的一个非常重要的问题,在生产实践,运输及工程建筑等方面有着十分广泛的应用。本文对图论中的最短路径问题进行分析,对其运算解法进行分析寻求比较快捷的模型解法;主要解决的是从某个顶点到其余各个顶点的最短路径问题。本文从Floyd算法以及Dijkstra算法两种算法入手,概述了这两种方法的原理,提出了求解最短路径问题的算法思想,并且对两种算法进行分析比较,提出改进的方

7、法。一 网络最短路径问题的基础知识 图11.1 图 图G是一个(无向)图,其中有序二元组(V,E),V=,,.是顶点集,E=是集,是一个无序二元组,它表示该边连接的是顶点,。图1就是一个图。 注释:图形的大小,位置,形状是无关紧要的。若=,则称连接和;点和称为的顶点,和是邻接的顶点;如果两条边有公共的一个顶点,则称这两边是邻接的。1.2 无环图定义:没有环的图称之为无环图。1.3 简单图定义:没有环且没有重边的图称之为简单图。设G=(V,E)是一个简单图,则有|E|不大于|V|(|V|-1)/21.4 完全图定义:若上式的等号成立那么该图中每对顶点恰好有一条边相连,则称该图为完全图。1.5 有

8、向图定义:一个有向图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),若它的某些顶点与边可以排成一个非空的有限交错序列(,,.,),这里该途径中边互不相同,则称为迹;如果顶点互不相同,则

9、称之为路。显然路必为迹,但反之不一定成立。1.10 连通图定义:图G中如果存在一条从顶点到的途径,则称和是连通的。如果图G中任何两个顶点都是连通的,则称G是连通图。1.11 有向途径定义:设有一个有向图G=(V,A),G中某些顶点与弧组成的非空有限序列(,.,)这里,.,V,A,且=(,),则称它为从到的有向途径。类似的可定义有向迹,有向路,有向闭途径,有向闭迹,有向回路(圈)等。当G时简单有向图时,从到的一条有向途径可简记为(,.,)。二 最短路问题定义:所谓最短路径是指如果从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一跳有向路径使得沿这条路径上各弧的权值总

10、和最小。2.1最短路问题的提出某旅客要从杭州乘飞机前往奥地利的萨尔斯堡,因为他害怕乘坐飞机,因此要选择一条航线,使得在空中飞行的时间尽可能的少。如何选择航线以达到要求。为此构造一个无向网络总可以化成有向网络。设G=(V,A,w)是一个有向网络,p为G中一条有向路,称w(P)=为路径p的路长。现找网络中一条从指定顶点vi到另一个指定顶点vj的最短有向路径。三 最短路径算法研究3.1 Dijkstra算法3.11 Dijkstra算法的基本思想对网络中每个顶点赋一个标号,用来记录从顶点到该顶点的最短路的长度(称为永久标号)或最短长度的上界(称为临时标号)。算法开始时,只有顶点被赋予永久标号=0,其

11、他顶点赋予临时标号。一般的,算法在被临时标号的顶点中寻找一个顶点,其临时标号最小,然后将赋予永久标号,并且对其余临时标号的顶点vj按照方式修正其标号。算法在所有顶点被赋予永久标号时结束。3.12 Dijkstra算法的理论依据(1) 对于S中任意一顶点,其永久标号都是从顶点到该顶点的最短路的长度。(2) 对于R中任意一顶点,其临时标号都是从顶点出发,只经过S中顶点到达该顶点的最短路的长度。3.13 Dijkstra算法的计算步骤最短路径问题是指在一个赋予权值的图的两个指定节点和v之间找出一条具有最小权值的路。Dijkstra算法是一个解最短路径问题的算法,这个算法不仅可以找到最短的(,v),路

12、径而且可以给出从到图中所有节点的最短路径,基本步骤如下:(1) 设=0,对所有节点来说,设=,并且将标号为0,t,d为和w之间的权值(距离)。(2) 按照每个没有标号的节点w计算,表示节点t到节点w之间的权值。如果标号被修改了说明在当前得到的到w的最优路径上t和w相邻,用记录下来在所有中选择一个最小的即,w未标号。将s标号为/,表示节点到s的最优路径的长度且与s相邻。(3) 如果重点v已经标号,则停止。得到一条从到v的最优路径。否则st,反向。(4) 按照上述步骤继续计算。3.14 Dijstre算法的建模应用举例某城市要在该城市所辖的8个区中的区建立一个取水点,如图所示的是这8个区之间的分布

13、以及相邻各区的距离。现要从区向其他各区运水,求出区到其他各区的最短路径。先写出带权邻接矩阵:W=因为G是无向图,所以W是对称矩阵。迭代次数 1020218328104831058610126710127912812最后标记L(v)021736912Z(v)因此得到最短路径为:迭代次数 最后标记L(v)021736912Z(v)由上表可得到到各点的最短路径为:;,;,;,。上述Dijkstra算法的MATLAB代码:w=0 2 1 8 inf inf inf;2 0 inf 6 1 inf inf inf ;1 inf 0 7 inf inf 9 inf;8 6 7 0 5 1 2 inf;inf 1 inf 5 0 3 inf 9;inf inf inf 1 3 0 4 6;inf inf 9 2 inf 4 0 3;inf inf inf inf 9 6 3 0n=size(w,1);w1=w(1,:); %赋初值%for i=1:nl(i)=w1(i);z(i)=1;ends=;s(1)=1;u=s(1);k=1;while kl(u)+w(u,i)l(i)=l(u)+w(u,i);z(i)=u; end end endendl,z %求v*L1=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号