当前位置:文档之家› 第八章图与网络分析

第八章图与网络分析


算法步骤: 1.给始点vs以P标号 P(vs ) 0 ,这表示从vs到 vs的最短距离 为0,其余节点均给T标号,T (v j ) ( j 2,3,L , n) 。 2.设节点 vi 为刚得到P标号的点,考虑点vj,其中
(vi , v j ) E ,且vj为T标号。对vj的T标号进行如下修改:
称为这个截集的容量,记为 C(S , S ) 。
S (vs , v2 ) S (v1 , v3 , v4 , vt )
(S , S ) (vs ,v1 ) , (v2 ,v4 ) , (v2 , v3 )
C(S , S ) ls1 ls
45
3
S
v2 6
v3
7
3
vt
8 v4
5 (3)
v2
v5
13 (5)
6(3) 5 (2)
v1
4 (1) 5 (2)
v4
9 (3)
v3
5 (0)
4 (2) 4 (1)
v6
9 (5)
v7
10 (1)
设 V1 v1 , v2 , v5 ,V2 v3 , v4 , v6 , v7 则截集为 (V1,V2 ) (v1v3 ), (v2 , v4 ), (v5 , v7 ) 容量为24
T (v3 ) min[ T (v3 ), P(v1 ) l13 ] min[ , 0 5] 5
(3) P(v2 ) 3
(4)T (v3 ) min[ T (v3 ), P(v2 ) l23 ] min[ 5 , 3 1] 4
T (v4 ) min[ T (v4 ), P(v2 ) l24 ] min[ , 3 2] 5
3、容量网络G,若 为网络中从vs到vt的 一条链,给 定向为从vs到vt, 上的弧凡与 方向相同的称为前向弧,凡与 方向相反的 称为后向弧,其集合分别用 和 表示。
f 是一个可行流,如果满足:
0 fi j ci j 0 fi j ci j
• Dijkstra算法的基本思想是:从vs出发,逐步向外 寻找最短路。在运算过程中,与每个点对应,记
录一个数,叫做一个点的标号。它或者表示从vs 到该点的最短路权叫做P 标号,为永久性标号 (permanent label)。或者表示从vs 到该点最短 路权的上界,叫做T 标号,为试探性标号 (tentative label)。算法的每一步是去修改T标号, 把某一个具有T 标号的点改变为具有P 标号的点, 使图D中具有P 标号的顶点多一个。这样,对于有 n个顶点的图,至多经过n-1步,就可求出从始点vs 到各点vj 及终点的最短路。
-1
( v2 ,-3) v5
6 (0,0)
v1
8
-1 -3 2
1
-3
-2 v3 1
v6 7
(v8v6 ,6)
3
( -5
v1
,-2)
( v3 ,-1)
1
2
-5
v4 ( v3 ,-7)
-1
v7 ( v4 ,-5)
例四、 某工厂使用一种设备,这种设备在一定的年限内 随着时间的推移逐渐损坏。所以工厂在每年年初都要决定设 备是否更新。若购置设备,每年需支付购置费用;若继续使 用旧设备,需要支付维修与运行费用,而且随着设备的老化 会逐年增加。计划期(五年)内中每年的购置费、维修费与 运行费如表所示,工厂要制定今后五年设备更新计划,问采 用何种方案才能使包括购置费、维修费与运行费在内的总费 用最小。
这与已知 d v4 5 相矛盾。故假设不成立,即 v4 与
上述5点间必存在至少两条边,设其中一点为 vk , 则 vk , v4, v9 两两相连,即存在三人互相握过手。
用破圈法求出下图的一个生成树。
v2
e1 v1
e4 e7 e3 v4 e8
e2
e5
e6
v2
v3
e1
e4 e7
v3
v1 v2 v3
v1 v2
v5
v3
v3
v3
v5
v6v1 v4
v5 v6
v4
v1
v1
v2
v2
v3
v1 v2
v5 v6
三 、最短路问题
最短路的一般提法为:设 G (V , E) 为连通图,图中各边 (vi , v j ) 有权 li(j li j 表示 vi , v j 之间没有边),vs , vt 为图中任意两点,求一条路 ,使它为从vs到 vt 的所有 路中总权最短。即:
P P (t)
(t 1)
1j
1j
(j 1, 2 , , n)
则停止计算,
P(t 1j
)(j

1,
2
,

,
n)即为v1到各点的最短路长。
例二、 求图中v1到 各点的最短路
v1 v2
v1 0 -1
v2 6 0
v3
-3
v4 8
v5
-1
v6
v7
v8
v2 -1
v5
6 -1
-3 2
v1
-2 v3 1
(vi , v j ) 即 中的每一条弧都是非饱和弧 (vi , v j ) 即 中的每一条弧都是非零流弧
则称 为从vs到vt 的关于f 的一条增广链。
推论 可行流f 是最大流的充分必要条件是不存 在从vs到vt 的关于f 的一条可增广链。
5 (3)
v2
v5
而(v3 , v2 ) 和 (v4 , v5 ) 不是该集中的弧
v1
e3
v4 e8
v5
e2
e5
e6
v3
v5
v2
e4
v1 e2 v3
v4 e8
v5
e6
(一)破圈法
(二)避圈法
在图中任取一条边e1,找一条与e1不构成圈的边e2, 再找一条与{e1,e2}不构成圈的边e3。一般设已有{e1, e2,…,ek},找一条与{e1,e2,…,ek}中任何一些边 不构成圈的边ek+1,重复这个过程,直到不能进行为 止。
图与网络分析
(Graph Theory and Network Analysis)
图与网络的基本知识 树及最小树问题 最短路问题 最大流问题
最小费用最大流问题
对 v9 而言,因 d v9 6 ,所以 v4 , v5, v6 , v7 中至少有 两点存在与 v9 的连线。设该两点为 v4 和 v5 ,假设v4 和与 v9 相联的其它5点之间无边,则 d v4 85 3 ,
L() li j 最小。 (vi , v j )
(一)、 狄克斯屈拉(Dijkstra)算法 适用于wij≥0,给出了从vs到任意一个点vj的最短路。
原理:若 vs,v1,v2,L ,vn1,vn是从 vs 到 vn的最短路,则 vs ,v1,v2,L , vn1 一定是从 vs到 vn1的最短路。
T新 (v j ) min[T旧(v j ) , P(vi ) li j ]
3.比较所有具有T标号的节点,把最小者改为P标号,即:
P(vk ) min[T (v j )]
当存在两个以上最小者时,可同时改为P标号。若全部节 点均为P标号,则停止,否则用vk代替vi,返回步骤(2)。
例1 用Dijkstra算法求下图从v1到v6的最短路。
网络D上的流,是指定义在弧集合E上的一个函
数 f f (vi , v j ) { fi j } ,其中f(vi ,vj) =fij 叫做弧(vi,vj)上
的流量。
2、称满足下列条件的流为可行流:
(1)容量条件:对于每一个弧(vi ,vj)∈E

0 fij cij 。
(2)平衡条件:
是一个增广链
显然图中增广链不止一条
4、容量网络G =(V,E,C),vs为始点, vt为终点。如果把V分成两个非空集合 S , S 使 vs S , vt S ,则所有始点属于S,而终 点属于 S 的弧的集合,称为由S决定的截集, 记作 (S , S )。截集 (S , S ) 中所有弧的容量之和,
对于发点vs,有
fs j
f js W
(vs , v j )E
(v j , vs )E
对于收点v ,有 t
ft j
f jt W
(vt , v j )E
(v j , vt )E
对于中间点,有

fi j
f ji 0
(vi , v j )E
(v j , vi )E
可行流中 fij=cij 的弧叫做饱和弧,fij<cij的
弧叫做非饱和弧。fij>0 的弧为非零流弧,
fij=0 的弧叫做零流弧。
5 (3)
v2
v5
13 (5)
6(3) 5 (2)
v1
4 (1) 5 (2)
v4
9 (3)
v3
5 (0)
4 (2) 4 (1)
v6
9 (5)
v7
10 (1)
图中 (v3 , v6 ) 为零流弧,其余为非饱和弧。
v2 2
v4
3
v1
1
4
22
v6
5 v3 4
2 v5
解 (1)首先给v1以P标号,给其余所有点T标号。
P(v1) 0
T (v j ) ( j 2,3,L ,6)
(2) T (v2 ) min[ T (v2 ), P(v1) l12 ] min[ , 0 3] 3
P1 j miin{P1i li j }
开始时,令
相关主题