图的应用--最小生成树

一. 前言

        生成树的概念: 生成树是图的极小连通子图,也就是去掉一条边就非连通的图,并且这个图的所有顶点都由边连接在一起,但不存在回路。

        生成树的特点:一个图可以有很多个不同的生成树。生成树的顶点个数和图的顶点个数相同。一个有n个顶点的连通图的生成树有n-1条边。在生成树中再加一条边必然形成回路。生成树中任意两个点之间的路径唯一。

        如果是深度优先遍历形成的生成树就叫作深度优先生成树,广度优先遍历形成的生成树就叫做广度优先生成树

        最小生成树:给定一个无向网,在该网的所有生成树中,使得各边权值之和最小的那棵生成树就称为该网的最小生成树,也叫最小代价生成树。

        最小生成树具有非常广泛的用途,例如求线路的最少费用。

二. 如何找到一个最小生成树

        找生成树的方法有很多,但不管是哪一种求生成树的方法,都存在一种MST性质。

       

         也就是说,在生成树的构造过程中,首先分两个集合,一个已经落在生成树上的顶点集U,另外一个就是还没有落在生成树上的顶点集V-U。接下来就在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。再把这个边对应的还没在U中的顶点加入到U中,继续重复上面过程,直到所有的顶点都在U当中。

        下面我们来学习构造最小生成树的两种最常用算法。

三. 普里姆(prim)算法

        该算法的思路如下所示:

 

 总的来说,普里姆算法主要就是找两个顶点,这两个顶点之间的权值是最小的。

四. 克鲁斯卡尔(Kruskal)算法

        该算法的思路如下所示:

总的来说,克鲁斯卡尔算法主要就是找边,找权值最小的边,直到所有的顶点都包含在这个连通分量当中。 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值