第6章 图与网络分析

更新时间:2023-05-29 08:05:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第6章 图与网络分析 §6.1 图的基本概念

§6.2 树图和图的最小部分树 §6.3 最短路问题

§6.4 网络的最大流 §6.5 最小费用流

第1页

引 言图论是运筹学的一个经典和重要的分支,它起源于欧拉 (Euler)对七桥问题的抽象和论证。 1936年,匈牙利数学家柯尼希(Kö nig)出版了图论的 第一部专著《有限图与无限图理论》,竖立了图论发展的第 一座里程碑。 此后,图论进入发展与突破的快车道,所研究的问题涉 及经济管理、工业工程、交通运输、计算机科学与信息技术、 通讯与网络技术等诸多领域。近几十年来,由于计算机技术 和科学的飞速发展,大大地促进了图论研究和应用,图论的 理论和方法已经渗透到物理、化学、通讯科学、建筑学、生 物遗传学、心理学、经济学、社会学等学科中。

图论研究点与边的连接关系、一笔画问题、通路、最短 路、最大流量。而诸如“四色问题”,“旅行商问题”等世 界著名的难题都属于图论的研究范畴。第2页

§6.1 图的基本概念运筹学中研究的图是生活中各类图的抽象概括, 它表明一些研究对象和这些对象之间的相互关系。 用点表示研究对象,用边表示这些对象之间的联 系,则G图可定义为点和边的集合,记为

G {V , E }式中V是点的集合,E是边的集合。

第3页

基本概念网络图N:若给图中的点和边赋以具体的含义和权。 顶点(节点):记为v 边:记为e e1=[v1,v1] e2=[v1,v2] 或 e2=[v2,v1] 端点,关联边,相邻:若边e=[vi,vj],称vi和vj是边e的端点; 边e为点vi或vj的关联边;

若点vi、vj与同一条边关联,称点vi和vj 相邻;e1 e2 v2 v1 e5

若边ei和ej具有共同的端点,称边ei和ej相邻;e3 v3 e4

环,多重边,简单图: 若边e的两个端点相重,称该边为环;v4

e6

若两顶点之间至少有两条边,称为具有多重边;

无环、无多重边的图称作简单图。

第4页

次,奇点,偶点,孤立点 与点v相关联的边的数目称为点v的次(度或线度),记作d(v)

次为奇(偶)数的点称作奇(偶)点; 次为0的点称作孤立点; 链,圈,路,回路,连通图 点和边的交错序列μ={v0, e1, v1,…,ek ,vk}, 若其中各边e1, e2,…,ek互不相同, 且任意vt-1和vt (2≤t≤k)均相邻, 称μ为链.若链中所有的顶点也互不相同,这样的链称为路.e1 e2 v2 v1 e5 e6 v5

e3

v3 e4v4

起点和终点重合的链称为圈. 起点和终点重合的路称为回路. 若图中的每一对顶点之间至少存在一条链, 称这 样的图为连通图, 否则称该图是不连通的.

第5页

完全图,偶图

任意两点之间均有边相连的简单图, 称为完全图.

Kn2 | E | Cn

K2

K3

K4

若图的顶点能分成两个互不相交的非空集合V1和 V2,使在同一集合中任意两个顶点均不

相邻称, 这样的 图为偶图(二分图). 若偶图的顶点集合V1和V2之间的每对不同顶点都 有边相连,称 这样的图为完全偶图. Km,n

K3, 2

m n

第6页

子图,部分图

设G=(V,E)是一个图, 并设V V 和E E , 如果对E 中任意的一条边eij [vi , v j ], 都有 vi V , v j V , 则称G [V , E ] 是G的一个子图. 若V V , E E , 则称 G 是G的一个部分图.

注意: 部分图是子图,但子图不一定是部分图.e1 e2 v2 v1 e5 e3 v3 e4

e2v4 v2

v1

v3

e5

e2 v2

v1 e6

v3 e4 v4 e2 v2 v1 e5

e6

子图

部分图

非子图第7页

树图(简称树): 无圈的连通图,记作T(V, E) G的部分树(或支撑树): 若G1是G的部分图又是树图. 树枝: 树图的各条边. 假定图的各边均有权重. 最小部分树(或最小支撑树,minimum spanning tree): 图中树枝总长最小的部分树.

第8页

§6.2.1树图的性质

悬挂点

悬挂边

性质1 任何树图中必存在次为1的点. 证明:用反证法. 假设树图中不存在次为1的点.又连通图中不存在孤立点,故树图中所有顶点的次≥2. 不妨设d(v1)=2, 既v1有两条关联边, 设关联边的其他两个端点为v2 , v3,而d(v2 )≥2, d(v3) ≥2, 又可知与v2 , v3关联的边的其他端点v4 , v5,同样d(v4 )≥2, d(v5) ≥2,可继续一直往下推。 而图的顶点的总数是有限的,故最后 必然回到前面的某一顶点,于是在图中出 现了圈,这与树的定义产生了矛盾.v2 v4

v5v1 v3

第9页

性质2 具有n个顶点的树图的边树恰好为n-1条. 证明:用归纳法.当n=2和n=3时, 上述性质显然成立. 假设当n=k-1时, 上述性质也成立. 当n=k时, 因树中至少有一个悬挂点,将此悬挂点及 关联的悬挂边从树图中拿掉. 根据前述,剩下的图仍为树图,故此时图中有k-1个 点,据假定应有k-2条边. 再把拿掉的悬挂点及悬挂边放回去,说明树图中含 有k个点时,边数为k-1条.

第10页

性质3 任何具有n个顶点、n-1条边的连通图是树图. 证明: 用反证法. 假设有n个顶点、n-1条边的连通图不是树图.此时这个图中含有圈, 则从圈中拿掉任意一条边, 图仍连通. 若仍有圈, 则继续从圈中拿掉任意一条边, 这样继续下去. 一直到图中没有任何圈为止. 由于剩下的图仍连通且无圈,故仍为树. 但此时图中有n个顶点, 而边数却少于n-1条, 与性质2矛盾.

说明:(1) 树是无圈连通图中边数最多的, 在树图中只要任意再加上一条边,必会出现圈.(2) 树图的任意两点之间有一条且仅有一条唯一通路.

第11页

§6.2.2 图的最小部分树定理1 图中任一个点i, 若j 是i 与相邻点中距离最近的, 则边[i, j]一定含在该图的最小部分树内. 证明:用反证法. 设T为已知图的最小部分树, i 假设边[i, j]不在T内, 将这条

边加上, 图中必出现圈. 假定图中i点的原关联边为[i, k], 则[i, k]> [i, j] 在T中加上边[i, j], 再拿走边[i, k], 该图仍为树图, k 但树枝总长减少了,与T是最小部分树矛盾.j

Ti m j

推论: 把图的所有顶点分成V和 V 两个集合,则两集合之间连线的最短边一定包含在该 图的最小部分树内.k

VV第12页

T

§6.2.3 避圈法和破圈法1. 避圈法寻找最小部分树的步骤: (1) 任选一点 v i , 让vi V , 其余点均包含在V 中; (2) 从V与V 的连线中找出最小边,不妨设最小边为[vi, vj], 将边[vi, vj]加粗(表示最小部分树内的边). (3) 令V v j V , V \ v j V (4) 重复2、3两步,一直到图中所有点均包含在V中为止. 2. 破圈法寻找最小部分树的思路: 从网络图N中任取一回路,去掉这个回路中权数最大 的一条边, 得一子网络N1. 在N1中再任意取一回路, 再去掉回路中权数最大的一 条边, 得N2,如此继续下去一直到剩下的子图中不再包含 回路为止.第13页

例:分别用避圈法和破圈法求下图的最小部分树. A A V 1. 避圈法 A3B 2 E 5 6 D B 2 E 3 5 6 D B 2 E

3

1 C 4 4 3 F 2 A 3 B 2 E

1 C 4 4 3 F 2 2

5

6 D

1 C 4 4 3 F 2 A 3

A5 6 D B 2 E 3 5 6 D B 2 E 1 C 4 4 3 F 2

5

6 D

1 C 4 4 3 F 2

1 C 4 4 3 F 2

A3 B 2 E 5 6 D第14页

1 C 4 4 3 F 2

分别用避圈法和破圈法求下图的最小部分树.A 3B 2 E 5 6 D B 2 E

2. 破圈法3

A 5 D B 2 E

A 31 C 4 4 3 F 2 D

1 C 4 4 3 F 2

1 C 4 4 3 F 2

A 3 B 2 E 1 C 2 F 4 D 3

A

B2 E

1 C 2 3 F

4 D

第15页

§6.3 最短路问题最短路问题,一般来说就是从给定的网络图中找出任意 两点之间距离最短的一条路. 求最短路有两种算法: 1. 求从某一点至其余各点之间最短距离的狄克斯屈拉算法; 2. 求网络图上任意两点之间最短距离的矩阵算法.

第16页

6.3.1 Dijkstra 算法 算法的基本思路:假定 v1 v2 v3 vn 1 vn 是v1 vn的最短路, 则 vi vi 1 v j 1 v j 一定是vi v j 的最短路.

(1 i j n)

符号说明:d ij : 两相邻两点i 与j 的距离d ii 0 d ij 点i 与j不相邻. Lsi : 从点s 到点i 的最短距离.

第17页

算法的基本步骤:(1) 从点s出发, 因Lss=0, 将此值标注在s旁的小方框内, 表示s 点已经标号;(2) 从点s出发, 找出与s相邻的点中距离最小的一个, 设为r. 将Lsr=Lss+dsr的值标注在r 旁的小方框内, 表明r点也以标号; (3) 从已标号的点出发, 找出与这些点相邻的所有未标号的 点p. 若有Lsp=min{Lss+dsp ; Lsr+drp}, 则对p点标号, 并将Lsp的值标 注在p点 旁的小方框内; (4) 重复第3步,一直到t点得到标号为止.

第18页

例: 用Dijkstra 算法求下图中从v1到其它点的最短路. 解:3 0

v25 6 1 v3 4 3 2 4

v23

v52

v6

0

5 6 1 1 4

4

v1

v12

v3 3 v4

v5

2

v6

V

v4

L1r=min{d12, d13, d14}= d13=1 v23 0 3

L1p=min{L11+d12, L13+d32, L13+d35, L13+d34 ,L11+d14}= L11+d14=23

v20 5 6 1 1 4 4

5 6 1 1 4

4

v12

v3 32 v 4

v52

v6

v12

v3 32 v4

v52

v6

L1p=min{L12+d25, L12+d25, L13+d35, L14+d46}

L1p=min{L11+d12, L13+d32, L13+d35, L14+d46} = L11+d12=3第19页

= L14+d46=4

v23 0

34 3

v2v60

34

5 6 1 1 4

v12

v3 32 v 4

v52

5 6 1 1 4

v12

v3 32 v 4

v52

v64

L1p=min{L12+d25, L12+d25, L13+d35, L14+d46} = L14+d46=4

L1p=min{L12+d25, L13+d35}= L13+d35=5 v23 0 3 4 5

5 6 1 1 4

v64

v12

v3 32 v 4

v52

第20页

6.3.2 每对顶点间的最短路算法寻求赋权图中各对顶点之间最短路,显然可以调用 Dijkstra 算法。具体方法是:每次以不同的顶点作为起点, 用 Dijkstra 算法求出从该起点到其余顶点的最短路径, 反复执行次这样的操作,就可得到每对顶点之间的最短路。 但这样做需要大量重复计算,效率不高。

R. W. Floyd(弗洛伊德)另辟蹊径,提出了比这更好 的算法,操作方式与 Dijkstra 算法截然不同。

第21页

本文来源:https://www.bwwdw.com/article/mvp4.html

Top