并查集基础

raw/articles/2026/05/并查集基础

一句话总结

并查集(Union Find)是二叉树结构的衍生,用于高效解决无向图的动态连通性问题,所有操作时间复杂度 O(1)。

核心要点

1. 并查集的核心价值

并查集提供以下 API:

  • union(p, q):连接节点 p 和 q,O(1)
  • connected(p, q):查询 p 和 q 是否连通,O(1)
  • count():查询当前连通分量数量,O(1)

为什么需要并查集

  • 使用邻接表/邻接矩阵 + DFS/BFS 判断连通性需要 O(V+E)
  • 并查集只需一个数组,所有操作 O(1)
  • 特别适合处理动态连通性问题(边逐步增加)

2. 动态连通性问题

图结构中的连通操作与查询:

  1. 连接操作:将节点 p 和 q 连通
  2. 连通查询:判断两个节点是否连通(考虑传递性)
  3. 统计连通分量:查询当前图中有多少连通分量

连通关系的性质

  1. 自反性:节点 p 和 p 自身是连通的
  2. 对称性:如果 p 和 q 连通,则 q 和 p 也连通
  3. 传递性:如果 p 和 q 连通,q 和 r 连通,则 p 和 r 也连通

传递性使得不能简单地通过邻接表判断连通性,必须使用并查集或图遍历算法。

3. 图结构术语

  • 连通分量:图结构中的极大连通子图,每个节点自身初始时都是一个连通分量
  • 连接操作:将不同连通分量合并为一个
  • 连通:两个节点之间存在路径(直接或间接)

4. 应用场景

  • 编译器判断同一内存对象的不同变量引用
  • 社交网络中的朋友圈计算
  • Kruskal 最小生成树算法中的环检测
  • 动态连通性问题

5. 文章定位

本文是并查集系列的基础入门:

  • 不涉及具体代码实现(在后续《Union Find 算法实现及应用》中)
  • 不涉及算法题运用(在《并查集经典习题》中)
  • 重点介绍为什么需要并查集以及它能解决什么问题

相关概念

  • 并查集:并查集完整概念页
  • :并查集的应用场景
  • 无向图:并查集专用于无向图
  • 连通分量:并查集维护的核心指标
  • DFS:传统连通性判断方法,复杂度 O(V+E)
  • BFS:传统连通性判断方法,复杂度 O(V+E)
  • 二叉树:并查集是二叉树结构的衍生
  • 多叉树:并查集本质是多叉树森林

相关实体


Interactive Graph