博客
关于我
并查集(初学)
阅读量: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/

你可能感兴趣的文章
nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
查看>>
Nuget~管理自己的包包
查看>>
NuGet学习笔记001---了解使用NuGet给net快速获取引用
查看>>
nullnullHuge Pages
查看>>
NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
查看>>
null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
查看>>
Number Sequence(kmp算法)
查看>>
Numix Core 开源项目教程
查看>>
numpy
查看>>
Numpy 入门
查看>>
NumPy 库详细介绍-ChatGPT4o作答
查看>>
NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
查看>>
numpy 或 scipy 有哪些可能的计算可以返回 NaN?
查看>>
numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
查看>>
numpy 数组与矩阵的乘法理解
查看>>
NumPy 数组拼接方法-ChatGPT4o作答
查看>>
numpy 用法
查看>>
Numpy 科学计算库详解
查看>>
Numpy.fft.fft和numpy.fft.fftfreq有什么不同
查看>>
numpy.linalg.norm(求范数)
查看>>