最短路径问题的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图G,使得对于D的每条弧,G有一条有相同端点的边与
之对应。这个图称为D的底图。反之,对给定任意图G的
每条边,给其端点指定一个顺序,从而确定一条弧,由
此得到一个有向图,称为G的一个定向图(见图4)。
图的有关概念和术语也可以相应地引入到有向图,
而涉及到方向的概念仅适用于有向图。
有向图D的有向链是指一个点弧交错序列:
8
Uk+ wkj Uj, k Tj 。 然后返回步骤(2)。
例1 求下列图5中,自点v1到其他各点的最短有向路。
v2
3
v3
5
4
4
v1
2 7
5
6
v6
3
6
v4
v5
5
图5
解 用狄克斯特拉算法,其最短路如图6所示。
5/29/2020
9
5
8
v2
3
v3
5 0
v1
6
6
v6
3
v4
v5
5
3
8
图6
计算的迭代过程可列表如下,其中Uj所在列对应的方
给定一个有向网络N=(V,A,W),其中W为A
中每一弧对应的权组成的集合。设P为G中的一条有向路
,令
W(P) = w(a) aP
称W(P)为有向路P的权(或长度)。
寻求有向网络中自某一指定点v到另一指定点v间的
最短有向路是组合最优化问题中重要的基本课题。
5/29/2020
5
大量组合优化问题可以化为求最短有向路的问题,或者用
,其中V(D)是顶点集。A(D)是连接V(D)中顶点的
有向弧集。若a A(D)是一条弧,a=(u,v),u,v是顶点,则称a
从u连接到v;称v是a的头,u是a的尾。弧(u,v)也可用有向
线段u v表示。如果V('D) V(D),A('D) A(D),则称有向
图D是D的有向子图。
5/29/2020
2
对应于每一个有向图D,可以在相同顶点集上作一个
最短有向路的算法作为其子程序。例如,通讯网络中求关
键路线问题以及背包问题,都可以化为最短有向路问题。
另外,某些加工顺序问题、中国邮递员问题、斯坦纳
(Steiner)树问题均用有向最短路算法作为其子程序。
为了讨论方便起见,若i j,约定权w>0。显然,对于弧 的权为正值的有向网络N=(V,A,W),任意一条最短有向路
11
11
14
14 1
5
10 8
86 86
1
4 2
41 41
8
86
8
8
2
41
2
4
8
8
8
百度文库
4
2
4
8
4
5/29/2020
11
狄克斯特拉算法给出从一个指定点到其余各点的最 短有向路的计算量方法。显然只要反复使用该法,就能 求出所有点对之间的最短有向路,即第一次求点v1到v2 ,v3 , … ,vn的最短有向路,第二次求点v2到v1,v3 , … ,vn的最短有向路,……,第n次求点vn到点v1, … ,vn-1的最短有向路。这样做计算较大,已经有更好的算 法,限于篇幅,这里不再介绍。有兴趣的读者可参阅: E·米涅卡(李家滢、赵关旗合译)的《网络和图的最优 化算法》。
框中的数字是从v1点到vj点的最短路的长度;Tj所在列对应
的方框中的数字是从v1点到vj点的最短路中vj前一点的下标

5/29/2020
10
U1 U2 U3 U4 U5 U6 T1 T2 T3 T4 T5 T6
05 ∞3 ∞6 1 1 1 1 1 1
0
5 5
5
∞3 ∞6

∞6
10 3 8 6
11 1 1 1 1
5/29/2020
12
最短路模型在许多方面都有应用,首先考虑如下的设备
更新问题。
例2 某单位使用一种设备,每年年初需对该设备是否更新
的长度都大于它的真子有向路的长度。
狄克斯特拉(Dijkstra)算法
这一算法可求得有向网络N=(V,A,W)中从一给定点
5/29/2020
6
v1出发到N中任一点的最短有向路及其长度。 设V={ v1, v2, …,vn}。算法的基本思路是:假定P:
v1 v2 … vi …vj… vk是从v1到vk的最短路,则它的 子路v1… vi一定从点vi出发到点vj的最短路。否则从v1 出发沿路P走到vi,然后沿vi到vj的最短路走到vj,再沿路 P从vj到vk,这样得到一条新的从v1出发到vk的路,其长 度小于从v1和vk的最短路P,与最短路的假定矛盾。基于 这一事实,我们先给网络N的每个顶点一个标号——临
(2)在Q中找k,使得Uk = mjiQn{Uj}。置
P {k} P,Q\{k} Q。
若Q Ø,进入下一步(3);若Q Ø时,算法终止,此
时Uj (1 j n)即为点v1到vj的距离,Tj表示最短路(v1,vj)中
与vj邻接的点vTj。
5/29/20(20 3)对Q中每一个j,如果Uk+wkj<Uj,则
图的连通情况一样,若规定双向连通的点属于同一类,则
双向连通确定了V(D)的一个分类(V1, V2,…,Vk),相应 的有向分图D[V1],D[V2],…,D[Vk]称为D的双向连通分图( 双向分图)。如果D恰仅有一个双向分图,则称D是双向连
通的。
5/29/2020
4
D中顶点v的入次d D(v)是指以v为头的弧的数目; v的出次d D(v)是指以v为尾的弧的数目。用 (D) 、 ∆(D)、 (D)、∆ (D)分别表示D中所有顶点中的最小和 最大的入次和出次。
§2 最短路径问题的应用
5/29/2020
1
在讨论交通流量问题时,有些道路是单行道,此时必
须知道什么方向上通行是允许的。这时图与网络的概念不
能确切反映这种边的属性,为此,我们要对网络中的边指
定一个方向。这种指定边的方向的图或网络称为有向图或
有向网络。一个有向图D是指一个有序二元组(V(D),A(D))
时标号(T标号),然后在迭代过程中逐次修改变为永久标
号(P标号)。每一步迭代可以把某个点的T标号改变为P
标号。如果N中所有点得到永久标号,则算法终止,显
5/29/2020
7
然算法至多经过n-1次迭代即可停止。算法过程可详述如
下:
(1)给所有的点以临时标号1,然后以v1为出发点,即
:置U1=0,Uj=w1j (2 jn),Tj=1(1 j n),P={1},Q={2、3、… 、n}
w=v0a1v1a2 …akak
其中弧ai有头vi和尾vi-1,且a(1 i k) 互不相同。有向闭链
、有向路、有向圈可以类似定义。
5/29/2020
3
(a) 有向图 D
(b) D 的底图
图4
若D中存在有向路,则称点u出发可达点v。如果两个顶
点u和v互相可到达,则称u和v是双向连通(强连通)。和
相关文档
最新文档