并查集(Union-Find)

简介: 并查集(Union-Find)是一种用于解决动态连通性问题的数据结构,它主要用于处理不相交的集合(Disjoint Sets)之间的合并和查询操作。并查集的主要优点是,它不需要比较相邻的元素,而是通过分配和收集元素来进行操作,从而在处理大量数据时非常高效。

并查集(Union-Find)是一种用于解决动态连通性问题的数据结构,它主要用于处理不相交的集合(Disjoint Sets)之间的合并和查询操作。并查集的主要优点是,它不需要比较相邻的元素,而是通过分配和收集元素来进行操作,从而在处理大量数据时非常高效。
并查集的基本思想是将每个元素分配到一个集合中,并通过维护一个代表每个集合的根节点来表示集合之间的连通关系。当需要合并两个不相交的集合时,只需将它们的根节点进行合并;当需要查询某个元素所在的集合时,只需查询其根节点。
下面是一个使用 Python 实现的并查集示例代码:

class UnionFind:
def init(self):
self.parent = []
self.size = []
def find(self, x):
if self.parent[x] != x:
self.parent[x] = self.find(self.parent[x])
return self.parent[x]
def union(self, x, y):
root = self.find(x)
root2 = self.find(y)
if root != root2:
self.parent[root] = root2
self.size[root2] += self.size[root]
return True
CopyCopy

使用示例:

uf = UnionFind(10)
print(uf.find(0))
uf.union(0, 1)
print(uf.find(0))
uf.union(1, 2)
print(uf.find(0))
CopyCopy

输出结果:

0
0
1
1
1
CopyCopy

何时使用并查集:

  1. 动态连通性:在游戏开发、机器人导航等场景中,需要处理物体之间的动态连通性
目录
相关文章
|
前端开发 JavaScript 开发者
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
2711 0
|
JavaScript 前端开发 API
vue3和vue2的区别
vue3和vue2的区别
259 4
|
JavaScript UED
多个请求下 loading 的展示与关闭
多个请求下 loading 的展示与关闭
564 1
|
前端开发
css小技巧
css小技巧
|
数据采集 数据可视化 数据挖掘
快递的旅行日记 - 深度挖掘快递物流地图轨迹查询API 的使用场景
全球化经济的不断发展使得快递业变得越来越重要,而快递物流地图轨迹查询 API 也因此应运而生。
443 0
快递的旅行日记 - 深度挖掘快递物流地图轨迹查询API 的使用场景
|
机器学习/深度学习 设计模式 固态存储
详细解读 | CVPR 2021轻量化目标检测模型MobileDets(附论文下载)(一)
详细解读 | CVPR 2021轻量化目标检测模型MobileDets(附论文下载)(一)
901 0
|
存储 算法 编译器
【C++初阶】九、STL---string/vector/list补充
目录 一、vs和g++下string结构说明 1.1 vs下string的结构 1.2 g++下string的结构 二、vector和list对比 2.1 vector优缺点 2.2 list优缺点 三、迭代器失效问题 四、list模拟实现 -> 操作符重载问题
327 0
【C++初阶】九、STL---string/vector/list补充
|
XML JSON Cloud Native
gRPC 知多少
当下,基于“微服务”的技术架构体系几乎主宰了整个业务市场,尤其是在云原生生态的拥抱下。无论是基于传统虚拟机生态还是云原生容器生态的现代微服务体系结构中,我们可以根据微服务的交互及通信风格将其划分为两大类:面向外部的微服务和面向内部的微服务。
330 0
【进阶C语言】字符函数和字符串函数(万文详解)(一)
【进阶C语言】字符函数和字符串函数(万文详解)(一)
|
计算机视觉
Transformer 落地出现 | Next-ViT实现工业TensorRT实时落地,超越ResNet、CSWin(二)
Transformer 落地出现 | Next-ViT实现工业TensorRT实时落地,超越ResNet、CSWin(二)
246 0