并查集,路径压缩

简介: 并查集,路径压缩

并查集


并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数、最小公共祖先、带限制的作业排序,还有最完美的应用:实现Kruskar算法求最小生成树。


从字面意思上理解,支持合并和查找操作的集合。


其主要是用来判断联通问题,也就是图中两点间是否存在道路可以连通。


并查集主要分为两种基本操作:

  1. 合并(Union/Merge):合并两个集合。
  2. 查询(Find/Get):查询元素所属集合。


并查集的概念


在计算机科学中,并查集(英文:Disjoint-set data structure,直译为不交集数据结构)是一种数据结构,用于处理一些不交集(Disjoint sets,一系列没有重复元素的集合)的合并及查询问题。并查集支持如下操作:


  • 查询:查询某个元素属于哪个集合,通常是返回集合内的一个“代表元素”。这个操作是为了判断两个元素是否在同一个集合之中
  • 合并:将两个集合合并为一个
  • 添加:添加一个新集合,其中有一个新元素。添加操作不如查询和合并操作重要,常常被忽略。


理解下面三句话,并查集就学会了:


“并”的意思是把两个处在同一个连通分量的结点给并到一起.

“查”的意思是查找一个结点的根节点.

“并”的时候需要用到“查”


不过这样还是比较晦涩。下面我们用图片的方式来讲讲。


图解并查集


并查集的重要思想在于,用集合中的一个元素代表集合。


刚开始好比诸侯国,各自为政。

image.png

后来3号被1号吞并了,定都1号城池。

image.png

同时2号也被1号吞并了,定都1号城池。

image.png

神州大地上 4,5,6也发生着相同的事情,5,6也背4号诸侯吞并了,定都4号城池。

image.png

后来1号把4号给吞并了,5,6也连带成了1号的领土。定都1号城池。

image.png

学习过前面的二叉树,其实我们可以把并查集想象成一个数的结构。


要寻找集合的代表元素(都城),只需要一层一层往上访问父节点(图中箭头所指的圆),直达树的根节点(图中橙色的圆)即可。

image.png

并查集路径压缩


image.png

image.png

相关文章
|
资源调度 监控 负载均衡
浅析PM2实用入门指南
PM2 是一个守护进程管理器,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡等功能。使用起来也是非常简单
1862 0
|
存储 安全 Linux
探索eBPF:Linux内核的黑科技(上)
探索eBPF:Linux内核的黑科技
|
9月前
|
机器学习/深度学习 自然语言处理 语音技术
《双向LSTM:序列建模的强大引擎》
双向长短时记忆网络(BiLSTM)是LSTM的扩展,通过同时处理序列的正向和反向信息,显著提升对序列数据的建模能力。它在每个时间步运行两个LSTM,分别按正向和反向顺序处理数据,融合前后向隐藏状态,捕捉长距离依赖关系和上下文信息,增强模型鲁棒性。BiLSTM广泛应用于文本分类、情感分析、命名实体识别、机器翻译、语音识别及时间序列预测等任务,表现出色。
516 14
|
机器学习/深度学习 算法 Python
使用Python实现深度学习模型:元学习与模型无关优化(MAML)
使用Python实现深度学习模型:元学习与模型无关优化(MAML)
863 0
使用Python实现深度学习模型:元学习与模型无关优化(MAML)
|
Java Windows Spring
Spring Boot CMD 运行日志输出中文乱码
Spring Boot CMD 运行日志输出中文乱码
589 0
|
缓存 JavaScript 前端开发
【性能革命!】Vue 3事件监听缓存的奥秘 —— 揭开前端优化的神秘面纱,让应用性能飙升的秘密武器!
【8月更文挑战第7天】随着前端应用日益复杂,性能优化变得至关重要。Vue 3 通过引入事件监听缓存等新特性提升了应用性能。此特性避免了重复注册相同的事件监听器,减少了资源浪费和潜在的内存泄漏问题。在 Vue 3 中,事件监听器首次渲染时注册,并在后续渲染中重用,除非组件状态变更或手动更新。通过一个示例组件展示了如何利用该特性优化性能,包括使用 `watchEffect` 或 `watch` 在状态变化时重新注册监听器。这一机制降低了浏览器负担,减少了内存占用,提高了应用响应速度,尤其对大型应用效果显著。合理运用事件监听缓存能够构建出更加流畅的应用体验。
679 3
|
SQL 消息中间件 分布式计算
Hadoop生态圈组件及其作用
Hadoop生态圈组件及其作用
|
移动开发 监控 Serverless
函数计算操作报错合集之在调用api时,遇到404问题该怎么办
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
209 0
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
718 0
|
存储 NoSQL 算法
使用图数据库进行复杂数据建模:探索数据关系的无限可能
【8月更文挑战第17天】图数据库以其高效的关系查询能力、直观的数据表示方式、灵活的数据模型和强大的可扩展性,在复杂数据建模和查询中展现出了巨大的潜力。随着大数据和人工智能技术的不断发展,图数据库的应用领域也将不断拓展和深化。对于需要处理复杂关系网络和数据关联性的场景来说,图数据库无疑是一个值得深入研究和应用的强大工具。