并查集
以下是关于并查集(Disjoint Set Union, DSU) 的详细中文解析:
一、什么是并查集?
一种用于高效管理 元素分组 和 动态连通性 的数据结构,支持两种核心操作:
- 合并(Union):将两个不相交集合合并为一个。
- 查找(Find):确定元素属于哪个集合(通常返回集合的代表元素)。
二、核心思想
-
森林表示法
用多棵树表示集合,每棵树的根节点是该集合的代表元素。

-
路径压缩(Find优化)
查找时扁平化路径,减少后续查询时间。def find(x): if parent[x] != x: parent[x] = find(parent[x]) # 递归压缩路径 return parent[x] -
按秩合并(Union优化)
合并时将小树挂到大树根下,避免树过高。def union(x, y): rx, ry = find(x), find(y) if rx == ry: return if rank[rx] < rank[ry]: # 按秩合并 parent[rx] = ry elif rank[rx] > rank[ry]: parent[ry] = rx else: parent[ry] = rx rank[rx] += 1
三、代码模板(Python)
class UnionFind:
def __init__(self, n):
self.parent = list(range(n))
self.rank = [0] * n
def find(self, x):
if self.parent[x] != x:
self.parent[x] = self.find(self.parent[x])
return self.parent[x]
def union(self, x, y):
rx, ry = self.find(x), self.find(y)
if rx == ry: return
if self.rank[rx] < self.rank[ry]:
self.parent[rx] = ry
elif self.rank[rx] > self.rank[ry]:
self.parent[ry] = rx
else:
self.parent[ry] = rx
self.rank[rx] += 1
四、时间复杂度
| 操作 | 平均时间复杂度 |
|---|---|
| 初始化 | $O(n)$ |
| Find / Union | $\alpha(n)$(近似常数) |
$\alpha(n)$ 是反阿克曼函数,通常小于 5(效率接近 $O(1)$)
五、经典应用场景
-
连通性问题
- 判断图中两点是否连通(如:LeetCode 547 省份数量)
# 遍历所有边,合并相连节点 for u, v in edges: uf.union(u, v)
- 判断图中两点是否连通(如:LeetCode 547 省份数量)
-
最小生成树(Kruskal算法)
- 按边权重排序后合并,避免成环。
-
动态图的连通性
支持在线添加边并实时查询连通性。 -
分组问题
- 社交网络好友分组、岛屿数量等。
六、例题实战
题目:LeetCode 200. 岛屿数量
思路:
- 遍历网格,将相邻陆地(
'1')合并为一个集合 - 最终统计根节点数量即为岛屿数
def numIslands(grid: List[List[str]]) -> int:
m, n = len(grid), len(grid[0])
uf = UnionFind(m * n)
for i in range(m):
for j in range(n):
if grid[i][j] == '0': continue
idx = i * n + j
# 检查右方和下方相邻陆地
for dx, dy in [(1,0), (0,1)]:
ni, nj = i+dx, j+dy
if ni < m and nj < n and grid[ni][nj]=='1':
nidx = ni * n + nj
uf.union(idx, nidx)
# 统计根节点数量(代表元素)
roots = set()
for i in range(m):
for j in range(n):
if grid[i][j]=='1':
roots.add(uf.find(i * n + j))
return len(roots)
七、常见问题
-
如何处理初始化?
每个元素初始化为独立集合,父节点指向自身。 -
为什么需要路径压缩和按秩合并?
避免树退化成链,保证操作高效性。 -
能否用哈希表替代数组?
可以,但数组更高效(元素编号连续时优先使用)。
总结:并查集是解决动态连通性问题的利器,核心在于路径压缩与按秩合并的优化组合,将时间复杂度降至近 $O(1)$ 。掌握其思想后,可灵活应用于图论、分组等问题。
IP纯净度怎么查?
一、为什么要查IP纯净度 买了服务器或者换了新IP之后,很多人直接就开始用了,结果账号运营一段时间后出现各种问题才发现IP本身就有历史问题。IP纯净度检测应该是所有跨境账号运营开始之前的标准流程,而
2026-04-03 15:52:54
根据ip地址查网页怎么查询?
一、通过命令提示符查询查网页(Windows系统) ①按“Win+R”键,打开运营窗口。 根据ip地址查网页怎么查询? ②输入“cmd”+“回车”,打开命令提示符窗口。 ③输入“nslookup
2024-09-29 10:56:44
一文解析并查集(Union-Find)算法原理
并查集(Union-Find)算法是一个专门针对「动态连通性」的算法,我之前写过两次,因为这个算法的考察频率高,而且它也是最小生成树算法的前置知
2023-03-24 18:22:53
程度多粒度软粗糙集模型综述
算子的性质;再次,定义并研究了程度多粒度软粗糙集的不确定性度量及性质;最后,通过医院对病人诊断的案例验证了模型的实用性。
资料下载
佚名
2021-06-04 16:15:01
一种语义特征图引导的青光眼筛查方法
现有的端到端青光眼筛査模型往往忽略细微病变区域而导致过拟合冋题,并且其可解释性区域尚不明确针对上述问题,提出一种语义特征图引导的青光眼筛查方法。利用基于 Mobilenet v2作为特征提取网络
资料下载
佚名
2021-06-03 15:28:50
1000+例各类获奖电赛作品资料集(电路篇、代码篇、教程篇……)
本资料汇集了历届电赛的优秀获奖作品,并对所有作品资料进行仔细分类方便用户们选择学习,是一套价值极高的参考学习资料,适合每一位 电子 爱好者、电子工程师和对电赛感兴趣的学生
资料下载
ah此生不换
2019-09-06 11:43:55
非洲猪瘟快速筛查系统
1970-01-01 08:00:00 至 1970-01-01 08:00:00
非洲猪瘟快速筛查系统HM-PCR
1970-01-01 08:00:00 至 1970-01-01 08:00:00
一款袖珍电子查线器 电子资料
生活中在布设有照明电路暗线的墙壁上钉铁钉时,要准确找到电线位置并避开来可不是件容易的事;如果自己动手制作一个小小电子查线器,就可以快速、方便地解决这些难题。
请问GPIOC的时钟怎么查?
请问:使用F28M35的blinky_m3程序,M3时钟是100MHz,但是灯闪烁的频率只有8MHz左右,灯由GPIOC控制,这就是说GPIOC的时钟其实不是直接使用的M3的时钟,那么请问GPIOC的时钟怎么查?是在哪条语句里面啊?谢谢!
金鉴智能体温筛查机——大数据体温监控+人脸识别+考勤门禁的红外测温设备
机能实现快速体温筛查,是一款集大数据体温监控、人脸识别、考勤门禁功能于一体的红外测温设备,具有高精度快速测温、清晰成像、自动报警功能特点,可以大范围简捷、安全准确、快速锁定体温高温异常人员,迅速
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机