运筹学——图与网络模型3
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
v xij x ji 0 vj vj v
vi s vi s, t —守恒方程 vi t
它表示发点s有值为v的出流,收点t有值为v的入流,除收点和发点 外,流入顶点vi的流量等于流出vi的流量,称此规则为守恒方程。
v1
3,1
2,1
v2
1,1
3,2
C cs1, cs3 , c12 , c23 , c2t , c34 , c42 , c4t
从vt开始,按照标号点的第一个标号,用反向追踪的方法, 找出一条从 vs 到 vt 的增广链 μ ,如图中双箭线所示。不难看 出,μ+={(vs ,v1),(v3 ,vt)},μ– ={(v2 ,v1) , (v3 ,v2)}, 取θ=1,在μ上调整x,得到
v2
(3 , 3) s (5(5 2) ) , ,1
(1 , 1) (1 , 1)
(5 , 1)
v1 (2 , 2) v3 (vs , 4) (-v2 , 1)
(2 , 1)
(4)看v2:在弧(v2 ,v4)上,x24 =3
<c24=4,故给v4标
号(v2 , l(v4) )其中 l(v4 )=min[ l(v2) , (c24 –x24)]= min[1 , 1]=1. 在弧( v3 ,v2)上, x32 =1 > 0 ,故给 v3 标号(-v2 , l(v3)) , 其中 l (l(v3 )= min[l(v2) , x32] = min[1 , 1] =1。
10
2
10
10
v1
(2,1)
v2
(3,1)
40
(3,2)
20
10
s
15 40
vs 1
15
(1,0) 15
v4
v3
40
(2,2)
(1,1)
15
t
v6
15 45
v t8
(2,2)
(2,1)
v30 4
20
v3
v7
令 xij 为通过弧 (vi , v j ) 的流量,则有流量与容量的关系: 0 xij cij —流量限制 流 x ( xij )要满足守恒规则:
(5)在v3 ,v4中任意选一个,比如v3 ,在弧(v3 ,
vt )
上 , x3t =1< c3t =2, 故 给 vt 标 号 (v3 ,l(vt)), 其 中 l(vt)=min[l(v3),(c3t-x3t)]=min[1,1]=1.因为 vt 被标上号, 根据标号法,转入调整过程。
2.调整过程
2.增广链与截集
1)前向弧、反向弧:设P 是D 中从S 到t 的途径,若其中某一弧 (vi , v j ) 的方向也是从S 到t 的方向,则称它为前向弧,否则称 为反向弧。
2)增广链:设 x ( xij ) 是G上一个可行流,如果对 P 的每个前向弧 (vi , v j ) 有 xij cij,每个反向弧 (vi , v j )有 xij 0 ,则称 途径P是关于流 x ( xij )的增广链。
v1
3,1
2,1
前向弧
v2
1,1
3,2
v1
3,2
2,2
v2
1,0
3,2
s
2,2
1,0
t
2,1
s
2,2
1,0
t
2,2
v3
前向弧
2,2
v4
v3
2,2
v4
反向弧
某河流中有4个岛屿,从两岸至各岛屿之间共有13座桥梁相连。 6 C 13 A 在一次敌对的军事行动中,指挥官决定炸断一些桥梁, 12 5 9 7 以切断两岸的交通联系。 11 2 问题是至少需要炸断哪几座桥梁,才能达到目的。 4 1 F
(4 , 3)
(1 ,, 0) 1 1 ((1, ,10) 1 )
v4
(5 , 3)
(3 , 0)
(2 ,, 1) (2 2) v3
t
v1
(2 , 2)
调整后的可行流x*,如图所示,再对这个可行流从新进 行标号过程,寻找增广链。
v4
(5 , 3)
(3 , 0)
(2 , 1)
t
v1
(2 , 2)
v3
v2 (3 , 3)
(4 , 3)
v4
(5 , 3) (1 , 1) (3 , 0)
解:用标号法。
1.标号过程。
s (5 , 1)
(1 , 1)
(2 , 1)
1
v (1)首先给vs标号(0,+∞) (2)看vs : 在弧(vs ,v2)上,xs2=cs3=3
v xij x ji 0 vj vj v
vi s vi s, t —守恒方程 vi t
可行流:满足流量限制和守恒方程的流称为可行流,也称为(s,t)-流。 最大流问题(MFP) :求流量最大的可行流问题。 求最大流问题的线性规划模型为: max
v
xij x ji v, vi s vj vj xij x ji v, vi t vj vj s.t. xij x ji 0, vi s, t vj vj 0 xij c ji , 对任意 (vi , v j ) A
如果 v j 被标号且存在一条弧 (vi , v j ) 使 xij 0 ,则给未标号
的顶点 v i 标上 ( j, (i)) ,其中 (i) min{ ( j ), xij }
(4)当过程继续到t被标号时,一个从 S 到 t 的增广链产生了, 因而流量可以增加 (t ) ;如果过程没有进行到 t 就结束了, 则不存在从 S 到 t 的增广链,说明当前已是最大流。
Cij 0
x 非饱和弧: ij Cij
非零流弧:xij 0
增广路特点:1、前向弧为非饱和弧。 2、后向弧为非零流弧。 其特点可说明:前向弧可增加流量。后向弧可减少流量。
5)几个结论
①任一可行流的流量总不超过某个截集的截量。
②(增广链定理):一个可行流是最大流的充要条件是 不存在增广链。
引例
某电力公司有三个发电厂,它们负责五个城市的供电任务,输电 网络如下图所示。图中顶点v1、v2、v3代表发电厂, v4、v5、v6、 v7、v8代表城市。已知三个发电厂在满足五个城市用电需求量后 还分别剩余15MW、10MW和40MW的发电能力,见下图顶点v1、 v2、v3上的数字。输电网还剩余输电能力,见下图中弧旁的数字。 城市v8由于经济发展要求增加供应电力65MW。问该输电网的输 电能力能否满足需要?若不能,应增建哪些输电线路。
(V1,V2 ) {(vi , v j ) : vi V1, v j V2 , (vi , v j ) A}
截量:截集(V1,V2)中所有弧的容量之和称为该截集的截 量,记为C(V1,V2),即
C (V1 , V2 )
ij ( vi , v j )(V1 ,V2 )
c
饱和弧: xij 4) 零流弧: xij
③(最大流最小截集定理):任何带发点 s 和收点 t 的容量
网络中,最大流的流量等于最小截集的截量。
v2
2
v4
4
4 2 1 3 7
v5
v6
求网络图中最大流的流量。
v1
6
v3
5
v2 v2
2,2
v4
v2 2
2,2
v4
4,4
v1 1
4,4
2,2 -2 +3
v3 3
4,4
v1 v1
4,4
2,1 -1
1,0 +1
D
8
10
E
B 1 2
3
A
5
6
B
3 4 7
C
10
D
8
9 11
E
12 13
F
3)截集:将网络D=(V,A,C)的顶点集V分为两部分V1和V2,使 s V1 , t V2 ,且 V1 V2 ,V1 V2 V ,则把从V1指向V2的 弧的全体称为分离V1和V2的一个截集,记为(V1,V2),即
为了在图中将cij 和xij 都表示出来,一般在弧(vi,vj)旁标上(cij ,xij )。
标上流量和容量的图称为流量图。
v1
3,1
2,1
v2
1,1
3,2
C cs1, cs3 , c12 , c23 , c2t , c34 , c42 , c4t
t x xs1, xs3 , x12 , x23 , x2t , x34 , x42 , x4t
10
v2
40
10
v5
20 15 10
v1
15
15
v4
30 40
v6
15 45
v8
v3ห้องสมุดไป่ตู้
20
v7
四.最大流问题
1.网络流 设有向网络D=(V,A,C), 弧 (vi , v j ) A 的权 cij 0 为容量, 且 cij C 。
通过弧 (vi , v j )的量称为流量,记作 xij 。 所有弧上流量的集合 xij 称为网络D的一个流,记作x。
条弧 (v j , vi ),如果 x ji 0 且 v j 未标号,则给 v j 一 个标号 (i, ( j)) ,其中 ( j) min{x ji , (i)} 。 (3)如果 t 已被标号,转第三步,否则转(1)。 第三步 在增广链的每个弧上改变流量,其方法是: 前向弧的 流量增加 (t ),反向弧的流量减少 (t )。然后抹去除s外的 所有顶点标号,转第二步。 第四步 此时当前流是最大流,且把所有标号点集记为 S ,则
,1 0, 2, 1 2, 2,1 1 , , , 2, ,1 2 3 2,1 3 2, , ,
s
2,2
1,0
2,1
v3
2,2
v4
D有两个特殊顶点s,t: s 仅有出弧而没有入弧, 称为发点; t 仅有入弧而无出弧, 称为收点。 网络中既非发点又非收点的其它点称为中间点。
下面只研究具有一个发点和一个收点的网络。 v5 v
c 一个标号 (i, ( j )) ,其中 ( j) min{ ij xij , (i)} ;对每
(S , S ) 是D 的最小割。
3)实例
求图的网络最大流,弧旁的权数表示(cij , xij)。
v2
(3 , 3) s (5 , 1)
(4 , 3)
(1 , 1) (1 , 1)
, 2 1 3 2 1 2 32 ,, , , , ,
s
2,2
1,0
2,1
t x xs1, xs3 , x12 , x23 , x2t , x34 , x42 , x4t
,1 0 2 2 1 1 12 , , , , , ,
v3
2,2
v4
0 xij cij
—流量限制
(2 , 2)
v3
, 不
具备标号条件。在弧(vs ,v1)上,xs1=1< cs1= 5 , 故给v1标号(vs , l(v1)),其中 l(v1)=min[l(vs),(cs1 –xs1)]=min[+∞, 5 – 1]=4.
(3)看v1:在弧(v1 ,v3)上,x13=c13=2,不具备标号条件.
5,5
3,2
v6 6
1,1
3,2 7,4
v5
v6
6,3
+4 7,3
v5 v5
6,4
+2
v3 v
3
5,5
3.Ford-Fulkerson算法
1)基本思想 从任意一个可行流(例如零流)出发,找一条从S到t 的增广 链,并在这条增广链上增加流值,于是便得到一个新的可行 流,继续此过程,直到找不出从S到t 的增广链为止。该算法 关键是找从S到t 的增广链,这可通过标号法来实现,具体的 规则如下: (1)在标号过程中,一个顶点总处于下述三种状态之一: ①已标号且已检查过(即该顶点已有一标号且所有相邻点 该标的都已标好); ②已标号但未检查过;
③未标号。
(2)一个顶点 v i 的标号有两个分量组成,形如 ( j, (i)) 或 ( j, (i)) 其第一个分量表示前继或后继顶点,第二个分量表示允许增 加的流量。 (3)如果顶点 v j 被标号且存在一条弧 (v j , vi ) ,使 x ji c ji ,则给
未标号的 v i 标上 ( j, (i)) ,其中 (i) min{ ( j),c ji x ji} ;
2)Ford-Fulkerson算法步骤: 第一步 令 x ( xij ) 是任意整数可行流,给s 一个永久标号 (, ) 。 第二步(1)如果所有标号顶点都已检查过,转第四步。 (2)找一个已标号但未检查的顶点 v i ,并作如下检查:对每
一条弧 (vi , v j ),如果 xij cij 且 v j 未标号,则给 v j
在弧(v2 ,v1)上,x21 =1 > 0 ,故给 v2标号(-v1 , l(v2)),其中 l(v2)=min[l(v1) , x21 ] = min [ 4 , 1 ]= 1.
(–v1 , 1) v2 (4 , 3) (3 , 3)
(0,+)
s
(v2 , 1) v4 (5 , 3)
(3 , 0) t (v3 , 1)