100
1 运运运 运运运运运运

运筹学

  • Upload
    nituna

  • View
    30

  • Download
    2

Embed Size (px)

DESCRIPTION

运筹学. 图与网络分析. 第十章 图与网络. 赵 玮. 主要内容:. 10.1 基本概念 10.2 最短路问题 ( 一) Bellman 最优化原理 (二) Dijustra 算法(双括号法) (三) 通信线路布施问题 (四) 设备更新问题 10.3 最小生成树 (一) 基本概念与理论 (二) Kruskal 算法(加边法、破圈法) (三) 丢边法(破圈法). 主要内容:. 10.4 最大流问题 (一) 基本概念 - PowerPoint PPT Presentation

Citation preview

Page 1: 运筹学

1

运筹学

图与网络分析

Page 2: 运筹学

第十章       图与网络第十章       图与网络

赵 玮

Page 3: 运筹学

3

主要内容:主要内容: 10.1 基本概念 10.2 最短路问题 (一) Bellman最优化原理 (二) Dijustra算法(双括号法) (三)通信线路布施问题 (四)设备更新问题 10.3 最小生成树 (一)基本概念与理论 (二) Kruskal算法(加边法、破圈法) (三)丢边法(破圈法)

Page 4: 运筹学

4

主要内容:主要内容: 10.4 最大流问题 (一)基本概念 (二)双标号算法 10.5 最小费用最大流 (一)基本概念

(二)求解算法

Page 5: 运筹学

5

§§ 10.1 10.1 基本概念基本概念

1 图 def1 :一个无向图(简称为图) G 是一个有序

的二元组,记为 G=(V, E) 。其中 V={V1…Vn}称为 G 的点集合, E=(eij) 称为 G 的边集合, evj 为连接 VV与 Vj 的边。

Page 6: 运筹学

6

若 N和 E 均为有限集合,则称为G 为有限图,否则称无限图。

若 G 中既没有有限回路(圈),也没有两条边连接同一对点,则称 G 为 简 单 图 。 如 右 图 之( a),右图之( b )不是简单图。

若 G 为简单图,且 G 中每个点对之间均有一条边相连,则称 G 为完全图。如图( a )是简单图,但不是完全图。

图 图 aa

图 图 bb

Page 7: 运筹学

7

def 2 :一个有向图 G 是一个有序的二元组,记为 G=(V, A) ,其中 V=(V1V2…Vn) 称为 G 的点集合, A={aij} 称为 G 的弧(有向边)集合, aij 是以 Vi 指向 Vj 的一条弧。

|V|=n 表示 G 中节点个数为 n ,此节点个数 n也称为图 G 的阶

|A|=m 表示有向图 G 中弧的个数为 m 任一顶点相关联(连接)的边的数目称为该顶

点的次数

Page 8: 运筹学

8

2 连通图 def 3 :在有向图 G 中 , 一个点和边的交替序列

{Vi eij Vj…Vk ekl Vl} 称为 G 中从点 Vi到 Vl 的一条路,记为 A ,其中 Vi 为此路 A 的起点, Vj 为路 A 的终点;若路 A 的起点与终点重合 , 则称 A 为回路;又若 G 中点 Vi与 Vj 间存在一条路,则称点 Vi与 Vj 是连通的;若 G中任何二点都是连通的,则称 G 为连通图,或图 G 为连通的。在无向图中有对应的概念。

有向图 路 回路 无向图 链 圈

Page 9: 运筹学

9

3 子图

def 4 :设有两个图: G1= (V1, E1) , G2= (V2,

E2) 若有 ,则称 G1为 G2 的子图,

记作 ;若有 V1=V2 而 , 则称图

G1= (V1, E1) 是图 G2= (V2, E2) 的生成子图(支撑

子图)。

21 VV 21 EE

21 GG 21 EE

Page 10: 运筹学

10

例:下示图 G1 是图 G 的子图,图 G2 是图 G 的生成子图。

VV11 VV33

VV22 VV44

VV11

VV22 VV44

VV11 VV33

VV22 VV44

(( aa ))图图GG

(( bb ))图图GG11

(( cc ))图图 GG22

Page 11: 运筹学

11

4 赋权图(加权图)与网路def 5 :设 G 是一个图(或有向图),若对 G 的每

一条边(或弧) eij 都赋予一实数 ωij ,称其为该边(弧)的权,则 G 连同其他弧上的权集合称为一个赋权图,记作 G= (V, E, W) 或 G= (V, A, W) ,此中 W={ωij}, ωij 为对应边(弧) eij 的权。若 G= (V, E, W) (或 (V, A, W) )为赋权图,且在 G的 V 中指定一个发点(常记为 Vs )和一个收点(记为 Vt),其余点称为中间点,则称这样指定了发点与收点的赋权图 G 为网络。

Page 12: 运筹学

12

§§ 10.2 10.2 最短路问题最短路问题 def 6 :设 G =( V, A, W )为一个赋权有向图,

Vs 为指定发点, Vt 为指定收点,其余为中间点,P为 G 中以 Vs到 Vt 的一条有向路,则称

为路 P 的长度,若有

则称 为 G 中从 Vs到 Vt 的最 短路, 为该最短路的长度(此中 F为 G 中 所有从 Vs到 Vt 的全体有向路的集合)。

Pa

aWdefPW )()(

)(min)~

( PWPWFP

P~

)P~

W(

Page 13: 运筹学

13

最短路问题在企业厂址上选择,厂址布 局,设备更新,网络线路安装等工程设计与 企业管理中有重要应用。

Page 14: 运筹学

14

((一)一) BellmanBellman 最优化原理最优化原理1 命题 1 :若 P 是网络 G 中从 Vs到 Vt 的一条最

小路, Vl是 P 中除 Vs与 Vt 外的任何一个中间点,则沿 P从 Vs到 Vl 的一条路 P1 亦必是 Vs到Vl 的最小路。

VVss VV11

VVllVV22

VVttPP22

PP11

Page 15: 运筹学

15

证明(反证): 若 P1 不是从 Vs到 Vl 的最小路,则存在另一条

Vs

到 Vl 的路 P2使W(P2)<W(P1) ,若记路 P 中从Vl到 Vt 的路为 P3 。则有 W(P2) + W(P3)<W(P1) + W(P3)=W(P) ,此说明 G 中存在一条从 Vs沿P2到 Vl沿 P3 再到 Vt 的更小的一条路,这与 P使 G 中从 Vs到 Vt 的一条最小路矛盾。

Page 16: 运筹学

16

2 算法思想: 设 G 中从 Vs到 Vt 的最小路 P: Vs…Vj…Vk…

Vt ,则由上述命题知: P 不仅是从 Vs到 Vt 的最小路,而且从 Vs到 P 中任意中间点的最短路也在 P 上,为此可采用如下求解思路:

⑴ 为求得 Vs到 Vt 的最短路,可先求得 Vs 到中间点的最短路,然后由中间点再逐步过渡到终点 Vt。

Page 17: 运筹学

17

⑵ 在计算过程中,需要把 V 中“经判断为最短路 P 途径之点 i”和“尚未判断是否为最短路 P 途径 之点 j” 区分开来,可设置集合 I和 J, 前者归入 I ,后者归入 J ,并令算法初始时, I 中仅包含 Vs ,其他点全在 J 中,然后随着求解过程的进 行, I 中的点逐渐增加(相应 J 中的点逐渐减 少),直到终点 Vt 归入 I (相应 J=φ),此时 迭代结束。 I 称为已标号集合 ,J 称为未标号集合。

Page 18: 运筹学

18

⑶ 为区分中间点 Vk 是否已归入 I 中以及逆向求解最短路的方便,可在归入 I 中的点 Vj 上方给予双标号( lj, Vk),此中 lj 表示从 Vs到 Vj 最短路的距离,而 Vk 则为从 Vs到 Vj 最短路 P中Vj 的前一途径点。⑷ 为在计算机上实现上述求解思想,还需引入

G 中各点间一步可达距离阵 D=(dij)n×n ,此中 |V|=n

ji

jiwd ijij 不能一步到达,

能一步到达,

Page 19: 运筹学

19

⑸ 以下介绍的是适用于弧权为正值的有向网络中求最短有向路的 Dijkstra 算法,又称双括号法。事实上该算法亦适用于弧权为负值的有向网络求最短路问题。

Page 20: 运筹学

20

由图由图 GG建立一步可达距离阵建立一步可达距离阵 D=(dD=(dijij))n×nn×n

给给 VV11(V(Vss)) 括号括号 ((ll11,V,Vkk)=(0,s))=(0,s) 给出已标号集给出已标号集合合 II 和未标号集合和未标号集合 JJ 的元素的元素

对于给定的对于给定的 II和和 JJ ,,确定集合确定集合 A={aA={aij ij |Vi I∈ , Vj J∈ }}

计算距离计算距离

给给 VVkk 括号括号 ((llk k ,V,Vhh) l) lkk=l=lhh + W + Whkhk

I=I + {VI=I + {Vkk} J=J – {V} J=J – {Vkk}}

A=φ A=φ 或 或 JJ== φφ

从从 VVtt 逆向搜索双括号,可得最小路逆向搜索双括号,可得最小路 PP 途径各点及最小路距离途径各点及最小路距离

ENDEND

hkhijIii WlJWl

}V|min{ j

NN

YY

(二)(二) DijksDijkstratra 算法(双算法(双

括号法)括号法)

图 一图 一

Page 21: 运筹学

21

例 1(教材 208页)求 G 的最短路, 图 G形如下形。

解:利用上述 Dijkstra 算法步骤可得表一所示求 解过程,并有最短路 P: V6 V4 V3 V1,

最短距离 |P|=2+1+5=8。55 11 22

图图(一)(一)

Page 22: 运筹学

22

已 标 号

点 V j

双 标 号

( l j , V k ) I J

A = { a i j | V i

∈ I , V j ∈ J } hkhij

Iii WlJWl

}V|min{ j

V 1 ( 0 , s ) V 1 V 2 ~ V 6 { a 1 2 , a 1 3 , a 1 4 } m i n { l 1 + W 1 2 , l 1 + W 1 3 , l 1 + W 1 4 } =

m i n { 0 + 3 , 0 + 2 , 0 + 5 } = 2 = l 1 + W 1 3

V 3 ( 2 , V 1 ) V 1 , V 3 V 2 , V 4

V 5 , V 6 { a 1 2 , a 1 4 , a 3 4 }

m i n { l 1 + W 1 2 , l 1 + W 1 3 , l 3 + W 3 4 } =

m i n { 0 + 3 , 0 + 5 , 2 + 1 } = 3 = l 1 + W 1 2 , l 3 + W 3 4

V 2

V 4

( 3 , V 1 )

( 3 , V 3 ) V 1 ~ V 4 V 5 , V 6 { a 2 6 , a 4 6 }

m i n { l 2 + W 2 6 , l 4 + W 4 6 } =

m i n { 3 + 7 , 3 + 5 } = 8 = l 4 + W 4 6

V 6 ( 8 , V 4 ) V 1 ~ V 4 , V 6 V 5 φ E N D

表一(例表一(例 1 1 求解过程求解过程))

Page 23: 运筹学

23

例 2 求如下 G 之最小路

VV11

VV44

VV22 VV66 VV88

VV55 VV77

33

33

33VV33

66

66

66

6611

11

77

图 二图 二

77 4422

Page 24: 运筹学

24

dij V1 V2 V3 V4 V5 V6 V7 V8

V1 0 2 6 3 ∞ ∞ ∞ ∞

V2 ∞ 0 3 ∞ ∞ 7 ∞ ∞

V3 ∞ ∞ 0 1 3 7 ∞ ∞

V4 ∞ ∞ ∞ 0 6 ∞ ∞ ∞

V5 ∞ ∞ ∞ ∞ 0 1 6 ∞

V6 ∞ ∞ ∞ ∞ ∞ 0 ∞ 4

V7 ∞ ∞ ∞ ∞ ∞ ∞ 0 6

V8 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0

解解 表 二表 二

Page 25: 运筹学

25

表三 (例表三 (例 22 求解过程)求解过程)

已 标 号

点 V j

双 标 号

( l j , V k ) I J

A = { a i j | V i

∈ I , V j ∈ J } hkhij

Iii WlJWl

}V|min{ j

V 1 ( 0 , s ) V 1 V 2 ~ V 8 { a 1 2 , a 1 3 ,

a 1 4 }

m i n { l 1 + W 1 2 , l 1 + W 1 3 , l 1 + W 1 4 } =

m i n { 0 + 2 , 0 + 6 , 0 + 3 } = 2 = l 1 + W 1 2

V 2 ( 2 , V 1 ) V 1 , V 2 V 3 ~ V 8 { a 1 3 , a 1 4 ,

a 2 3 , a 2 6 }

m i n { l 1 + W 1 3 , l 1 + W 1 4 , l 2 + W 2 3 , l 2 + W 2 6 } =

m i n { 0 + 6 , 0 + 3 , 2 + 3 , 2 + 7 } = 3 = l 1 + W 1 4

V 4 ( 3 , V 1 ) V 1 , V 2 ,

V 4

V 3 ,

V 5 ~ V 8

{ a 1 3 , a 2 3 ,

a 2 6 , a 4 5 }

m i n { l 1 + W 1 3 , l 2 + W 2 3 , l 2 + W 2 6 , l 4 + W 4 5 } =

m i n { 0 + 6 , 2 + 3 , 2 + 7 , 3 + 6 } = 5 = l 2 + W 2 3

V 3 ( 5 , V 2 ) V 1 ~ V 4 V 5 ~ V 8 { a 2 6 , a 3 5 ,

a 3 6 , a 4 5 }

m i n { l 2 + W 2 6 , l 3 + W 3 5 , l 3 + W 3 6 , l 4 + W 4 5 } =

m i n { 2 + 7 , 5 + 3 , 5 + 7 , 3 + 6 } = 8 = l 3 + W 3 5

V 5 ( 8 , V 3 ) V 1 ~ V 5 V 6 V 7 V 8 { a 2 6 , a 3 6 ,

a 5 6 , a 5 7 }

m i n { l 2 + W 2 6 , l 3 + W 3 6 , l 5 + W 5 6 , l 5 + W 5 7 } =

m i n { 2 + 7 , 5 + 7 , 8 + 1 , 8 + 6 } = 9 = l 2 + W 2 6 , l 5 + W 5 6

V 6 ( 9 , V 2 )

( 9 , V 5 ) V 1 ~ V 6 V 7 V 8 { a 5 7 , a 6 8 }

m i n { l 5 + W 5 7 , l 6 + W 6 8 } =

m i n { 8 + 6 , 9 + 4 } = 1 3 = l 6 + W 6 8

V 8 ( 1 3 , V 6 ) V 1 ~ V 6 ,

V 8 V 7 { a 5 7 } l 5 + W 5 7 = 8 + 6 = 1 4

V 7 ( 1 4 , V 5 ) V 1 ~ V 8 φ φ E N D

Page 26: 运筹学

26

由表三知 V1 V8

最短路 P1: V8 V6 V2 V1

最短路 P2: V8 V6 V5 V3 V2 V1

最短路长 |P1|=2+7+4=13 |P2|=2+3+3+1+4=13

44

44

77

11

22

33 33 22

Page 27: 运筹学

27

(三)通信线路布设问题(教材(三)通信线路布设问题(教材 PP209209 ))

例 3. 甲、乙两地之间的公路网络如图三,电信公司准备在甲、乙两地沿公路沿线架设一光缆线,问应如何架设此线路方案,以使光缆线路架设总长度最短?

图 图 三三

Page 28: 运筹学

28

dij V1 V2 V3 V4 V5 V6 V7

V1 0 15 10 ∞ ∞ ∞ ∞ V2 15 0 3 6 ∞ ∞ 17 V3 10 3 0 ∞ 4 ∞ ∞ V4 ∞ 6 ∞ 0 4 ∞ 5 V5 ∞ ∞ 4 4 0 2 ∞ V6 ∞ ∞ ∞ ∞ 2 0 6 V7 ∞ 17 ∞ 5 ∞ 6 0

解:本例之一步可达距离阵如解:本例之一步可达距离阵如

G={V,E,W},V={VG={V,E,W},V={V11VV22VV33VV44VV55VV66VV77}} ,,本例本例 GG

为无向图,求解过程见表四为无向图,求解过程见表四

W=

Page 29: 运筹学

29

V j ( l j , V k ) I J A = { a i j | V i

∈ I , V j ∈ J } h khij

Iii WlJWl

}V|min{ j

V 1 ( 0 , s ) V 1 V 2

V 4 ~ V 7 { a 1 2 , a 1 3 }

m i n { l 1 + W 1 2 , l 1 + W 1 3 , } =

m i n { 0 + 1 5 , 0 + 1 0 } = 1 0 = l 1 + W 1 3

V 3 ( 1 0 , V 1 ) V 1 , V 3 V 4 ~ V 7 { a 1 2 , ,

a 3 2 , a 3 5 }

m i n { l 1 + W 1 3 , l 3 + W 3 2 , l 3 + W 3 5 } =

m i n { 0 + 1 5 , 1 0 + 3 , 1 0 + 4 } = 1 3 = l 3 + W 3 2

V 2 ( 1 3 , V 3 ) V 1 V 2

V 3 V 5

V 4 V 6

V 7

{ a 2 4 , a 2 7 ,

a 3 5 }

m i n { l 2 + W 2 4 , l 2 + W 2 7 , l 3 + W 3 5 } =

m i n { 1 3 + 6 , 1 3 + 1 7 , 1 0 + 4 } = 1 4 = l 3 + W 3 5

V 5 ( 1 4 , V 3 ) V 1 V 2 V 3

V 5 V 6 V 4 V 7

{ a 2 4 , a 2 7 ,

a 5 4 , a 5 6 }

m i n { l 2 + W 2 4 , l 2 + W 2 7 , l 5 + W 5 4 , l 5 + W 5 6 } =

m i n { 1 3 + 6 , 1 3 + 1 7 , 1 4 + 4 , 1 4 + 2 } = 1 6 = l 5 + W 5 6

V 6 ( 1 6 , V 5 ) V 1 ~ V 6 V 7 { a 2 4 , a 5 4 ,

a 2 7 , a 6 7 }

m i n { l 2 + W 2 4 , l 5 + W 5 4 , l 2 + W 2 7 , l 6 + W 6 7 } =

m i n { 1 3 + 6 , 1 4 + 4 , 1 3 + 1 7 , 1 6 + 6 } = 1 8 = l 5 + W 5 4

V 4 ( 1 8 , V 5 ) V 1 ~ V 6 V 7 V 8 { a 2 7 , a 4 7 , a 6 7 } m i n { l 2 + W 2 7 , l 4 + W 4 7 , l 6 + W 6 7 } =

m i n { 1 3 + 1 7 , 1 8 + 5 , 1 6 + 6 } = 2 2 = l 6 + W 6 7

V 7 ( 2 2 , V 6 ) V 1 ~ V 7 , φ E N D

表四 (例表四 (例 33 求解过程)求解过程)

Page 30: 运筹学

30

① 由表四可得 最短路 P : V7 V6 V5 V3 V1

最短距离 |P|=10+4+2+6=22

② 还可得到自 V1 (甲)到任一中间点之最短路,例如 V1 V4 最短路由表四可知为

P14 V4 V5 V3 V1 |P14|=18

66 22 44 1010

Page 31: 运筹学

31

((四)设备更新问题(教材四)设备更新问题(教材 PP212212 ))

例 4.

某公司设备管理部门欲制定一个五年期某设备的更新计划,要求给出这五年中购置该设备的年份及购置新设备的使用年限。

在此五年中购置该设备的年初价格见表五,设备使用不同年限的维护费见表六。

Page 32: 运筹学

32

年份 1 2 3 4 5

年初价格 11 11 12 12 13

表五 (单位:万元)表五 (单位:万元)

使用年数 0~1

1~2

2~3

3~4

4~5

年维护费用 5 6 8 11 18

表六 表六 (单位:万元(单位:万元 //年年))

Page 33: 运筹学

33

解:设Vi —i年初购进一台新设备aij —i年初购进之新设备使用到第 j年初( j-1年末)ωij—i年初购进之新设备使用到第 j年初( j-1年末) 之总费用

根据表五与表六之有关数据可计算 ωij 详可参见表七;由表七可得 W阵如表八;由表八可得有向图四;将表八可转换成一步可达阵如表九,求解过程见表 10 。

Page 34: 运筹学

34

表七 (表七 ( W W 计算过程)计算过程)

使用总 年

费用

2 3 4 5 6 注

购置费 11 11 11 11 11 5 5 5 5 5 6 6 6 6 8 8 8 11 11

维护费

1 2 3 4 5 18

总费用 16 22 30 41 59

第 1年初购置设备使用个年之费用

购置费 - 11 11 11 11 5 5 5 5 6 6 6 8 8

维护费

2 3 4 5 11

总费用 - 16 22 30 41

第 2年初购置设备使用个年之费用

Page 35: 运筹学

35

购置费 - - 12 12 12 5 5 5 6 6

维护费

3 4 5 8

总费用 - - 17 23 31

第 3年初购置设备使用个年之费用

购置费 - - - 12 12 5 5 维护

费 4 5 6

总费用 - - - 17 23

第 4年初购置设备使用个年之费用

购置费 - - - 17 23 13 购置费

5 5

总费用 18

第 5年初购置设备使用个年之费用

Page 36: 运筹学

36

1 2 3 4 5 6

1 - 16 22 30 41 59

2 - - 16 22 30 41

3 - - - 17 23 31

4 - - - - 17 23

5 - - - - - 18

表八 费用阵(单位:万元)表八 费用阵(单位:万元)

j

i

ωij

Page 37: 运筹学

37

图四 (设备更新有向图)

Page 38: 运筹学

38

V1 V2 V3 V4 V5 V6

V1 0 16 22 30 41 59

V2 ∞ 0 16 22 30 41

V3 ∞ ∞ 0 17 23 31

V4 ∞ ∞ ∞ 0 17 23

V5 ∞ ∞ ∞ ∞ 0 18

V6 ∞ ∞ ∞ ∞ ∞ 0

表 九

Page 39: 运筹学

39

已 标号

点Vj

双标号(lj,Vk)

I J

A={aij|

Vi∈I,

Vj∈J}

hkhijIii WlJWl

}V|min{ j

V1 (0, s ) V1 V2 ~V6

a12,a13,

a14

a15,a16

16WlminWl}Wl{min 1216~2j

j11ij1

V2 (16,V1) V1V2 V3 ~V6

a13,a14

a15,a16

a23,a24

a25,a26 1616winWl

220winWl

2j2

2j1

JV

JV

j

j

l1 + W13 =22

表 10 设备更新求解过程

min

Page 40: 运筹学

40

V 3 ( 2 2 , V 1 ) V 1 V 2

V 3 V 4 V 5 V 6

a 1 4 ,

a 1 5 , a 1 6

a 2 4 ,

a 2 5 , a 2 6

a 3 4 ,

a 3 5 , a 3 6

300winWl 1j1 JV

j

2216winWl 2j2 JV

j

l 1 + W 1 4 = 3 0

1722winWl 3j3 JV

j

V 4 ( 3 0 , V 1 ) V 1 ~ V 4 V 5 V 6

a 1 5 , a 1 6

a 2 5 , a 2 6

a 3 5 , a 3 6

a 4 5 , a 4 6

l 1 + W 1 5 = 0 + 4 1

l 2 + W 2 5 = 1 6 + 3 0 l 1 + W 1 5 = 4 1

l 3 + W 3 5 = 2 2 + 2 3

l 4 + W 4 5 = 3 0 + 1 7

V 5 ( 4 1 , V 1 ) V 1 ~ V 5 V 6

a 1 6 , a 2 6

a 3 6 , a 4 6

a 5 6

364

363

Wl

Wl53

18412330

312241165916min ==

,,,

V 6 ( 5 3 , V 3 )

( 5 3 , V 4 ) V 1 ~ V 6 φ E N D

m i n

m i n

Page 41: 运筹学

41

由表 10 可知最短费用流(相当于最短路)

P : V6 V3 V1 | P| = 53万元 V4

Page 42: 运筹学

42

结论: 公司五年期设备更新方案有两个: A与

B ,总费用均为 53万元。 A 方案:第 1年初购置设备使用到第 3年

初(第 2年末),第 3年初再购置新设备使用到第 5年末(第 6年初)

B 方案:第 1年初购置设备使用到第 4年初(第 3年末),第 4年初再购置新设备使用到第 5年末(第 6年初)

Page 43: 运筹学

43

§10.3 §10.3 最小生成树最小生成树

最小生成树在网络(电信网、公路网等)设计与企业管理中有重要应用。

Page 44: 运筹学

44

(一)基本概念与理论(一)基本概念与理论 def 7 :无圈的连通图(无向图)称为树,常记为符号 T 。如图五的( a )为树,( b )有圈,( c )不连通,故( b)( c )均非树。

V2

V1

V5

V4

V6

V3

V2

V1

V5

V4

V6

V3

V2

V1

V5

V4

V6

V3

( a) ( b) ( c) 图 五

Page 45: 运筹学

45

def 8 :若 T 是图 G 的一个生成子图而且又是一 棵树,则称树 T 是图 G 的一个生成树(又称支 撑树);又若树 T=(V1,E1) 为图 G=(V,E,W) 的

一个生成树,令 称为树 T 的权 (或长度),则 G 中具最小权的生成树称为 G 的最小生成树,亦即若有 则有 T* 为G 的最小生成树,此中 F为G 的

全 体生成树的集合。

Ee

eWTW )()(

FT

eWTW )(*)(

Page 46: 运筹学

46

Th1 :设 T=(V,E) 是 |V|≥ 3 的一个无向图,则下列六个关于树的定义是等价的:

⑴ T 连通且无圈⑵ T 的任何两个顶点间均必有一条且仅有一条通 路相连⑶ T 连通且有 n-1 条边,此中 n= |V|

⑷ T有 n-1 条边且无圈,此中 n= |V|

⑸ T 无圈,但在 T 中任两个不相邻的顶点间添加

一条边,则可构成一条回路⑹ T 连通,但去掉任一条边后就不连通,即树 T

是连通且边数最小的图

Page 47: 运筹学

47

(二)(二) KruskalKruskal 算法(加边法,破圈法)算法(加边法,破圈法)1. 算法思想:① 由 Th1(4) 结论:若 |V| = n ,则树 T有 n-1 条边

且 无圈② 由 def 8 ,最小生成树 T* 是具有最小权的生成树

故可 E 中各边按权大小排列设为 W1≤ W2≤

… ≤ Wm ,对应?边依次为 a1,a2, … am ,然后将 a1,a2, … 依次进入集合 S ,直到获得 S 的生成树 T为止(树的判断可由 Th1(4) 结论),则此树 T 必为最小生成树。

Page 48: 运筹学

48

设 G=(V,A,W) , |V| = n , |A| = m

S— 待生成的集合i — S 中进入最小生成树的边序号j — 逐个进入 S的 G 的边序号ei+1 — S 中进入最小生成树的边

j Wj aj akl

1 W1 a1 a23

2 W2 a2 a55

… … … …m Wm am a76

表 11

Page 49: 运筹学

49

对 G 中各边按权大小顺序排列,不妨设为 W1≤ W2≤ … ≤ Wm

填写Wj 对应的各边 aj 表 11

S=φ , i = 0, j=1

{aj} ∪ S构成回路?

|S| = n-1

ei+1=aj S={ei+1} ∪ S

i=i +1 j=j+1j=j+1

T*=S

打印 T*

END

Y

Y

N

N

图 六

Page 50: 运筹学

50

例 5 (教材 P218 )

某大学准备对其所属的 7 个学院办公室计算机联网.这个网络的可能联通的途径如图七所示,图中 V1 …, , V7 表示 7 个学院办公室,边 eij 为可能联网的途径。边上所赋的权数为这条路线的长度(单位:百米)。试设计一局域网既能联结七个学院办公室,又能使网络线路总长度为最短。

Page 51: 运筹学

51

Wj aj akl T*

W1 a1 a23 *

W2 a2 a35 *

W3 a3 a27 *

W4 a4 a17 *

W5 a5 a67 *

W6 a6 a37

W7 a7 a56

W8 a8 a57

W9 a9 a43 *

W10 a10 a45

W11 a11 a16

G={V,E,W}, |V| =7, |E| = 11

W=(ωij) ωij 见图

解:依据各边权自小到大排列建立表 12 ,求解过程见表 13 ,

由表 13 得知最小生成树

T*={a1,a2,a3,a4,a5,a9}

W(T*)=1+2+3+3+7=19

图七

表 12

Page 52: 运筹学

52

表 13 (例 5 求解过程)

e i+1 S i j |S| aj {aj}∪ S 构成回路?

φ 0 1 0 a1 a1 ×

e1 = a1 a1 1 2 1 a2 a1,a2 ×

e2 = a2 a1,a2 2 3 2 a3 a1,a2, a3 ×

e3 = a3 a1,a2,a3 3 4 3 a4 a1~a4 ×

e4 = a4 a1~a4 4 5 4 a5 a1~a5 ×

e5 = a5 a1~a5 5 6 5 a6 a1~a6 √

— 7 5 a7 a1~a5, a7 √

— 8 5 a8 a1~a5, a8 √

— 9 5 a9 a1~a5, a9 ×

e6 = a9 a1~a5,a9 6 10 6 END

Page 53: 运筹学

53

例 6. 利用加边法求图八所示的无向图 G 之最小生成树

Wj aj akl T*

W1 a1 a12 *

W2 a2 a13 *

W3 a3 a45 *

W4 a4 a23

W5 a5 a25 *

W6 a6 a24

W7 a7 a34

W8 a8 a35

解: G={V,E,V} , |V| = 5

|E| = 8表 14

V1

V2

V5

V3

V4

1

2

2

3

4

4

42

图 八

Page 54: 运筹学

54

表 15 (例 6 求解过程)

e i+1 S i j |S| aj {aj}∪ S 构成回路?

φ 0 1 0 a1 a1 ×

e1 = a1 a1 1 2 1 a2 a1,a2 ×

e2 = a2 a1,a2 2 3 2 a3 a1,a2,a3 ×

e3 = a3 a1,a2,a3 3 4 3 a4 a1~ a4 √

5 3 a5 a1,a2,a3,a5 ×

e4 = a5 a1,a2,a3,a5 4 6 4 END

Page 55: 运筹学

55

(三)丢边法(破圈法)(三)丢边法(破圈法)

1. 算法原理: 丢边法与加边法相反,加边法是以不形成

回路为准则将 S=φ逐步加边以形成树,而由于按边权愈小愈优先加进去,故为最小生成树,而丢边法则是 S= E 以不形成回路为准则逐步丢边以形成树,由于是按边权愈大愈优先丢掉,故同样为最小生成树。

Page 56: 运筹学

56

设 G=(V,E,W) , |V| = n , |E| = m,

S — 待生成的集合(逐步丢边) i — S 中丢掉边的序号 j — S 中保留边的序号 ei+1 — S 中丢到的边 e1— S 中丢到的边的全体(集合) fj+1 — S 中保留的边 D — S 中保留边的集合

Page 57: 运筹学

57

由于边个数为 m ,树含边的个数为 n-1 ,故丢掉(形成回路)边的个数为 m-(n-1)=m-n+1 ,以此为程序出口,标志着最小生成树形成

依次从大到小按列同例 5 表 12 。

Page 58: 运筹学

58

G=(V,E,W) , |V| = n , |E| = m , S=

E, i=0, j=0, E1=φ, D=φ

选 S 中最大权之边|a||a|max l

Skk

S 中是否有包含 al

的一个回路

i=i +1 ei=al

S= S -{ei} E1=E1∪{ei} T*=S-E1

打印 T*的边序列

j=j +1 fj=al

D=D∪{fi+1}

i≥ m-n-1

END

N

N

Y

Y

图 九

Page 59: 运筹学

59

例 6. (同例 5 )用丢边法求解求解过程见表 16 ,由于m-n+1=11-(7-1)=5

故 i=5 时程序终止,由表知T*=S-{e1~e5}={a1,a2,a3,a4,a5,a9} 与前加边法求解相同,详可参考教材 P218 的六个图。

Page 60: 运筹学

60

表 16 (例 6 求解价格)

5=i=m-n+1

选择 S中最大权的边数

|al| S 中有含al的回路

i j e i=al fj=al S= S -{e i} E1 D

0 0 E φ φ

即 a11 a16 10 V1 V6 V7 1 e1 = a16 E-{e1} e1

即 a10 a45 8 V3 V4 V5 2 e2 = a45 E-{e1 e2} e1 e2

即 a9 a43 7 无 1 f1 = a43 f1

即 a8 a57 5 V7 V5 V6 3 e3 = a57 E-{e1e2e3} e1 e2 e3

即 a7 a56 4 V3 V5 V6 4 e4 = a56 E-{e1e2e3e4} e1 ~ e4

即 a6 a37 4 V2 V3 V7 5 e5 = a37 E-{e1e2e3e4 e5} e1 ~ e5

END

Page 61: 运筹学

61

§§ 10.4 10.4 最大流问题最大流问题 由前知,一个指定了收点和发点的赋权图 G

称为网络,在网络设计中研究网络的流量具有现实意义,如交通网络的车流流量,通信网络中的话务流量,金融网络中的现金流量,控制网络中的信息流量,供电网络中的电流流量等。人们也常常希望知道在既定网络中能允许通过的最大流量,以便对该网络的利用程序作出评价,这就是所谓的网络最大流问题。求解方法有双标号法,对偶图法等。

Page 62: 运筹学

62

1 .网络中弧的容量与流量

def9 :对于一个指定收、发点的赋权有向(无向)图或网络 N =( V , A , C ),弧 aij∈A 的最大允许通过能力称为该弧的容量,记为cij( cij≥0 ),全体 cij构成之集合记为 C ;而通过边 aij 的实际流量成为流量,记为 fij ,故有0≤fij≤cij 。显然若 fij≥cij 则网络 N 在 aij 边将发生堵塞现象,这是人们希望能避免的现象。

(一)基本概念(一)基本概念

Page 63: 运筹学

63

2 .可行流与最大流

def10 :设有网络 N =( V , A , C ),称

f ={fij∣aij∈A} 为网络 N 上的流函数,简称网

络流;满足如下条件的网络流称为可行流,其

中 v ( f )为网络 N 可行流的总流量(净流入量)。

Page 64: 运筹学

64

( 1 )容量限制条件:

( 2 )流量守恒条件:

说明:进入节点 vj 的流量=自节点 vj 流出的流量;

fij≡0 之零流亦满足上述条件,故零流以为可行流。

Page 65: 运筹学

65

3 .顺向弧、逆向弧与可增路

def11 :设 f 是网络 N 的一可行流, P 是 N中从 vs到 vt 的一条路,对于路 P 途经的各弧,若弧的方向与路的方向相同,则称该弧为顺向弧,若弧的方向与路的方向相反,则称该弧为逆向弧。若在路 P 的一切顺向弧( vi, vj )上有 fij< cij ,在路 P 的一切逆向弧( vj, vi )上有 fji> 0 ,则称路 P 是一条关于 f 的可增路。

Page 66: 运筹学

66

说明:

( 1 )由 def 11 得知:若在路 P 中,存在一条顺向弧( vi, vj )有 fij= cij (此时称弧为饱和弧),或者在路 P 中存在一条逆向弧( vj, vi )有fji= 0 ,则称路 P 为不可增路;

( 2 )在图 10 所示的网络 N 中有一可行流f={fij∣aij∈A} ,用蓝字标记,红字标记各弧的容量cij 。表 17给出了四条从 v1 到 v7 的路是否可增路的判别理由。(此 f 满足流量守恒条件与容量限制条件,如

Page 67: 运筹学

67

图 10

Page 68: 运筹学

68

表 17

j v1到 v7的路 可增路? 理由1 v1v2v5v7 √ 顺向弧有 fij< cij

2 v1v2v5v3v6v7 √ 顺向弧 fij< cij

逆向弧有 f35> 0

3 v1v4v7 × 顺向弧有 f47= c47

4 v1v2v3v4v7 × 顺向弧有 f23= c23, f47=c47

Page 69: 运筹学

69

( 3 )可增路的内涵可通过下例得知

在图 10 之可行流 f 中,对于路 v1v2v5v3v6v7

途经的各弧中,若 f12, f23 增加一个单位流量, f35 减少一个单位流量,利用流量守恒条件,可得一个如图 11 的新的可行流 ,并有 v ( ) = 10> 9 =

v ( f )。

f f

图 11

Page 70: 运筹学

70

由上可知在 def11 中可增路要求顺向弧

fij< cij 之条件,实际上说明沿该弧( vi, vj )还

可提高流量 △ ij= cij- fij> 0 ,另一方面,为提

高流量 v ( f )还要求该路的逆向弧降低流量,而

fji> 0 正说明了该逆向弧可降低 fji 个单位。

Page 71: 运筹学

71

1 .算法思想(见图 12 )

给定 N = {V, A , C} ,任取一可行流 f = {fij} ,若无可行流,可取零

流。 l= 1

在 f 中任取一可增路 pl

利用标号规则与调整规则对沿着路 p 的各弧作最大可能调整

是否对 N 中所有 路均作调整

打印经调整后的最大流f*及最大流量 v ( f

*)

取 N 的一条新可增路 pl

l= l+ 1

END图 12

(二)双标号算法(二)双标号算法

Page 72: 运筹学

72

寻找一可增路 pl , l= 1

vs 标号( s ,∞),沿 pl寻找 vs的下一相邻节点 vj

按标号规则对 vj 进行双标号( vj,l( vj ))

vs= vt

沿 pl 从收点 vt 开始反向搜索途经各弧,按调整规则作流量调整

抹去 pl 上各点之双标号,从而由原可行流 f 调整为新可行流 f1 ,并有 v

( f )< v ( f1 )

是否还有新的可增路

打印并输出经调整后的最大流 f*={fij∣aij∈A} ,最大流量 v ( f* )

结束

l= l+ 1

取 N 的 新的 可 增 路pl

j= k , i= j

沿 pl 寻找 vj的相邻的一点vk

图 13

N

Y

Y

N

2 .调整步骤 (见图

13 )

Page 73: 运筹学

73

3 .标号与调整规则

( 1 )标号规则:

1o 若( vi, vj )为顺向弧,且 fij<cij ,则给 vj

标号( vi +, l( vj )),其中 l( vj )=

min( l( vi ), cij- fij );

2o 若( vi, vj )为逆向弧,且 fji>0 ,则给 vj标

号( vi -, l( vj )),其中 l( vj )=

min( l( vi ), fji );

3o 若( vi, vj )为顺向弧但 fij= cij 或( vi, vj )

为逆向弧但 fji= 0 ,此时沿该弧的路线停止标号。

Page 74: 运筹学

74

( 2 )调整规则:

1o 若( vi, vj )为顺向弧,则对 pl 路径的顺向弧作调整,其调整量△ ij= fij+ l( v );

2o 若( vi, vj )为逆向弧,则对 pl 途经的逆向弧作调整,其调整量△ ji= fji- l( v );

3o G 中不在 pl 路上的各弧不作调整。

Page 75: 运筹学

75

4 .例 7 (教材 P219 )

某石油公司拥有一管道网络,使用此管道网络可将石油从采地 v1 运往销地 v7 ,由于各地的地质条件等不同,因而其管道直径有所不同,从而使各弧的容量 cij (单位:万加仑 /小时)不同,对于如图 14 所示的管道网络 N =( V , A , C ),问每小时从 v1 往 v7 能运送多少加仑石油?

Page 76: 运筹学

76

图 14

Page 77: 运筹学

77

解 1 :若设弧( vi, vj )上的流量为 fij ,网络N 上总流量为 F ,则可建立如下 LP : max F = f12 + f14

f12 = f23 + f25

f14 = f43 + f46 + f47

f23 + f43 = f35 + f36

s. t f25 + f35 = f57

f36 + f46 = f67

f47 + f57 + f67 = f12 + f14

fij≤cij i= 1~ 6, j= 1~ 7

fij≥0 i= 1~ 6, j= 1~ 7

v1 v2 v3 v4 v5 v6 v7

v1v2v3v4v5v6v7

0 6 0 6 0 0 00 0 2 0 3 0 00 0 0 0 2 2 00 0 3 0 0 3 20 0 0 0 0 0 50 0 0 0 0 0 50 0 0 0 0 0 0

C 阵

Page 78: 运筹学

78

利用单纯形法可解得最大流:

f*= {f12= 5 , f14= 5 , f23= 2 , f25=3 ,

f43= 2 , f46= 1 , f47= 2 , f35= 2 ,

f36= 2 , f57= 5 , f67= 3 , v ( f*)= 10}

Page 79: 运筹学

79

解 2 :(采用双标号法求最大流)

求解中寻找了五条可增路,其标号过程与增流过程见表 18 ,表 18 中各可增路及其流量调整过程见图 15 。

求解结果与解 1 相同。

Page 80: 运筹学

80

Page 81: 运筹学

81

Page 82: 运筹学

82

Page 83: 运筹学

83

Page 84: 运筹学

84

图 15

Page 85: 运筹学

85

表 18 (例 7 求解过程)

l 可增路 pl 第二个标号 l( vj)可调整量l( vt) 标号图 调整图

网络流量 v( f)

1 v1v4v7 l( v4)= 6, l( v7)= 2

2 ( a) ( b) 2

2 v1v2v3v5v7 l( v2)= 6, l( v3)= 2

l( v5)= 2, l( v7)= 2

2 ( c) ( d) 4

3 v1v4v6v7 l( v4)= 4, l( v6)= 1

l( v7)= 2

1 ( e) ( f) 5

4 v1v2v5v7 l( v2)= 4, l( v5)= 3

l( v7)= 3

3 ( g) ( h) 8

5 v1v4v3v6v7 l( v4)= 3, l( v3)= 3

l( v6)= 2, l( v7)= 2

2 ( i) ( j) 10

已无可增路 END

Page 86: 运筹学

86

§§ 10.5 10.5 最小费用最大流最小费用最大流 在很多网络(电信网络、运输网络、计算机网络)的分析与设计问题中,人们除关心网络的系统容量外还要考虑费用问题,以便建立一个高效、低耗的网络系统。这就是最小费用最大流问题的研究。

Page 87: 运筹学

87

def12 :设网络 N ={ V, A},除对每一弧a∈A规定了其容量 c(a) 外,还给定一个数 b(a) ≥ 0 称为弧 a 的单位流量费用,即有网络 N ={ V, A, c, b}称其为带费用(代价)的网络。设f 是 N 上的一个可行流(从 vs到 vt ),称 为可行流 f 的费用。

将 N 上所有流量等于 v0 的可行流中费用最小的可行流 f 称为流量为 v0 的最小费用流,进一步当v0 又是 N 中最大流的流量时,则称此 f 为最小费用最大流。

(一)基本概念(一)基本概念

Page 88: 运筹学

88

例 8 某石油公司管道网,由于输油管道的长短不一,故对于不同的地段(路径)有不同的容量限制 cij 之外,还有不同的单位流量费用 bij ,该 cij 的单位为万加仑 /小时, bij 的单位为百元 / 万加仑,管道网络如图 16 所示,图中括号内的数字表示( cij, bij )。

Page 89: 运筹学

89

解 1 :设 fij 表示 aij 上实际流量,则由定义12 可建立如下 LP

s.t

max

Page 90: 运筹学

90

总费用 b(f)=145

此解与例 7 的解显然不同,它是在考虑了费用目标后的结果。

Page 91: 运筹学

91

(二)求解算法(二)求解算法

算法原理:最小费用最大流之算法有多种,以下介绍一种比较易理解的算法。

定理 3 :设 f 是流量为 v0 的最小费用流, p 是关于 f 的可增路中费用最小的可增路。可增容量为 δ 则沿 p 增容 δ 后所得到的可行流 即为 的最小费用流。

若将N 中弧 aij 的单位费用 bij 作为该弧的弧长,则上述定理中的“可增路中费用最小”可理解为“可增容的最短路”。(∵此中最短的含义即为路径各弧的费用和最小)

利用上述定理可得如下算法步骤。

Page 92: 运筹学

92

图 17

2.算法步骤

Page 93: 运筹学

93

表 19

l关于 fl - 1 的可增容最

短路 pl

最短路长︱ pl︱

可调容量l( vt )

系统容量v ( f )

总费用

1 v1v4v6v7 10 1 1 10

2 v1v4v7 11 2 3 32

3 v1v4v3v6v7 12 2 5 56

4 v1v4v3v5v7 16 1 6 72

5 v1v2v5v7 17 3 9 123

6 v1v2v3v5v7 22 1 10 145

对于图 18的求解过程可用表 20中之定理内容来解释此算法原理。

3 、例 8 解 2 :求解过程见表 19 ,表 19各最短路的增容过程见图 18 。

Page 94: 运筹学

94

Page 95: 运筹学

95

Page 96: 运筹学

96

Page 97: 运筹学

97

图 18

Page 98: 运筹学

98

结论:

( 1 )最小费用最大流 f*= {fij} ,与解 1 计算结果相同;

( 2 )最小费用

b(f)= 4×6+ 6×3+ 3×4+ 1×5+ 3×2+ 2×4

+ 2×3+ 5×7+ 3×4+ 1×3+ 2×8

= 145

与解 1 计算结果相同。

Page 99: 运筹学

99

表 20

f是容量为 v0的最小费用流

p 是关于 f 的可增容(可增容量为

δ)最短路

则沿 p 增容 δ 后所得的可

行流 为容量为 v0+ δ 的

最小费用f0 是 0 p1 f0 1 p1 f1 1

f1 是 1 p2 f0 2 p2 f2 3

f2 是 2 p3 f0 2 p3 f3 5

f3 是 3 p4 f0 1 p4 f4 6

f4 是 4 p5 f0 3 p5 f5 9

f5 是 5 p6 f0 1 p6 f6 10

Page 100: 运筹学

100

此中需要说明的是: p1 是 f0 的可增容最短路,为什么不是 f1 的可增容最短路?这是由于 f1 沿 p1 已不可能再增容。(因为 f1 是由 f0 沿 p1 增容而得,至少有一弧,如 a46已饱和, c46= f46

= 1 ),故 p1 是最短路(关于 bij )但非可增容。综合二者说明 p1 不是 f1 的可增容最短路(或说 p1 是 f1 的不可增容最短路)。