【暖*墟】 #图论# 最小生成树

1、最小生成树的概念

实际问题:在n个城市中建立一个通信网络,则至少需要布置n-1条通信线路。

这个时候我们需要考虑如何在成本最低的情况下建立这个通信网?

于是我们就可以引入连通图来解决我们遇到的问题,n个城市就是图上的n个顶点,

边表示两个城市的通信线路,每条边上的权重就是我们搭建这条线路所需要的成本,

所以现在我们有n个顶点的连通网可以建立不同的n-1条边的生成树。

当我们构造这个连通网所花的成本最小时,此图就称为最小生成树。

最小生成树的重要性质:MST性质

  • 假设N=(V,{E})是一个连通网,U是顶点集V的一个非空子集,
  • 如果(u,v)是一条具有最小权值的边,其中u属于U,v属于V-U,
  • 则必定存在一颗包含边(u,v)的最小生成树。

下面就介绍两种使用MST性质生成最小生成树的算法:普里姆算法和克鲁斯卡尔算法。

 

2、普里姆算法—Prim算法

【一. 算法思路】

V为点的全集。首先从图中的一个(任意)起点a开始,把a加入U集合,

从与a有关联的边中寻找权重最小的那条边、并且该边的终点b在顶点集合(V-U)中,

我们也把b加入到集合U中,并且输出边(a,b)的信息,

这样我们的集合U就有:{ a , b }。

寻找与a或b关联的边中、权重最小的那条、并且该边的终点在集合(V-U)中。

我们把c加入到集合U中,并且输出对应的那条边的信息,

这样我们的集合U就有:{a,b,c}这三个元素了,一次类推,直到所有顶点都加入到了集合U。

对下面这幅图求其最小生成树:

这里写图片描述

从顶点v1开始,(v1,v3)边的权重最小,所以第一个输出的边就是:v1—v3=1。

这里写图片描述

然后,我们要从v1和v3作为起点的边中寻找权重最小的边,

首先了(v1,v3)已经访问过了,所以我们从其他边中寻找,

发现(v3,v6)这条边最小,所以输出边就是:v3—-v6=4。

这里写图片描述

然后,我们要从v1、v3、v6这三个点相关联的边中寻找一条权重最小的边,

我们可以发现边(v6,v4)权重最小,所以输出边就是:v6—-v4=2。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值