第08讲 图的基本概念及最小支撑树问题

合集下载

运筹学8图与网络分析

运筹学8图与网络分析

e3 。在剩下的图中,再取一个圈
定理8.7充分性的证明,提供了一个 寻找连通图支撑树的方法叫做“破圈法”。 就是从图中任取一个圈,去掉一条边。再 对剩下的图重复以上步骤,直到不含圈时 为止,这样就得到一个支撑树。
例8.4 用破圈法求出图8-11的一个支
撑树。
v2
e1
e7 e4
v1
e3 v4
e8
v5
e2
e5
v3
e6
图8-11
取一个圈(v1,v2,v3,v1),在一个圈中去掉边
3
4
初等链:链中所含的 点均不相同, 也称通 路;
5
6
为闭链或回路或圈;
简单圈:如果在一个圈中所含的边均不相同 初等圈:除起点和终点外链中所含的点 均
不相同的圈;
连通图:图中任意两点之间均
至少有一条通路,否则 v1
v4 v5 v8
称为不连通图。
v2
初等链: (v1 , v2 , v3 , v6 ,
图的连通性:
简单链:链中所含的 边均不相同;
圈:若 v0 ≠ vn 则称该链为开链,否 则称
1
2
链:由两两相邻的点及其相 关联的边构成的点边序列。 如:v0 ,e1 ,v1 ,e2 ,v2,e3 ,v3 ,…,vn1 , en , vn ; v0 ,vn 分别为链的起点和终点 。记 作( v0 ,v1 , v2, ,v3 , …, vn-1 , vn )
v5
v7
(v5
,v1v6),(v6
(v4 ,v6),(v5 ,v7)}
,v3),(v5
v6
,v4),
v2
v4
图8.5
下面介绍一些常用的名词:

最小生成树问题说课讲解

最小生成树问题说课讲解

7
11
2020/5/25
V4
∴最小树的权为24,最小树为 Tree={v1v2,v1v3,v2v5,v5v6,v6v7,v6v4}
边可能删去几条,但T必须是树[当然如G不是连通图,则没有支撑树]。 最小树:赋权的连通图G的众多支撑树中必至少有一,其各边权之和为
最小的,它就叫G的一棵最小支撑树或最小生成树;简称最小树或最短 树[管线铺设]。 最小树的存在性:赋权的连通图G =(V,E),记m=|E|, n=|V|,支撑树T的 边数|E(T)|=n-1,E(T)必为V的n-1元子集,显然这种子集合最多 个,所以支撑树是有限的,其权组成有限集,必有最小的[但可能C mn不1 唯 一]。
2020/5/25
用Kruskal算法求最小树
用Kruskal算法(避圈法)求赋权连通图G的最小树
V2
5
V6
4
2
9
12
V1
3
8
V3
6
4
5
6
V5
V7
10 的权为24,最小树为 T={v1v2,v1v3,v2v5,v5v6,v6v7,v6v4}
Prim法求最小支撑树
t←t+1, k←k+1,转S3 S6:输出T及w,结束。 T为最小树,w为T的权。这个算
法叫Kruskal算法(避圈法)
START
E的权排序w1≤w2≤…≤wm w←0,T←φ,k←1,t←0
t=n-1?
Y
N
T’←T∪{ek}
T’成圈? N
END
Y
T←T+ {ek},
k←k+1 w←w+wk,
t←t+1,k←k+1

最小支撑树的定义

最小支撑树的定义

最小支撑树的定义最小支撑树(Minimum Spanning Tree,MST)是在一个连通图中选择一棵树,使得树上的所有边的权值之和最小且包含图中的所有顶点。

最小支撑树在许多领域中都有广泛的应用,如通信网络、电力传输、城市规划等。

本文将介绍最小支撑树的定义、构造算法以及应用场景。

一、最小支撑树的定义最小支撑树是一个连通图的子图,它是原图的一棵树,包含了原图的所有顶点,但只包含足够连接这些顶点的最小边集合。

换句话说,最小支撑树是一个连通图的生成树,其边的权值之和最小。

二、最小支撑树的构造算法1. Prim算法Prim算法是一种贪心算法,从一个初始顶点开始,每次选择一条与当前生成树相连的权值最小的边,直到生成树包含所有顶点。

具体步骤如下:(1)选择一个初始顶点v,加入生成树T;(2)在剩余的顶点中,找到与T中的顶点相连的边中权值最小的边e;(3)将边e加入生成树T中,并将与e相连的顶点加入T;(4)重复步骤2和步骤3,直到T包含所有顶点。

2. Kruskal算法Kruskal算法也是一种贪心算法,它按照边的权值从小到大的顺序选择边,并且在选择过程中避免形成环路。

具体步骤如下:(1)将图中的所有边按照权值从小到大排序;(2)依次选择权值最小的边,如果该边的两个顶点不在同一个连通分量中,则加入最小支撑树,并将两个连通分量合并;(3)重复步骤2,直到最小支撑树包含所有顶点。

三、最小支撑树的应用场景1. 通信网络规划最小支撑树可以用于通信网络的规划,例如在电信网络中,选择最小支撑树可以使得网络中的通信线路最短,从而提高通信效率和降低成本。

2. 电力传输在电力传输中,最小支撑树可以用于选择电力线路的布置方案。

通过选择最小支撑树,可以使得电力线路的总长度最短,从而减少能量损耗和电力传输成本。

3. 城市规划在城市规划中,最小支撑树可以用于规划道路系统。

通过选择最小支撑树,可以使得城市中的道路总长度最短,从而提高交通效率和减少交通拥堵。

最小支撑树——精选推荐

最小支撑树——精选推荐

最⼩⽀撑树这篇介绍的是最⼩⽀撑树,常见的有Prim算法和Krustal算法。

⽀撑树:连通图G的某⼀⽆环连通⼦图T若覆盖G中所有的顶点,则称作G的⼀颗⽀撑树或⽣成树(spanning tree)。

⽀撑树必须覆盖所有的顶点,并且不能有环路,因此是禁⽌环路前提下的极⼤⼦图,也是保持通路前提下的最⼩⼦图。

⼀个图可能有很多⽀撑树,它们都包含n个顶点和n-1条边。

最⼩⽀撑树:在带权⽹络G所有的⽀撑树中,成本最低的称为最⼩⽀撑树(MST)。

Prim算法割(cut):在图G=(V;E)中,顶点集V的任⼀平凡⼦集U及其补集V\U构成⼀个割。

如果边uv满⾜u属于U且v不属于U,称作是该割的⼀条跨越边(cross)。

跨边联接于V及其补集之间,也称作该割的⼀座桥。

Prim算法迭代的准则:最⼩⽀撑树总是会采⽤联接每⼀割的最短跨越边。

算法的策略是贪⼼迭代:从⼀个点出发,每次都寻找已经得到的⽀撑树⼦树T'与剩余的点构成的割的最短跨越边,并把它加⼊⽀撑树。

算法复杂度为O(n^2),适合于稠密图、考虑算法的过程,我们可以在发现⼀个顶点时,把它的优先级设置为与⼦树T’的联边的权重。

实际上,也就是把顶点的优先级设置为跨越边的权重,然后寻找那个最短的跨越边,加⼊到⼦树中。

因此,这个问题也可以归于优先级搜索的框架:1 template<typename Tv, typename Te> struct PrimPU2 {3virtual void operator()(Graph<Tv, Te>* g, int uk, int v)4 {5if (g->status(v) == UNDISCOVERED)//对于uk每个尚未被发现的邻接顶点v6if (g->priority(v) > g->weight(uk, v))7 {8 g->priority(v) = g->weight(uk, v);//更新优先级数9 g->parent(v) = uk;//更新⽗节点10 }11 }12 };只需要重写优先级更新器即可。

第08讲 图的基本概念及最小支撑树问题

第08讲 图的基本概念及最小支撑树问题

Dijkstra算法
1.令T = φ , R = {v1}, S = {v2 , v3 ,...., vn }, ui = w1i 2.选取uk = min{ui } = wik , 若uk = +∞则停止,G中不存在支
vt ∈S
撑树;否则令R = R ∪{vk }, S = S {vk }, T = T ∪ {eik }; 3.若S = φ,则停止,T为最小支撑树;否则对于一切v j ∈ S , 令u j = min{u j , wkj }, 转2.
无向树
定义 (1) 无向树——连通无回路的无向图 (2) 平凡树——平凡图 (3) 森林——至少由两个连通分支(每个都是树)组成 (4) 树叶——1度顶点 (5) 分支点——度数≥2的顶点
树的充要条件
定理16.1 设G=<V,E>是n阶m条边的无向图,则下面各命题 是等价的: (1) G 是树 (2) G 中任意两个顶点之间存在惟一的路径. (3) G 中无回路且 m=n1. (4) G 是连通的且 m=n1. (5) G 是连通的且 G 中任何边均为桥. (6) G 中没有回路,但在任何两个不同的顶点之间加一条新 边,在所得图中得到惟一的一个含新边的圈.
相关定义
邻接:两个点有公共边,两条边有公共顶点; 关联:边与其顶点; 环:一条边的两个顶点重合; 重边:两个点之间有多于一条边; 简单图:既无环也无重边的图; 补图:图G的补图定义为 G :与G有相同的顶点集, 中两个点 G 相邻当且仅当它们在G中不相邻; 7. 二部分图(二分图) 8. 支撑子图 9. 导出子图 10. 点度,通路,回路 1. 2. 3. 4. 5. 6.
e '∈π ( e )
Kruskal算法
1.设w(e1 ) ≤ w(e2 ) ≤ .... ≤ w(em ), S = φ , i = 0, j = 1; 2.若G S ∪ {e j } 包含圈,转3,否则转4; 3.令j = j + 1, 若j ≤ m转2,否则停止; 4.令S = S ∪ {e j }, 并设i = i + 1; 5.若i = n 1,则结束,这时G[ S ]即为所求;否则转2.

第二节 树和最小支撑树

第二节 树和最小支撑树

定义 8.2 支撑树 :树状支撑子图称为原图的支撑树 或曰“全部点、部分边形成的树”
定理 8.3
图G有支撑树的充分必要条件是G为连通图
例如 要在五个城市之间铺设电话线
例如 要在五个城市之间铺设电话线
例如 要在五个城市之间铺设电话线
8.2.2 最小支撑树问题
定义 8.3 设图 G (V,E),对 G的每一条边 e i, 赋予一个数 W,称为边 e i 的权,图 G 连同 它边上的权称为赋权图.
4
1
3 3
4 4
2
2
8
6
图6-16
ei T
W (e ) 18
i
以上算法也称为贪婪算法. 因为它仅仅抓住了每一步最有利的选择, 而不顾及这个选择对后面决策带来的影响.
好在这么快捷而简单的算法依然能够保 证找到最优解,实在不错.
但要注意,对于运筹学的许多其他问题 运用类似的贪婪算法是找不到最优解的.
i
V1
e4
3
4
e3
2
V2
e2
2
e5
V3
1
e1
V4
定义 8.4 一个赋权图上,某支撑树所有边上 权的总和,称为该支撑树的权;所有支撑树 中权最小的称为最小支撑树.
v1
6 3 6
v1
3
v2
4
v3
v1
3
v2
v1
6
v3
v2
4
v3
v2
4
v3
求最小支撑树的方法: 1.Kruskal算法(避圈法) 首先把有m条边n个顶点的赋权图的边按权 a1 , a2 ,K , am . 的递增顺序排列: 然后,设 e1 a1 , e2 a2 ,检查 a3 ,如果 a3 与 e1 , e2 不构成圈,则令 e3 a3,否则放弃 a3 , 检查 a4 , 若 a4 不与 e1 , e2构成圈,则 e3 a4, 否则放弃 a4 ,检查 a5 ,如此继续下去,最 后保留下来的边连同它们的端点就构成最小 支撑树.

运筹学-第八章-图与网络

运筹学-第八章-图与网络

河北工业大学管理学院 孔造杰 制作
Page 16 of 46
2003年9月13日12时46分
§8-2 最小树问题 Minimum Spanning Tree Problem
加边法:去掉G中所有边,得到n个孤立点;然后加边; 加边的原则:从最短边开始添加,加边的过程中不能形成圈, 直到连通(n-1条边)。
§8-1 图的基本概念Basic Concepts of Graph
子图、支撑子图
图G1={V1、E1}和图G2={V2,E2}如果 V1 ⊆ V2和E1 ⊆ E2 称G1是G2的一个子图。若 有 V1=V2,E1 ⊆ E2 则称 G1是G2的一个支撑 子图(部分图),图8-2(a)是图 8-1的一 个子图,图8-2(b)是图 8-1的支撑子图, e1 注意支撑子图也是子图,子图不一定是支撑 子图。 v2 e6 v4
e2 v2 e6 v4
e1 v1 e3 e4 e5 e7
e2 v3 e8 v5 v2
v1 e3 v3 v2
e2
v1 v3
e6 v5 v4
e7
图6-3(b)
e8 v5
图8 -1
图6-3(a)
河北工业大学管理学院 孔造杰 制作
Page 12 of 46
2003年9月13日12时46分
§8-1 图的基本概念Basic Concepts of Graph
河北工业大学管理学院 孔造杰 制作
C
B
Page 2 of 46
2003年9月13日12时46分
§8-1 图的基本概念Basic Concepts of Graph
图G可 定义为点和边的集合,记作
其中V ≠ φ
G ={ V , E}

最小树问题

最小树问题

i 2在 , X 2 中e 2 选 ,4 边 E 3 E 2 e 2 4e 1,e 2 2,e 3 2,4 3 X X 2 v 4 v 1 ,v 2 ,v 3 ,v 4 ,X 3 v 5 ,v 6 ,
i 3在 , X 3 中e 4 选 ,5 边 E 4 E 3 e 4 5e 1,e 2 2,e 3 2,e 4 4,5 4 X X 3 v 5 v 1 ,v 2 ,v 3 ,v 4 ,v 5 ,X 4 v 6 ,
i 4在 , X 4 中e 5 选 ,6 边 E 5 E 4 e 5 6e 1,e 2 2,e 3 2,e 4 4,e 5 5,6 5 X X 4 v 6 v 1 ,v 2 ,v 3 ,v 4 ,v 5 ,v 6 V ,
设v1是T的一个悬挂点,考虑图T-{v1},则图T{v1} 的顶点数为K,由归纳假设可得 :
,因为 m T(v1) nT(v1)1 nT(v1) nT 1 , nT(v1) nT 1,则 mT(v1) mT1 ,证毕。
定理3:图T是树的充分必要条件是任意两个顶点之间恰 有一条链。
证明:必要性 因T是连通的,故任两个点之 间至少有一条链。但如果某两个点之间有两条链 的话,那么图T中含有圈,这与树的定义矛盾, 从而任两个点之间恰有一条链。
7
4 v6
5
v4
v2 2
v5
4
3
4 v6 v4
v5
4
3
4 v6 v4
v3 5
6
v1 1
7
5
v2 2
v5
v3 5
4
6
3
v1 1
7
4 v6 5
v4
v2 2
v5
4
3
4 v6 v4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

相关定义
邻接:两个点有公共边,两条边有公共顶点; 关联:边与其顶点; 环:一条边的两个顶点重合; 重边:两个点之间有多于一条边; 简单图:既无环也无重边的图; 补图:图G的补图定义为 G :与G有相同的顶点集, 中两个点 G 相邻当且仅当它们在G中不相邻; 7. 二部分图(二分图) 8. 支撑子图 9. 导出子图 10. 点度,通路,回路 1. 2. 3. 4. 5. 6.
Kruskal算法
设G=<V,E,W>,将G中非环边按权从小 到大排序:e1, e2, …, em. (1) 取e1在T中 (2) 查e2,若e2与e1不构成回路,取e2也在T 中,否则弃e2. (3) 再查e3,…, 直到得到生成树为止.
例子
求图的一棵最小生成树. 求图的一棵最小生成树
所求最小生成树如 图所示, 图所示,W(T)=38.
最小值支撑(生成)树
定义:网络中权值最小的支撑树,称为该网络的最小支撑 树.
定理:设T 是G的支撑树,则下面几个命题等价: (1):是G的最小支撑树; T (2): 对任意T 0上的边e有w(e) = max w(e ')
e '∈C ( e )
(3): 对任意T 上的边e有w(e) = min w(e ')
π (e) : 对于T的任意一条边,T e不连通,设其两个连通分支
分别为T1 , T2 , 它们所对应的点集分别为S1 , S 2,则( S1 , S 2 )构 成G的一个割集,记为π (e).
支撑树
定理:设T 是图G的支撑树,则T 0不包含G的任何割集,但对 T中任一条边e, 存在唯一的割集,它包含在T 0 e中. 基本割集:对于T 每条边e都存在G的唯一割集,这样的割集一共 n 1个,称为G的基本割集. C (e ') : 对于T 0中每一条边e ', T + e ' 都包含唯一的回路.
Dijkstra算法
1.令T = φ , R = {v1}, S = {v2 , v3 ,...., vn }, ui = w1i 2.选取uk = min{ui } = wik , 若uk = +∞则停止,G中不存在支
vt ∈S
撑树;否则令R = R ∪{vk }, S = S {vk }, T = T ∪ {eik }; 3.若S = φ,则停止,T为最小支撑树;否则对于一切v j ∈ S , 令u j = min{u j , wkj }, 转2.
e '∈π ( e )
Kruskal算法
1.设w(e1 ) ≤ w(e2 ) ≤ .... ≤ w(em ), S = φ , i = 0, j = 1; 2.若G S ∪ {e j } 包含圈,转3,否则转4; 3.令j = j + 1, 若j ≤ m转2,否则停止; 4.令S = S ∪ {e j }, 并设i = i + 1; 5.若i = n 1,则结束,这时G[ S ]即为所求;否则转2.
图的基本概念及最小支撑树问题
无向图
定义 无向图G = <V,E>, 其中 (1) V ≠ 为顶点集,元素称为顶点 (2) E为V&V 的多重集,其元素称为无向边,简称边 实例 设 V = {v1, v2, …,v5}, E = {(v1,v1), (v1,v2), (v2,v3), (v2,v3), (v2,v5), (v1,v5), (v4,v5)} 则 G = <V,E>为一无向图
图的连通性
无向图的连通性 (1) 顶点之间的连通关系:G=<V,E>为无向图 ① 若 vi 与 vj 之间有通路,则 vivj ② 是V上的等价关系 R={<u,v>| u,v ∈V且uv} (2) G的连通性与连通分支 ① 若u,v∈V,uv,则称G连通 ② V/R={V1,V2,…,Vk},称G[V1], G[V2], …,G[Vk]为连通分 支,其个数 p(G)=k (k≥1); k=1,G连通
性质
(1)
∑ m = 0 ( j = 1,2,..., m ) ( 2) ∑ ( m = 1) = d ( v ), ∑ ( m ( 3) ∑ m = 0
n i =1 m ij + m j =1 ij i j =1 ij i, j
ij
= 1) = d ( vi ), i = 1, 2,..., n
割集
1. 删除顶点及删除边 Gv ——从G中将v及关联的边去掉 GV′——从G中删除V′中所有的顶点 Ge ——将e从G中去掉 GE′——删除E′中所有边 2. 点割集与边割集 点割集与割点 定义 G=<V,E>, V′V V′为点割集——p(GV′)>p(G)且有极小性 v为割点——{v}为点割集 定义 G=<V,E>, E′E E′是边割集——p(GE′)>p(G)且有极小性 e是割边(桥)——{e}为边割集
(4) 平行边对应的列相同
邻接矩阵
定义 设无向图D=<V,E>, V={v1, v2, …, vn}, E={e1, e2, …, em}, 令cij为顶点 vi 和 vj 之间边的条数,称(cij)为D的邻接矩 阵,记作A(D),或简记为A.
定义 设有向图D=<V,E>, V={v1, v2, …, vn}, E={e1, e2, …, em}, 令cij为顶点 vi 邻接到顶点 vj 边的条数,称(cij)为D (cij)的 邻接矩阵,记作A(D),或简记为A.
有向图
定义 有向图D=<V,E>, 只需注意E是V×V 的多重子集 图2表示的是一个有向图,试写出它的V 和 E
注意:图的数学定义与图形表示,在同构的意义下是一一对应的
网络(带权图)
对于图G的每条边e都赋予一个值w(e),称为边的权,则G 连同边上的权称为一个网络,记为G=(V,E,w)
无向图的关联矩阵
时间复杂性
Kruskal算法:
O(n 2 log n)
O(n 2 ) Dijkstra算法:
作业
P :1, 2 140

支撑树
定义:T为G的支撑子图,且T为树,称T为G的支撑树. 定理:G有支撑树当且仅当G为连通图;
( S1 , S 2 ) : S1 , S 2 V (G ), 且S1 ∩ S 2 = φ , ( S1 , S 2 )表示S1与S 2之间的 边的集合,且( S1 , S 2 ) E (G ). 反树:设T 为图G的支撑树,令T 0 = G T , 称T 0为T的反树.
无向图的关联矩阵(对图无限制) 定义 无向图G=<V,E>,|V|=n,|E|=m,令 mij为 vi 与 ej 的关联次数,称(mij)n×m为G 的关联矩阵,记为M(G). 性质:
(1)
∑ m = 2 ( j = 1,2,..., m ) ( 2) ∑ m = d ( v ) ( i = 1, 2,..., n) ( 3) ∑ m = 2 m
无向树
定义 (1) 无向树——连通无回路的无向图 (2) 平凡树——平凡图 (3) 森林——至少由两个连通分支(每个都是树)组成 (4) 树叶——1度顶点 (5) 分支点——度数≥2的顶点
树的充要条件
定理16.1 设G=<V,E>是n阶m条边的无向图,则下面各命题 是等价的: (1) G 是树 (2) G 中任意两个顶点之间存在惟一的路径. (3) G 中无回路且 m=n1. (4) G 是连通的且 m=n1. (5) G 是连通的且 G 中任何边均为桥. (6) G 中没有回路,但在任何两个不同的顶点之间加一条新 边,在所得图中得到惟一的一个含新边的圈.
n i =1 m ij j =1 ij i ij i, j
( 4) 平行边的列相同
有向图的关联矩阵
有向图D=<V,E>,则称 (mij)n×m为D的关联矩阵,记为 定义 有向图 , 的关联矩阵,记为M(D). ×
1 , vi 为 e j的始点 mij = 0 , vi与 e j 不关联 1 ห้องสมุดไป่ตู้ v 为 e 的终点 i j
相关文档
最新文档