杭电基础算法学习笔记 第3讲 并查集

2022/2/15

并查集 Disjoint Set "不相交的集合"

将编号分别为1...N的N个对象划分为不相交集合,在每个集合中,选择其中某个元素代表所在集合

常见两种操作:

1. 合并两个集合

2. 查找某元素属于哪个集合

查找元素属于哪个集合(查找简单)

合并两个集合(merge合并)(合并复杂)

 查找元素属于哪个集合(查找复杂)

合并两个集合(合并简单)

为了避免合并的时候最坏情况,进行优化

例1:2018浙大考研复试

 

 集合数-1(or孤立子图数-1)

用集合数讨论,就是因为每个点有标号,找最小的代表集合,因此并不是每个点都等价的,通过点的大小可以确定出上下级,进而拎出来一条树,而不是一张有环的图(尽管确实有环,但是并不需要考虑进去。只考虑环的一个子图树就行了)

最小生成树

生成树:一个图包含了一个图的所有n个顶点,且只有n-1条线,则成为生成树

最小生成树:边的权值和最小

 

 MST:minim spanning tree

 性质:对于一个连通图,至少存在一颗最小生成树,包含最短的一条边

证明:

1. 反证法,假设所有的最小生成树都不包含最短的这条边l,设这条边连接的两个顶点为A,B

2. 现在把l这条边加上,随便删去其他以A或B为顶点的任何一条边,总权重和不增

3. 因为无环,且有n个顶点,n-1条边,故仍然为联通的树,新树比旧树更优且包含最短一条边

4. 矛盾,假设不成立;因此对于一个连通图,至少存在一颗最小生成树,包含最短的一条边

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值