最短路问题及最速下降问题
最短路问题(数学建模资料)
Network Optimization
/netopt
清华大学课号:40420213(本),70420133(研)
第5章 最短路问题(Shortest Path Problem)
清华大学数学科学系 谢金星 办公室:理科楼1308# (电话:62787812) Email:jxie@ /faculty/~jxie
u s 0, u min{u w }. i ij j i j
一般情况下直接求解最短路方程是相当困难的.
(5.7) (5.8)
10
最短路树(树形图)
定理5.1 对于只含正有向圈的连通有向网络,从起点s到任一顶 点 j 都存在最短路,它们构成以起点 s 为根的树形图(称为最短 路树(Tree of Shortest Paths)或最短路树形图(Shortest Path Arborescence)),最短路的长度可以由Bellman方程唯一确定.
1
最短路问题的例子和意义
S
T
许多实际问题都可以转化为最短路问题
其有效算法经常在其它网络优化问题中作为子算 法调用
2
最短路问题的例子 - 单产品、无能力限制的批量问题
例5.1 (Single-level Uncapacitated Lotsizing) 某工厂生产某种产品用以满足市场需求,且已知在时段t中的市 场需求为dt . 在某时段t, 如果开工生产, 则生产开工所需的生 产准备费为st , 单件产品的生产费为ct .在某时段t期末, 如果有 产品库存, 单件产品的库存费为ht . 假设初始库存为0, 不考虑 能力限制, 工厂应如何安排生产, 可以保证按时满足生产, 且 使总费用最小? (Wagner – Whitin,1958) 假设在时段t, 产品的生产量为xt , 期末产品的库存为It (I0 =0); 用二进制变量yt表示在时段t工厂是否进行生产准备. T T 假设费用均非负,则在最优解中 I 0 I T 0 ,即 xt d t
最短路的问题装名词解释
最短路的问题装名词解释在计算机科学领域中,最短路问题是一类经典的算法问题,其主要解决的是在加权图中找到两个节点之间的最短路径。
这个问题在实际应用中非常重要,例如在网络路由中,寻找两个节点之间最短路径的算法可以帮助我们优化数据传输的效率。
为了更好地理解最短路问题,我们首先来解释一些关键的术语。
在计算机科学中,图是由一组节点和连接这些节点的边组成的抽象数学模型。
每个节点代表一个实体,而边则代表节点之间的连接关系。
加权图是一种特殊的图,其边上带有权重。
这个权重可以代表任何实际应用中的度量,例如距离、时间、费用等。
最短路径是指连接两个节点之间的路径中,权重总和最小的路径。
更具体地说,我们可以定义一个函数d(u,v),它表示节点u到节点v的最短路径的权重。
这个函数可以通过使用不同的算法来计算得到。
最短路问题的目标就是找到这个函数的值,并找到代表最短路径的实际路径。
在解决最短路问题时,有两种常见的算法:Dijkstra算法和Bellman-Ford算法。
Dijkstra算法是一种贪心算法,它从一个节点开始,逐步扩展到其他节点,直到找到最短路径。
该算法通过维护一个距离数组来记录到达每个节点的当前最短路径长度。
开始时,所有节点的距离被初始化为无穷大,然后逐步更新距离数组,直到找到最短路径。
与之相比,Bellman-Ford算法则更加灵活,可以处理带有负权边的图。
该算法通过使用一种松弛操作来逐步减小节点之间的距离估计值。
开始时,所有节点的距离估计值被初始化为正无穷大,然后通过对每条边进行一系列松弛操作,不断更新距离估计值,直到没有更多的更新为止。
如果在这个过程中发现了负权环,说明图中存在无穷小权重的路径,就会报告一个负权环的存在。
最短路问题的解决方法不仅限于这两个算法,还有其他一些算法,例如Floyd-Warshall算法和A*算法等。
Floyd-Warshall算法可以找到图中任意两个节点之间的最短路径。
它通过迭代更新一个矩阵来计算最短路径权重。
《最短路问题》课件
3 最短路问题的历史
渊源
最短路问题最早由荷兰 数学家 Edsger Dijkstra 在 1956 年提出。
最短路问题的定义
图论中的最短路问 题指什么?
在无向连通图或有向连通图 中,从某一起点到其余各顶 点的最短路径。
什么是路径长度?
路径长度是指路径上边或弧 的权值之和。
什么是无环图?
无环图指不存在环的图,可 以用拓扑排序求解最短路。
《最短路问题》PPT课件
欢迎来到最短路问题的世界。在本课件中,我们将介绍四种最短路算法及其 应用,并分析它们的优缺点。
问题背景
1 什么是最短路问题? 2 为什么需要解决最
短路问题?
最短路问题是计算从源 节点到目标节点的最短 路径的问题。它是图论 中的一个经典算法问题。
很多实际问题都涉及到 最短路径的计算,比如 电网、交通、通信等领 域。
Floyd-Warshall算法解决的是所有点对之间 的最短路径问题,可以处理有向图或负边权 图。
Bellman-Ford算法
Bellman-Ford算法解决的是有向图中含有负 权边的单源最短路径问题。
A*算法
A*算法综合了贪心和广度优先搜索,在启发 函数的帮助下,可以高效解决带权图上的单 源最短路径问题。
算法示例
1
Step 1
假设我们要求从 A 点到其他各点的最
Step 2
2
短路径。
首先初始化 A 点到其他各点的距离为
无穷大,A 点到自身的距离为 0。
3
Step 3
找到 A 点的直接邻居,更新其距离值。
Step 4
4
重复 Step 3,直到所有节点的距离值 都已经更新。
总结
最短路问题(整理版)
最短路问题(short-path problem)若网络中的每条边都有一个权值值(长度、成本、时间等),则找出两节点(通常是源节点与结束点)之间总权和最小的路径就是最短路问题。
最短路问题是网络理论解决的典型问题之一,可用来解决管路铺设、线路安装、厂区布局和设备更新等实际问题。
最短路问题,我们通常归属为三类:单源最短路径问题(确定起点或确定终点的最短路径问题)、确定起点终点的最短路径问题(两节点之间的最短路径)1、Dijkstra算法:用邻接矩阵a表示带权有向图,d为从v0出发到图上其余各顶点可能达到的最短路径长度值,以v0为起点做一次dijkstra,便可以求出从结点v0到其他结点的最短路径长度代码:procedure dijkstra(v0:longint);//v0为起点做一次dijkstrabegin//a数组是邻接矩阵,a[i,j]表示i到j的距离,无边就为maxlongintfor i:=1 to n do d[i]:=a[v0,i];//初始化d数组(用于记录从v0到结点i的最短路径), fillchar(visit,sizeof(visit),false);//每个结点都未被连接到路径里visit[v0]:=true;//已经连接v0结点for i:=1 to n-1 do//剩下n-1个节点未加入路径里;beginmin:=maxlongint;//初始化minfor j:=1 to n do//找从v0开始到目前为止,哪个结点作为下一个连接起点(*可优化) if (not visit[j]) and (min>d[j]) then//结点k要未被连接进去且最小begin min:=d[j];k:=j;end;visit[k]:=true;//连接进去for j:=1 to n do//刷新数组d,通过k来更新到达未连接进去的节点最小值,if (not visit[j]) and (d[j]>d[k]+a[k,j]) then d[j]:=a[k,j]+d[k];end;writeln(d[n]);//结点v0到结点n的最短路。
最速下降法原理及例题实例
−1 1
=
G
αk
=
g1d1 + g2d2 3d12 + d22 − 2d1d2
[ ] [ ] 取 X (1) = (0, 0)T ,则 ∇f ( X (1) ) = −2, 0 T ,所以 d (1) = −∇f ( X (1) ) = 2, 0 T ,
因此
α1
=
22 3× 22
=
1 3
[ ] [ ] X (2) = X (1) + α1d (1) =
=
1 + 4x1 + 2x2 −1+ 2x1 + 2x2
∂(x2 )
∇f
(X
(1) )
=
1 −1
令搜索方向 d (1)
=
−∇f
(X
(1) )
=
−1 1
再从
X
(1) 出发,沿
d (1) 方向作一维寻优,令
步长变量为 λ
,最优步长为 λ1 ,则有
X
(1)
+
λd (1)
=
0 0
+
λ
−1 1
min f ( X ) = (x1 − 2)4 + (x1 − 2x2 )2
其中 X = (x1, x2 )T ,要求选取初始点 X 0 = (0, 3)T ,终止误差 ε = 0.1.
解:因
∇f ( X ) = [4(x1 − 2)3 + 2(x1 − 2x2 ), −4(x1 − 2x2 )]T
∇f (x∗ ) = 0源自(二)最速下降法的基本思想和迭代步骤
最速下降法又称为梯度法,是 1847 年由著名数学家 Cauchy 给出的。他是解析法中最古老的一 种,其他解析方法或是它的变形,或是受它的启发而得到的,因此它是最优化方法的基础。
运筹学——精选推荐
1(单纯形法)例:Min Z=-2x1-x2+x3 , s.t.3x1+x2+x360≤x1-x2+2x310≤,x1+x2-x320≤,xj 0≥,解析:对第一、二、三个不等式添加松弛变量x4 x5 x6,则原线性问题化成标准形形式为:(略)因为B=(A4 A5 A6)是一单位矩阵,且b=(60 10 20)T>0 所以基B 是可行基,x4 x5 x6为基变量,x1 x2 x3为非基变量,基B 对应的基本可行解为检验数02>=ξ,故当前解不是最优解,A1列中有三个元素a11 a21 a31 均为正数,取min()313212111,,a b a b a b =min ()120110360,,=10故转轴元为a21,x1为进基变量,x5为出基变量,进行旋转后得下表(略)它对应的基本可行解为x=(10 0 0 30 0 10)T,其目标函数值为Z0=-20,但,032>=ξ仍不是最优解,(以下的过程跟前面一样)最后得Z0=-35,检验向量0<ξ故为最优解。
故基本可行解x*=(15 ,5 ,0 )Tm 目标函数值为Z0=-35。
2(两阶段法)例 max z=3x1+4x2+2x3 s.t. x1+x2+x3+x430≤, 3x1+6x2+x3-2x40≤, x24≥解:化为标准形形式为min z=-3x1-4x2-2x3 s .t.分别加x5 x6 x7松弛变量,因为该线性规划的系数矩阵的系数矩阵已包含两个单位向量,就是A5=(100)T ,A6=(010)T ,第一阶段只要增加一个人工变量x8得到辅助LP 问题为min g=x8 s.t .以下略,作如下表(略),将表中第三行加到关于g 的第0行中,得到第一张单纯形表(略)按单纯形迭代,表略,第一阶段结束,得到辅助问题的一个最优解,3(对偶单纯形法)例 min 2x1+3x2+4x3, s.t. x1+2x2+x33≥ 2x1-x2+3x34≥ x1 x2 x3 0≥,解:引进非负的剩余变量x40≥,x50≥,将不等式约束化为等式约束直接利用对偶单纯形法求解,b2=- 4<b1=-3,所以x5为出基变量,由以下比值决定进基变量min(3422,----)=21a ξ=1,所以x1为进基变量,以a21为转轴元进行旋转变换得下表(略)因为b1=-1<0,所以x4为出基变量,因为min( )所以x2为进基变量,以a12为转轴得表(略)此时b>0,故原问题最优解为x*=( )T,其最优值Z0=() 4写出下面线性规划的对偶规划。
最短路问题
最短路问题何谓最短路?最短路问题考虑的是有向网络N=(V,A,W),其中弧(i,j)∈A 对应的权又称为弧长或费用。
对于其中的两个顶点s,t∈V,以s 为起点,t 为终点的有向路称为s-t 有向路,其所经过的所有弧上的权(或弧长、费用)之和称为该有向路的权(或弧长、费用)。
所有s-t 有向路中权最小的一条称为s-t 最短路。
ij w 如何得到最短路?最短路问题的线性规划描述如下:(,)m i ni j i j i j A w x ∈∑ (1):(,):(,)1,,..1,,0,,ij ji j i j A j j i A i s s t x x s i s t ∈∈=⎧⎪t −=−=⎨⎪≠⎩∑∑ (2) 0ij x ≥ (3) 其中决策变量表示弧(i,j)是否位于s-t 路上:当=1时,表示弧(i,j)位于s-t 路上,当=0时,表示弧(i,j)不在s-t 路上。
本来,应当是0-1变量,但由于约束(2)的约束矩阵就是网络的关联矩阵,它是全幺模矩阵,因此0-1变量可以松弛为区间[0,1]中的实数(当用单纯形法求解时,将得到0-1整数解)。
ij x ij x ij x ij x 值得注意的是,我们这里将变量直接松弛为所有非负实数。
实际上,如果可以取0-1以外的整数,则约束条件并不能保证对应于非零的弧所构成的结构(记为P)一定是一条路,因为这一结构可能含有圈。
进一步分析,我们总是假设网络本身不含有负圈,而任何正圈不可能使目标函数最小,因此上面的约束条件(2),(3)可以保证当达到最优解时,P 如果包含圈,该圈一定是零圈,我们从P 中去掉所有的零圈,就可以得到最短路。
ij x ij x ij x 无圈网络与正费用网络一般采用标号设定算法。
Bellman 方程(最短路方程)将约束条件(2)两边同时乘以-1,得到其对偶问题为:m ax()t s u u − (4)..,(,)j i ij s t u u w i j A −≤∀∈ (5)根据互补松弛条件,当x 和u 分别为原问题和对偶问题的最优解时:()0,(,i j j i i j )x u u w i j −−=∀∈A (6) 因此,当某弧(i,j)位于最短路上时,即对应的变量>0时,一定有ij x j i i u u w −=j 。
5-2最短路问题
= lij
i = 1,2,L, n
( dij0) 是指vi到vj的一步距离; 是指v 的一步距离; 则
当d
( m−1) ij
已知时, 已知时,令
k =1~ n ( m−1) ik
d
( m) ij
= min{d
(2) ij
+d
( m−1) kj
}
( ) 走两步的最小距离; 则当m=1时,d ij1是vi到vj走两步的最小距离; 时
把k赋给i,从搜索节点集合中去掉vk,重新搜索 vk(将vk作为vi)到其余节点的最短距离。 。
算法思想示意图
vk = vn
i=k
v1
T (v j )
i = k
T (v j )
T ( v
j
)
T (v j )
vj ∈ S
i=k
vj ∈ S
vj ∈ S
vj ∈ S
例5-3 用狄克斯拉算法 求解图5 所示最短路问题。 求解图5-1所示最短路问题。
当m=2时,d 时
走四步的最小距离; 是vi 到vj走四步的最小距离;
d 一般, 一般,
(m ) ij
步的最小距离; 是vi 到vj 走2m步的最小距离;
当对所有I,j有 当对所有I,j有: d
(m) ij
(m ) ij
=d
( m −1 ) ij
时,则
的最短距离。 d 是vi到vj的最短距离。 由于最短路线上最多有n-1条边,因此, 由于最短路线上最多有 条边,因此,当 条边 2m≥ n-1时, dij ) 就是最短距离。 时 (m 就是最短距离。 (3)算法举例: 算法举例: 用海斯算法求下面的网络图中从v 例5-5 用海斯算法求下面的网络图中从 1到v6 的最短距离和最短路线。 的最短距离和最短路线。
第三节 最短路问题PPT课件
定义: 给定一个赋权有向图,即给了一个有向图
G=(V,A,W) ,对每一个弧aij =(vi,vj)∈A , 相应地有权w(aij ) =wij ∈V1 ,又给定 G中的 两个顶点vs ,vt 。设 P是G 中从vs 到 vt的一条路,
定义路 P的权是 P中所有弧的权之和,记为W(P)
。最短路问题就是要在所有从vs 到vt 的路中,求 一条权最小的路,即求一条从vs 到vt 的路P* ,
Thank You
在别人的演说中思考,在自己的故事里成长
Thinking In Other People‘S Speeches,Growing Up In Your Own Story
讲师:XXXXXX XX年XX月XX日
则resent= vk,
, 。 Sk Sk1 vk
Tk Tk1 vk
若k=n,则结束,否则转第二步。
6
例 用Dijkstra算法求前面例子中从v1到各点的最短路。
v2 1
6 2
v5
2
v9
6
3
v1
3 v3 6
3 4 10
1
2
v4
10
4
v6 2 v7
v8
7
图上标号法:
v2 v1,6 1
v5
v1, ∞ 2
转步骤二。
29
用逐次逼近算法求从V1到V6的最短路
v2
5
4
v1
-3
5
7
v3
v6 v4 6
2
v5
30
写在最后
经常不断地学习,你就什么都知道。你知道得越多,你就越有力量 Study Constantly, And You Will Know Everything. The More
3第三章 最短路问题
在这一章中,我们假设遇到的图G都是简单图.这 样假设是合理的,因为如果G有平行弧或平行边,例 如有好几条从vi到vj的弧,那么很显然,可以把这些 弧中最短的一条留下,其余的都去掉,然后在剩下的 简单图上再来求从vs到vt的最短有向路.因为G是简单 图,所以每一条弧ak被它的起点vi与终点vj唯一决定, 因此,下面我们就用<vi,vj>或<i,j>来表示一条弧, 用(vi,vj)或(i,j)来表示边,而用l(i,j)来表示弧或 边的长度.
大家也许会认为,这两个例子本来就不很难,把 它转化成图论问题,倒相当麻烦,有什么好处呢?其 实这种做法还是很有好处的.因为在转化前,想解决 这些问题,只能用凑的办法,或者最多是凭经验.而 转化成图论问题以后,就可以用一种系统的方法解决 了.
最后,还要指出一下,求最短有向路和求最短无 向路这两个问题是密切关联的.下面将看到,求最短有 向路的计算方法也可以用来求最短无向路.
例1 渡河问题:一个人带了一只狼、一只羊和一 棵白菜想要过河,河上有一只独木船,每次除了人以外, 只能带一样东西.另外,如果人不在旁时,狼就要吃羊, 羊就要吃白菜.问应该怎样安排渡河,才能做到把所有 东西都带过河去,而且在河上来回的次数又最少.
当然,这个问题不用图论也能解决.大家一眼就 能看出,第一次应该带着羊过河,让狼和白菜留下, 以下怎么渡法呢? 下面就来讲一下怎样把这个问题转化成最短路问 题. 我们用M代表人,W代表狼,S代表羊,V代表白菜. 开始时,设人和其他三样东西都在河的左岸,这种情 况,我们用MWSV来表示.又例如人带了羊渡到河的右 岸去了,这时左岸留下了狼和白菜,这种情况就用WV 来表示.例如MWS表示人(M)狼(W)羊(S)在左岸而白菜 (V)在右岸这种情况.那么总共可能有几种允许的情况 呢
最速下降法原理及例题实例
求单变量极小化问题:
min f ( x 0 + tp 0 ) = min f (44t , 3 − 24t )
t ≥0 t ≥0
= min(44t − 2)4 + (92t − ቤተ መጻሕፍቲ ባይዱ)2
t ≥0
的最优解 t 0 ,由 0.618 法可得 t 0 = 0.06 ,于是
X 1 = x 0 + t 0 p 0 = (2.70,1.51)T ∇f ( X 1 ) = (0.73,1.28)T ∇f ( X 1 ) = 1.47 > ε
T T
解:计算目标函数的梯度和 Hesse 阵
设d
(k )
= [ d1 , d 2 ] , ∇f ( X ( k ) ) = [ g1 , g 2 ] 得到精确一维搜索步长 αk = g1d1 + g 2 d 2 3d + d 2 2 − 2d1d 2
2 1
取X
(1)
= (0, 0)T ,则 ∇f ( X (1) ) = [ −2, 0] ,所以 d (1) = −∇f ( X (1) ) = [ 2, 0 ] ,
故
f ( x) = f ( X ( 2) + λ d (2) ) = (λ − 1) − (λ + 1) + 2(λ − 1)2 + 2(λ − 1)(λ + 1) + (λ + 1) 2 = 5λ 2 − 2λ − 1 = ϕ 2 (λ )
' 令 ϕ2 (λ ) = 10λ − 2 = 0 可得 λ2 =
一、最速下降法基本原理
(一) 无约束问题的最优性条件
无约束问题的最优解所要满足的必要条件和充分条件是我们设计算法的依据, 为此我们有以下 几个定理。 定理 1 设 f : R → R 在点 x ∈ R 处可微。若存在 p ∈ R ,使
图与网络优化---最短路问题
最短路问题
最短路问题按其不同的要求,可分成下列三种类型: 1、求两个定点之间的最短路; 2、求一个定点到其他各点的最短路; 3、求各点对之间的最短路。 不失一般性,总假定图中无环,以及多重弧只是由 两条互为反向的弧组成的二重弧。
最短路问题
2. 最短路算法 --- Dijkstra 算法 (wij 0)
(2) i=1
转入第2步,令 T(v6)= P(v4)+w46 =11, (v6)=4。 转入第3步,在所有的T标号中, T(v3)=3最小,故令P(v3)=3,S2= S1 {v3}= {v1, v4, v3}, k=3。
最短路问题
v2 v1
6 3 1 1 v5 10 v6 2 3 v7 4 2 6 v9 2 v8 2 v3 6 2 4 v4 10
Dijkstra算法中的标号:T(v), P(v), λ(v),Si
(v ) m
(v ) M (v ) 0
在“已找到的从始点 vs到点 v 的最短路”上, v 的前 一个点是 vm . D 中未找到(不存在)从点 vs到点 v 的路. v = vs.
最短路问题
算 法 步 骤
故对于i=1, 2, …, 6, 有 d(v1, vi)= P(vi), 根据值可以求出从v1到 vi
的最短路 (i=1, 2, …, 6).
故从v1到 v6 的最短路是(v1, v3, v5, v6)或(v1, v2, v5, v6), 长度为8.
最短路问题
例10 已知如图3所示的单行线交
通网,每弧旁的数字表示通过这 条单行线所需要的费用.现在某 人要从v1 出发,通过这个交通网到
v8 去,求使总费用最小的旅行路线。
v2
最短路问题
•
现考查从v4指向其余点的弧 – 由上已知,从v1出发,分别沿(v1,v2)、(v1,v3)到达v2,v3,需要6 单位或3单位的费用,而从v4出发沿(v4,v6)到达v6,所需要的费用 是d(v1,v4)+ w46=1+10=11单位,因为 min{d(v1,v1)+w12,d(v1,v1)+w13,d(v1,v4)+w46}=d(v1,v1)+w13=3 可以断言,从v1到v3的最短路是(v1,v3),d(v1,v3)=3。这样又可以 使点v3变成具P标号的点。
1 P 0 0
2 5 3
3 3 1
4 1 1
5 6 2
6 10 5
7 9 5
8 12 5
9 M ∞
λ
T •
根据λ值可以求出从v1到vi的最短路(i=1,2,…,8)。 例如,为求v1到v8的最短路,考查λ(v8),因λ(v8)=5,故最短 路包含弧(v5,v8);再考查λ(v5),因λ(v5)=2,故最短路包含弧 (v2,v5);类推,λ(v2)=3,λ(v3)=1,于是最短路包含弧(v3, v2),及(v1,v3),这样从v1到v8的最短路是(v1,v3,v2,v5,v8)。
• 在Dijkstra方法中
– P,T分别表示某个点的P标号、T标号, – Si表示第i步时,具P标号点的集合。 – 为了在求出从vs到各点的距离的同时,也求出从vs 到各点的最短路,给每个点v以一个λ值。算法终 止时,如果λ(v)=m,表示在从vs到v的最短路上,v 的前一个点是vm;如果λ(v)=M,则表示D中不含 从vs到v的路;λ(v) = 0, 表示v = vs。
i
i i
i
• 用Dijkstra方法求上例中从v1到各个顶点的最短路
网络规划2-最短路问题
第二节 最短路问题
一、最短路问题
1、什么是最短路? 在一网络中,求给定一初始点vs到一终点vt的一条路长 最短的路(即路的各边权数之和最小)。 2、最短路问题: 例6.2.1:以例5.1.1为例 某企业拟铺设一条从A地到F地的输油管道,可供选择 路线及各点间的距离如下图6.2-1 ;试问:应如何选择路 线使总距离最短?
购置年限 购置费用 使用年数 维修费用 2000 15 0-1 2 2001 16 1-2 6 2002 17 2-3 12 2003 18 3-4 20 2004 19 4-5 38
§6.2 最短路问题
二、最短路的求解方法
1、穷举法: 1)适用于路不多的简单问题; 2)求出每条路的路长,比较各条路长求一路长最短的路. 3)例6.2-3: 求如下网络图6.2-2中点1到点6的最短路。
1
2
9
2
6
3
4
5 9
ቤተ መጻሕፍቲ ባይዱ4 6
6
3
图6.2-2
5
§6.2 最短路问题
求解步骤如下图6.2-3:
1
2
9
2
6
3
4
5 9
4 6
6
3
序号 1 2 3 4 5 路 1-2-4-6 1-2-4-5-6 1-3-5-6 1-3-2-4-5-6 1-3-2-4-6
图6.2-3 路长 16 23 17 22 15
5
最短路
1-3-2-4-6
§6.2 最短路问题
2、标号法: 例6.2-4:以例6.2-1为例,解题步骤如下图6.2-4。
6 4 2 3 6 5 8
C1
8 7 4 5 3
5
section2.5
最短路问题在实际工作中应用
1、通讯网络中最可靠问题 、 2、最大容量问题 、 3、统筹方法中求关键路线 、 4、背包问题 、 5、选址问题 、 6、工件加工顺序问题 、 7、中国邮递员问题 、
二、Dijkstra算法 算法 Dijkstra算法是 算法是E.W. Dijkstra于1959年提 算法是 于 年提 出的, 出的,是目前公认的对所有权非负的情况 的最好算法。 的最好算法。
( D 这时, ( p )中的元素 lij p )之值就是顶点 的最短路之值 d (vi , v j ) 。
vi与 v j 之间
算 法:指一组有序规则,它准确告知,为解决给定的问 题,何时应做何种操作。 有效算法: 有效算法:又称好算法,按Edmonds定义,是指对于 给定的问题,该问题的图论算法的计算量 f ( p, q) = ο ( P( p, q)) (这里 P ( p, q )是关于 p 和 q 的多项式 ),其中 p 和q 是某个图的顶点数和边数。
2.5最短路问题 最短路问题
一、问题的提出
数 ω (G ) ,称为这条边的权,则 G连同它的每一条边 上的权称为一个赋权图 网络。记为G=(V,E, ω )(或 赋权图或网络 赋权图 网络 N=(V,E, ω )) 赋权图N=(V,E, ω )中,一条(u-v)路P的长度定义为 赋权图
ω ( P) =
(0) 0 = (lij ) p× p称为 G 的边权矩阵。这里
(0) lij = ω (vi v j ),1 ≤ i, j < p 。
然后:计算出p个矩阵 D (1) , D (2) ,, D ( p ) ,其中
( ( ( k k D ( k ) = (lijk ) ) p× p , k = 1, 2 , p;lijk ) = min{lijk 1) , lik1 + lkj1}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§1 变分法简介作为数学的一个分支,变分法的诞生,是现实世界许多现象不断探索的结果,人们可以追寻到这样一个轨迹:约翰·伯努利(Johann Bernoulli ,1667-1748)1696年向全欧洲数学家挑战,提出一个难题:“设在垂直平面内有任意两点,一个质点受地心引力的作用,自较高点下滑至较低点,不计摩擦,问沿着什么曲线下滑,时间最短?”这就是著名的“最速降线”问题(The Brachistochrone Problem )。
它的难处在于和普通的极大极小值求法不同,它是要求出一个未知函数(曲线),来满足所给的条件。
这问题的新颖和别出心裁引起了很大兴趣,罗比塔(Guillaume Francois Antonie de l'Hospital 1661-1704)、雅可比·伯努利(Jacob Bernoulli 1654-1705)、莱布尼茨(Gottfried Wilhelm Leibniz,1646-1716)和牛顿(Isaac Newton1642—1727)都得到了解答。
约翰的解法比较漂亮,而雅可布的解法虽然麻烦与费劲,却更为一般化。
后来欧拉(Euler Lonhard ,1707~1783)和拉格朗日(Lagrange, Joseph Louis ,1736-1813)发明了这一类问题的普遍解法,从而确立了数学的一个新分支——变分学。
有趣的是,在1690年约翰·伯努利的哥哥雅可比·伯努利曾提出著名的悬链线问题 (The Hanging Chain Problem)向数学界征求答案,即,固定项链的两端,在重力场中让它自然垂下,问项链的曲线方程是什么。
在大自然中,除了悬垂的项链外,我們还可以观察到吊桥上方的悬垂钢索,挂着水珠的蜘蛛网,以及两根电线杆之间所架设的电线,这些都是悬链线(catenary )。
伽利略(Galileo, 1564~1643)比贝努利更早注意到悬链线,他猜测悬链线是抛物线,从外表看的确象,但实际上不是。
惠更斯(Huygens, 1629~1695)在1646年(当时17岁),经由物理的论证,得知伽利略的猜测不对,但那时,他也求不出答案。
到1691年,也就是雅可比·伯努利提出悬链线问题的第二年,莱布尼兹、惠更斯(以62岁)与约翰·伯努利各自得到了正确答案,所用方法是诞生不久的微积分,具体说是把问题转化为求解一个二阶常微分方程解此方程并适当选取参数,得)(21ax axe e ay -+= (1)即为悬链线。
悬链线问题本身和变分法并没有关系,然而这和最速降线问题一样都是贝努利兄弟间的相互争强好胜、不断争吵的导火索,虽然雅可比·贝努利在解决悬链线问题时略占下风,但他随后所证明的“悬挂于两个固定点之间的同一条项链,在所有可能的形状中,以悬链线的重心最低,具有最小势能”,算是扳回了一局,俩兄弟扯平了!之所以提到悬链线问题,有两方面考虑,其一,这是有关数学史上著名的贝努利家族内的一个趣闻,而这是一个在变分法乃至整个数学物理领域有着巨大贡献的家族,其二,有关悬链线的得几个结论,可以用变⎪⎪⎩⎪⎪⎨⎧='=+=0)0()0()(10222y y y dx dy a dxy d分法来证明!现实中很多现象可以表达为泛函极小问题,我们称之为变分问题。
求解方法通常有两种:古典变分法和最优控制论。
我们这儿要介绍的基本属于古典变分法的范畴。
1.1 变分法的基本概念 1.1.1 泛函的概念设S 为一函数集合,若对于每一个函数S t x ∈)(有一个实数J 与之对应,则称J 是定义在S 上的泛函,记作))((t x J 。
S 称为J 的容许函数集。
例如,在],[10x x 上光滑曲线y(x)的长度可定义为⎰'+=121x x dx y J (2)考虑几个具体曲线,取1,010==x x ,若x x y =)(,则⎰=+==1211)())((dx x J x y J若y(x)为悬链线,则⎰⎰-----=+=-+=+101012224)(1)2(e e dx e e dx e e e e J xx x x x x 对应],[101x x C 中不同的函数y(x),有不同曲线长度值J ,即J 依赖于y(x),是定义在函数集合],[101x x C 上的一个泛函,此时我们可以写成))((x y J J =我们称如下形式的泛函为最简泛函⎰=ft t dt t xt x t F t x J 0))(),(,())(( (3) 被积函数F 包含自变量t ,未知函数x (t)及导数x(t)。
上述曲线长度泛函即为一最简泛函。
1.1.2 泛函极值问题考虑上述曲线长度泛函,我们可以提出下面问题:在所有连接定点),(),(1100y x B y x A 和的平面曲线中,试求长度最小的曲线。
即,求{}1100101)(,)(],,[)()()(y x y y x y x x C x y x y x y ==∈∈,使⎰'+=121))((x x dx y x y J取最小值。
此即为泛函极值问题的一个例子。
以极小值为例,一般的泛函极值问题可表述为,称泛函))((t x J 在S t x ∈)(0取得极小值,如果对于任意一个与)(0t x 接近的S t x ∈)(,都有))(())((0t x J t x J ≥。
所谓接近,可以用距离ε<))(),((0t x t x d 来度量,而距离可以定义为|})()(||,)()({|max ))(),((0000t x t xt x t x t x t x d ft t t --=≤≤泛函的极大值可以类似地定义。
其中)(0t x 称为泛函的极值函数或极值曲线。
1.1.3 泛函的变分如同函数的微分是增量的线性主部一样,泛函的变分是泛函增量的线性主部。
作为泛函的自变量,函数)(t x 在)(0t x 的增量记为)()()(0t x t x t x -=δ也称函数的变分。
由它引起的泛函的增量记作))(())()((00t x J t x t x J J -+=∆δ如果J ∆可以表为))(),(())(),((00t x t x r t x t x L J δδ+=∆其中L 为x δ的线性项,而r 是x δ的高阶项,则称L 为泛函在)(0t x 的变分,记作))((0t x J δ。
用变动的)(t x 代替)(0t x ,就有))((t x J δ。
泛函变分的一个重要形式是它可以表为对参数α的导数:))()(())((=+∂∂=ααδαδt x t x J t x J (4)这是因为当变分存在时,增量)),(()),(())(())((x t x r x t x L t x J x t x J J αδαδαδ+=-+=∆ 根据L 和r 的性质有)),(()),((x t x L x t x L δααδ=0)),((lim)),((lim00==→→x xx t x r x t x r δαδαδααδαα所以ααδαδααα)()(lim)(00x J x x J x x J -+=+∂∂→= )(),(),(),(limx J x x L x x r x x L δδααδαδα==+=→1.2 泛函极值的相关结论1.2.1 泛函极值的变分表示利用变分的表达式(4),可以得到有关泛函极值的重要结论。
泛函极值的变分表示:若))((t x J 在)(0t x 达到极值(极大或极小),则0))((0=t x J δ (5)证明:对任意给定的x δ,)(0x x J αδ+是变量α的函数,该函数在0=α处达到极值。
根据函数极值的必要条件知0)(00=+∂∂=ααδαx x J 再由(4)式,便可得到(5)式。
变分法的基本引理:],[)(21x x C x ∈ϕ,],[)(211x x C x ∈∀η,0)()(21==x x ηη,有⎰≡210)()(x x dx x x ηϕ,则],[ ,0)( 21x x x x ∈≡ϕ。
证明略。
1.2.2 泛函极值的必要条件考虑最简泛函(3),其中F 具有二阶连续偏导数,容许函数类S 取为满足端点条件为固定端点(6)的二阶可微函数。
00)(x t x =,f f x t x =)( (6)泛函极值的必要条件:设泛函(3)在x(t)∈S 取得极值,则x(t)满足欧拉方程0=-x x F dtd F (7) 欧拉方程推导:首先计算(3)式的变分:0))()((=+∂∂=ααδαδt x t x J J ⎰=++∂∂=f t t dt t x t x t x t x t F 00))()(),()(,(ααδαδα⎰+=ft t x x dt x xx t F x x x t F 0]),,(),,([ δδ 对上式右端第二项做分布积分,并利用0)()(0==f t x t x δδ,有⎰⎰-=fft t x t t x xdt xx t F dtddt x xx t F 0),,(),,(δδ , 所以⎰-=ft t x x xdt F dtd F J 0][δδ 利用泛函极值的变分表示,得0][0=-⎰ft t x x x d t F dtd F δ 因为x δ的任意性,及0)()(0==f t x t x δδ,由基本引理,即得(7)。
(7)式也可写成0=---x F x F F F x x x x x t x(8) 通常这是关于x(t)的二阶微分方程,通解中的任意常数由端点条件(6)确定。
1.2.3 几种特殊形式最简泛函的欧拉方程(i) F 不依赖于x,即),(x t F F =这时0≡x F ,欧拉方程为0),(=x t F x ,这个方程以隐函数形式给出)(t x ,但它一般不满足边界条件,因此,变分问题无解。
(ii) F 不依赖x ,即),(xt F F = 欧拉方程为0),(=xt F dtdx 将上式积分一次,便得首次积分1),(c xt F x = ,由此可求出),(1c t x ϕ= ,积分后得到可能的极值曲线族()dt c t x ⎰=1,ϕ(iii) F 只依赖于x,即)(x F F = 这时0,0,0===x x x t x F F F ,欧拉方程为0=x x F x由此可设0=x 或0=x x F ,如果0=x ,则得到含有两个参数的直线族21c t c x +=。
另外若0=x x F 有一个或几个实根时,则除了上面的直线族外,又得到含有一个参数c 的直线族c kt x +=,它包含于上面含有两个参数的直线族 21c t c x += 中,于是,在)(xF F =情况下,极值曲线必然是直线族。