当前位置:文档之家› 最短路径问题的算法分析及建模案例

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

最短路径问题的算法分析及建模案例最短路径问题的算法分析及建模案例一.摘要 (3)二.网络最短路径问题的基础知识 (5)2.1有向图 (7)2.2连通性................... 错误!未定义书签。

2.3割集....................... 错误!未定义书签。

2.4最短路问题 (8)三.最短路径的算法研究.. 错误!未定义书签。

3.1最短路问题的提出 (9)3.2 Bellman最短路方程错误!未定义书签。

3.3 Bellman-Ford算法的基本思想错误!未定义书签3.4 Bellman-Ford算法的步骤错误!未定义书签。

3.5实例....................... 错误!未定义书签。

3.6 Bellman-FORD算法的建模应用举例错误!未定义3.7 Dijkstra算法的基本思想 (9)3.8 Dijkstra算法的理论依据 (9)3.9 Dijkstra算法的计算步骤 (9)3.10 Dijstre算法的建模应用举例 (10)3.11 两种算法的分析错误!未定义书签。

1.Diklstra算法和Bellman-Ford算法思想有很大的区别错误!未定义书签。

Bellman-Ford算法在求解过程中,每次循环都要修改所有顶点的权值,也就是说源点到各顶点最短路径长度一直要到Bellman-Ford算法结束才确定下来。

...................... 错误!未定义书签。

2.Diklstra算法和Bellman-Ford算法的限制.................. 错误!未定义书签。

3.Bellman-Ford算法的另外一种理解错误!未定4.Bellman-Ford算法的改进错误!未定义书签。

摘要近年来计算机发展迅猛,图论的研究也得到了很大程度的发展,而最短路径问题一直是图论中的一个典型问题,它已应用在地理信息科学,计算机科学等诸多领域。

而在交通路网中两个城市之间的最短行车路线就是最短路径问题的一个典型例子。

由于最短路径问题在各方面广泛应用,以及研究人员对最短路径的深入研究,使得在最短路径问题中也产生了很多经典的算法。

在本课题中我将提出一些最短路径问题的算法以及各算法之间的比较,最后将这些算法再应用于实际问题的建模问题中。

关键词:计算机图论交通道路网最短路径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 graph 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 aspects, and the researchers on the in-depth study of the shortest path, make in the shortest path problem also generates a lot of classical algorithm. In this topic I'll suggest some algorithm and the algorithm of the shortest path problem between the comparison, finally the algorithm is applied to the modeling of the actual problem again.Key words: computer graph traffic road network The shortest path前言最短路径问题是图论以及运筹学中的一个非常重要的问题,在生产实践,运输及工程建筑等方面有着十分广泛的应用。

本文对图论中的最短路径问题进行分析,对其运算解法进行分析寻求比较快捷的模型解法;主要解决的是从某个顶点到其余各个顶点的最短路径问题。

本文从Floyd算法以及Dijkstra算法两种算法入手,概述了这两种方法的原理,提出了求解最短路径问题的算法思想,并且对两种算法进行分析比较,提出改进的方法。

一网络最短路径问题的基础知识图11.1 图图G 是一个(无向)图,其中有序二元组(V,E ),V={1v ,2v ,...n v }是顶点集,E={ij e }是集,ij e 是一个无序二元组{i v ,j v }它表示该边连接的是顶点i v ,j v 。

图1就是一个图。

注释:图形的大小,位置,形状是无关紧要的。

若ij e ={i v ,j v }则称ij e 连接i v 和j v ;点i v 和j v 称为ij e 的顶点,i v 和j v 是邻接的顶点;如果两条边有公共的一个顶点,则称这两边是邻接的。

1.2 无环图定义:没有环的图称之为无环图。

1.3 简单图定义:没有环且没有重边的图称之为简单图。

设G=(V,E )是一个简单图,则有|E|不大于|V|(|V|-1)/21.4 完全图定义:若上式的等号成立那么该图中每对顶点恰好有一条边相连,则称该图为完全图。

1.5 有向图定义:一个有向图G 是一个有序二元组(V,A ),V={1v ,2v ,...,n v }是顶点集,A={ij a }称为G 的弧集,ij a 为有序二元组。

称ij a 为i v 连向j v 的弧,ij a 为i v 的出弧,j v 的入弧;i v 称为ij a 的得尾,j v 称为a ij 的头;i v 称为j v 的前继,j v 称为i v 的后继。

图2就是一个有向图。

图21.6 环定义:头尾重合的弧称为环。

1.7 简单有向图定义:没有环和重弧的有向图称为简单有向图。

1.8 完全有向图定义:设G=(V,E )是一个简单有向图,则|A|不大于|V|(|V|-1),若等号成立则称这样的图为完全有向图。

1.9 途径,迹,路定义:设图G=(V,E ),若它的某些顶点与边可以排成一个非空的有限交错序列(0v ,1e ,1v ,...k e ,k v ),这里该途径中边互不相同,则称为迹;如果顶点互不相同,则称之为路。

显然路必为迹,但反之不一定成立。

1.10 连通图定义:图G 中如果存在一条从顶点i v 到j v 的途径,则称i v 和j v 是连通的。

如果图G 中任何两个顶点都是连通的,则称G 是连通图。

1.11 有向途径定义:设有一个有向图G=(V,A ),G 中某些顶点与弧组成的非空有限序列 (0v ,1a ,1v ,2a ,...,k a ,k v )这里0v ,...,k v ∈V ,i a ∈A ,且i a =(1-i v ,i v ),则称它为从0v 到k v 的有向途径。

类似的可定义有向迹,有向路,有向闭途径,有向闭迹,有向回路(圈)等。

当G 时简单有向图时,从0v 到k v 的一条有向途径可简记为(0v ,...,k v )。

二 最短路问题定义:所谓最短路径是指如果从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一跳有向路径使得沿这条路径上各弧的权值总和最小。

2.1最短路问题的提出某旅客要从杭州乘飞机前往奥地利的萨尔斯堡,因为他害怕乘坐飞机,因此要选择一条航线,使得在空中飞行的时间尽可能的少。

如何选择航线以达到要求。

为此构造一个无向网络总可以化成有向网络。

设G=(V,A,w )是一个有向网络,p 为G 中一条有向路,称w (P )=∑∈Pa a w )(为路径p 的路长。

现找网络中一条从指定顶点v i 到另一个指定顶点v j 的最短有向路径。

三 最短路径算法研究3.1 Dijkstra 算法3.11 Dijkstra 算法的基本思想对网络中每个顶点赋一个标号,用来记录从1v 顶点到该顶点的最短路的长度(称为永久标号)或最短长度的上界(称为临时标号)。

算法开始时,只有顶点1v 被赋予永久标号1v =0,其他顶点i v 赋予临时标号ij j w u =。

一般的,算法在被临时标号的顶点中寻找一个顶点k v ,其临时标号k u 最小,然后将k v 赋予永久标号k u ,并且对其余临时标号的顶点v j 按照方式},min{kj k j j w u u u +=修正其标号。

算法在所有顶点被赋予永久标号时结束。

3.12 Dijkstra 算法的理论依据(1)对于S 中任意一顶点,其永久标号都是从顶点1v 到该顶点的最短路的长度。

(2)对于R 中任意一顶点,其临时标号都是从顶点1v 出发,只经过S 中顶点到达该顶点的最短路的长度。

3.13 Dijkstra 算法的计算步骤最短路径问题是指在一个赋予权值的图的两个指定节点0u 和v 之间找出一条具有最小权值的路。

Dijkstra 算法是一个解最短路径问题的算法,这个算法不仅可以找到最短的(0u ,v ),路径而且可以给出从0u 到图中所有节点的最短路径,基本步骤如下:(1)设)(0u D =0,对所有节点0u w ≠来说,设)(w D =∞,并且将0u 标号为0,0u →t ,d 为0u 和w 之间的权值(距离)。

(2)按照每个没有标号的节点w 计算)(w D ,)},()(),(min{)(w t L t D w D w D +=,),(w t L 表示节点t 到节点w 之间的权值。

如果)(w D 标号被修改了说明在当前得到的0u 到w 的最优路径上t 和w 相邻,用w t 记录下来在所有)(w D 中选择一个最小的)(s D 即)}(min{)(w D s D =,w 未标号。

将s 标号为)(s D /w t ,表示节点0u 到s 的最优路径的长度)(s D 且w t 与s 相邻。

(3)如果重点v 已经标号,则停止。

得到一条从0u 到v 的最优路径。

否则s →t ,反向。

(4)按照上述步骤继续计算。

3.14 Dijstre 算法的建模应用举例 某城市要在该城市所辖的8个区中的1u 区建立一个取水点,如图所示的是这8个区之间的分布以及相邻各区的距离。

相关主题