IT源码网

并查集(Union-Find)算法讲解

qq123 2020年10月19日 程序员 230 0

最近用到了并查集,记录一下。主要还是对应用场景进行分析建模,判断是否可以使用并查集。

 

并查集算法主要用于判断连通性。典型的应用场景很多,举例:

1. 网络连通判断。如,已知部分临散的点连通,判断整个网络是否连通。

2. 变量名等同性。在程序中,可以声明多个引用来指向同一对象,这个时候就可以通过为程序中声明的引用和实际对象建立动态连通图来判断哪些引用实际上是指向同一对象。

3. 金属渗透建模。金属可以理解为一个二维矩阵,金属是否可以导电,需要判断是两端是否连通。

 

并查集使用数组来维护一个树状结构。主要有3个操作:

(1) union, 连通2个点。合并到一个分支。

(2) connected,判断2个节点是否位于同一个分支,也就是是否连通。

(3) find, 获取当前节点所在的分支。

 

union实现的不同,耗时差异大。这点需要注意,保持树的深度不要恶化。

发布评论

分享到:

IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

算法: skiplist 跳跃表代码实现和原理讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。