应用
并查集主要用来判断动态连通性(即网络中有多少个不相交的集合)。
说明
并查集的主要操作是并和查
- 并:void union(x,y) 用于将x和y所属于的不相交集合并为相交集合,如果x,y本属于同一个集合,则不需要操作。
- 查:int find(x) 判断某个个体所属于的集合ID,集合ID一般用某个代表个体的ID表示
并查集还有其他接口,其中两个如
- int count() 返回并查集的不相交集合的个数
- boolean connected(x,y) 判断两个个体是否属于同一个集合
并查集设计的主要难点在于如何降低并查集常用算法的时间复杂度,由此衍生出许多并查集算法。该部分可以参考
http://blog.csdn.net/dm_vincent/article/details/7655764。
并查集最终的形状是一个森林,每颗树表示每个不相交集合,每个节点表示每个个体。
参考资料
1. 并查集Union-Find 算法介绍
http://blog.csdn.net/dm_vincent/article/details/7655764
2. 该博客里面含有较多的并查集的知识
http://blog.csdn.net/vsooda/article/details/7295249