博客
关于我
并查集(初学)
阅读量:334 次
发布时间:2019-03-04

本文共 846 字,大约阅读时间需要 2 分钟。

并查集是一种高效的数据结构管理算法,主要用于合并和查找操作。它通过路径压缩和按秩合并两个优化手段,确保了几乎常数时间复杂度的性能。

并查集的基本原理

并查集由两个主要函数组成:查找(Find)和合并(Union)。查找函数用于确定节点所属的集合,合并函数用于将两个集合合并成一个。

查找函数(Find)

查找函数的主要作用是找到一个节点的根节点,通过路径压缩优化,将节点直接连接到根节点,减少后续查询的时间。

int find(int root) {    int son = root;    while (root != pre[root]) { // 查找上级        root = pre[root];    }    return root; // 返回上级}

合并函数(Union)

合并函数用于将两个节点所在的集合合并。首先查找两个节点的根节点,如果根节点不同,则将其中一个根节点的父节点指向另一个根节点。

int union(int start, int finish) {    int root1 = find(start);    int root2 = find(finish);    if (root1 != root2) { // 如果父类节点不相同(既构成不了环路)        pre[root1] = root2;    }}

路径压缩优化

为了提升查找效率,查找函数会在路径压缩过程中将节点直接连接到根节点,减少后续查找的时间。

while (son != root) { // 路径压缩    int cmp = pre[son];    pre[son] = root; // 把上级节点赋值为根节点    son = cmp;}

按秩合并优化

在合并两个集合时,按秩合并优化会将较小的树合并到较大的树上,保持树的高度平衡,确保操作的时间复杂度。

通过以上方法,并查集能够高效地管理图中的连通区域,广泛应用于图论、网络管理和分布式系统等领域。

转载地址:http://xxqq.baihongyu.com/

你可能感兴趣的文章
Objective-C实现fenwick tree芬威克树算法(附完整源码)
查看>>
Objective-C实现FenwickTree芬威克树算法(附完整源码)
查看>>
Objective-C实现fermat little theorem费马小定理算法(附完整源码)
查看>>
Objective-C实现FermatPrimalityTest费马素数测试算法(附完整源码)
查看>>
Objective-C实现fft2函数功能(附完整源码)
查看>>
Objective-C实现FFT快速傅立叶变换算法(附完整源码)
查看>>
Objective-C实现FFT算法(附完整源码)
查看>>
Objective-C实现fibonacci search斐波那契查找算法(附完整源码)
查看>>
Objective-C实现fibonacci斐波那契算法(附完整源码)
查看>>
Objective-C实现fibonacci斐波那契算法(附完整源码)
查看>>
Objective-C实现FIFO(附完整源码)
查看>>
Objective-C实现FigurateNumber垛积数算法(附完整源码)
查看>>
Objective-C实现finding bridges寻找桥梁算法(附完整源码)
查看>>
Objective-C实现first come first served先到先得算法(附完整源码)
查看>>
Objective-C实现FIR滤波器(附完整源码)
查看>>
Objective-C实现fischer yates shuffle洗牌算法(附完整源码)
查看>>
Objective-C实现FisherYates Shuffle洗牌算法(附完整源码)
查看>>
Objective-C实现fisherYates洗牌算法(附完整源码)
查看>>
Objective-C实现FloodFill洪水填充函数算法(附完整源码)
查看>>
Objective-C实现floor向下取整算法(附完整源码)
查看>>