0
点赞
收藏
分享

微信扫一扫

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

90哦吼 2022-02-16 阅读 84
算法

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 条评论