最小生成树
定义:n
个顶点网络的生成树有
n
个结点,
n-1
条分枝。假设网络中有
m
条边
(m
≥
n-1)
,用
MST
表示许多可能的生成树的集合,每棵树中
n-1
条分枝上的权之和用
WG(T)
表示,则使得
WG(
T
min
)=Min{WG(T)| T MST}
的生成树
T
min
便是网络的最小生成树。
构造最小生成树的算法
:
Prime
算法
和
Kruskal
算法
Prime算法
1.可取图中任意一个顶点v作为生成树的根,之后如果要往生成树上添加顶点w,则在顶点 v 和 w之间必定存在一条边(v,w),并且该边的权值在所有连通顶点v和 w 之间的边中取值最小。
2.一般情况下,假设n个顶点分成两个集合:U(包含已经落在生成树上的顶点)和V-U(尚未落在生成树上的顶点),则在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。
算法思想
:
假设
N=(V
,
{E})
是一个连通图,
TE
是
N
上最小生成树中边的集合。算法从
U={u
0
}(u
0
V)
,
TE={ }
开始,
重复执行下述操作:
在所有
u
U
,
v
V
-
U
的边
(u, v) {E}
中找一条代价最小的边
(u
0
, v
0
)
并入集合
TE
,同时
v
0
并入
U
,直至
U=V
为止。此时,
TE
中必有
n-1
条边,则
T=(V
,
{
TE})
为
N
的最小生成树。
如下图所示:
最近我建立了个公众号,会发布一些关于网络安全的知识,以及网络安全的代码。如果大家对我的代码有疑问,也可以通过下面的公众号找到我,向我提问,我会及时回答,欢迎大家关注哦。