当前位置:网站首页>并查集总结
并查集总结
2022-08-02 23:47:00 【明朗晨光】
1、简介
1)有若干个样本 a、b、c、d… 类型假设是 V
2)在并查集中一开始认为每个样本都在单独的集合里
3)用户可以在任何时候调用如下两个方法:
boolean isSameSet(V x, V y):查询样本x和 样本y是否属于一个集合void union(V x,V y):把x和y各自所在集合的所有样本合并成一个集合
4)isSameSet 和 union 方法的代价越低越好
2、并查集结构
1)每个节点都有一条往上指的指针
2)节点 a 往上找到的头节点,叫做 a 所在集合的代表节点
3)查询 x 和 y 是否属于同一个结合,就是看看找到的代表节点是不是一个
4)把 x 和 y 各自所在集合的所有点合并成一个集合,只需要小集合的代表点挂在大集合的代表点的下方即可
(可以用哈希表或者数组实现,虽然二者的时间复杂度一致,但是哈希表实现方式的常数比数组实现的常数大2倍左右,所以在数据量很大的时候,数组的实现方式用时更少)
3、并查集的优化
1)节点往上找代表节点的过程,把沿途的链变成扁平的 【路径压缩】
说明:比如 a->b->c->f,即代表节点是 f,那么则将 a、b、c分别直接连到 f,变成了a->f、b->f、c->f
2)小集合挂在大集合的下面 【按秩合并】
说明:小集合挂在大集合下,链的长度增长得比较慢。所谓大小集合就是集合的元素个数,元素个数多的叫做大集合,小的叫做小集合。
3)如果方法调用很频繁,那么单次调用的代价为 O ( 1 ) O(1) O(1),两个方法都如此
4、并查集的应用
- 解决两大块区域的合并问题
- 常用在图等领域中(连通性问题)
边栏推荐
- 如何修复 SAP UI5 aggregation with cardinality 0..1 相关的错误消息
- NLP commonly used Backbone model cheat sheet (1)
- 几种常见的跨域解决方法
- 基于飞腾平台的嵌入式解决方案案例集 1.0 正式发布!
- 升级版的冒泡排序:鸡尾酒排序(快乐小时排序)
- 有奖提问|《新程序员》专访“Apache之父”Brian Behlendorf
- Teach you to locate online MySQL slow query problem hand by hand, package teaching package meeting
- Nuxt 所有页面都设置上SEO相关标签
- CIO修炼手册:成功晋升CIO的七个秘诀
- js基础知识整理之 —— 变量和数据类型
猜你喜欢
随机推荐
js基础知识整理之 —— 判断语句和三元运算符
js基础知识整理之 —— 闭包
CAS:474922-22-0,DSPE-PEG-MAL,磷脂-聚乙二醇-马来酰亚胺科研试剂供应
如何修复 SAP UI5 aggregation with cardinality 0..1 相关的错误消息
dataBinding的import导入
如何使用vlookup+excel数组公式 完成逆向查找?
Swift中的类型相关内容
What is the matter that programmers often say "the left hand is knuckled and the right hand is hot"?
NLP commonly used Backbone model cheat sheet (1)
【多线程】线程与进程、以及线程进程的调度
十二、form表单的提交
C# 异步编程(async和await)
esp32和ros2基础篇草稿-micro-ros-
js基础知识整理之 —— 字符串
【系统架构设计师】第三章 数据库系统
Rasa 3.x study series - Rasa - Issues 4792 socket debug logs clog up debug feed study notes
2022中国眼博会,山东眼健康展,视力矫正仪器展,护眼产品展
【mysql知识点整理】--- order by 、group by 出现Using filesort原因详解
【QT】自定义工程封装成DLL并如何调用(带ui界面的)
js基础知识整理之 —— 五种输出方式









