数据结构 第六章 图——MST性质(十分简单的理解!)

MST性质(Minimun Spanning Tree)

书上给出的定义是:假设 N = ( V , E ) N=(V,E) N=(V,E)是一个连通网,U是顶点集V的一个非空子集。若 ( u , v ) (u,v) (u,v)是一条具有最小权值的边,其中 u ∈ U u\in U uU v ∈ V − U v\in V-U vVU,则必存在一棵包含边 ( u , v ) (u,v) (u,v)的最小生成树。

看到这里,相信大多数人都十分苦恼,很难理解它的意思,下面我以自己的理解对其作出解释(这里是利用反证法的相关理解),希望能有所帮助。

  1. 首先,这个集合U和V-U是人为地去规定的,相当于是我们用一条线将一棵生成树划分为两个部分,如下图所示(不要怀疑,下图就是一棵生成树):在这里插入图片描述
    在这里该树就是一棵最小生成树。由上图所示,我们用一条虚线将该树划分为了两部分(自己也可以假想划的其他部分,都是行得通的),我们左边区域为U,右边就自然为V-U了。
  2. 然后按书上的意思就是分别从U和V-U上找一个顶点,且这两个顶点一定有最小权值。书上这句话的意思就是,将这两个顶点连起来。注意:由于生成树的性质,依照上述连起来后就会形成一个回路,如下图:在这里插入图片描述
    只要注意这两个顶点分别属于U和V-U就行了,这里我们取图中2号连线。
  3. 那么我们连上后,明显地有一条回路。注意书上的这句话 “ 则 必 存 在 一 棵 包 含 边 “则必存在一棵包含边 (u,v) 的 最 小 生 成 树 ” 的最小生成树” ,既然已经包含 ( u , v ) (u,v) (u,v)了,如果就如上图一样,共有8个顶点,8条边了,很明显这是不符合生成树的概念的。既然我们人为地加了一条边(图中2号连线),那么我们也应该人为地删除一条线,且删除的这条线的两个顶点也必须分别属于两个子集U和V-U。那么我们从上图看到,v1,v2正是这样的顶点,删除后如下图:在这里插入图片描述
  4. 因为我们前面规定了,相当于我们加的这条线一定具有最小权值,所以加的这条边的权值一定大于 ( v 1 , v 2 ) (v1,v2) (v1,v2)的权值,那么,这也就是 包 含 边 包含边 (u,v) 的 最 小 生 成 树 的最小生成树 了。

那么综上所示,做一个小小滴步骤总结:

  • 首先人为地划分出两个子集U和V-U
  • 分别从这两个子集找出一个顶点,并将这两个顶点连起来
  • 删除原先连接这两个子集的边

普里姆(Prim)算法和克鲁斯卡(Kruskal)算法就是利用MST性质构造最小生成树的算法。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值