美文网首页
并查集基本介绍

并查集基本介绍

作者: 铜炉 | 来源:发表于2021-01-18 18:16 被阅读0次

前言

今天在力扣上做了一道每日一题,接触到了并查集这个概念,以前没有了解过,记录在此。

定义

并查集(Disjoint-Set)是一种可以动态维护若干个不重叠的集合,并支持合并与查询两种操作的一种数据结构。

官方关于并查集的说明没有找到,但是并查集的概念那就是维护了一个森林,森林里有很多树,每棵树代表了一个集合,树的根节点就是这个集合的leader,树里面没个子节点都是这个集合的一个单元。

而这个森林支持两种操作

1、查询:给定一个目标值,找到这个目标值的leader
2、合并:给定两个目标值,把两个目标合并到一个集合中

操作是就这么两个操作,看起来很简单,接下来可以先简单的玩一下。

张三的老大是张二、张二的老大是张大,张大是leader,老大是自己;
李四的老大是李三,李三是leader,老大是自己;

查找

现在我们想查一下李四的老大是谁,步骤如下

1、李四是leader么?不是,找李四的老大
2、李四的老大是李三,李三是leader么?是,那么返回李三。

合并

case1:现在新来了一个李氏集团有一个新成员李五要加入。那么要把李五合并进李氏集团,步骤如下。

随便找一个李氏的成员,比如李四,让李四当上李五的老大,合并完成。

case2:现在张氏集团要把李氏集团整体收编

随便找一个张氏集团的成员,比如张二;
随便找到一个李氏集团的成员(任一成员的老大都是一个人),找到其老大,李三;
让张二当上李三的老大,合并完成。

与树的不同

其实根据上面的例子可以看出来,并查集每一棵树,我们是从下往上找的,而在树中,我们通常是从上至下来寻找到各个节点。

这样反查的好处,就是在做一些合并操作的时候代价比较小,比如现在我们有两个元素突然有了共同点,我们要把两个元素所在的树合并(比如case2中,张二突然发现和李四是同一个姥姥生的,现在要把族谱扩大了)。这时,如果要从上之下来找,我们要遍历森林里所有的书,才能知道这两个元素(张二和李四)分别所在的树在哪,然后再把两棵树合并,如果从下至上来查找,那么只需要让一个元素让另一个元素的老大就行了(修改父节点指针)

使用场景

通常并查集这种数据接口都用在多集合反向索引的场景,比如找亲戚

同学a有亲戚b、c、d
同学b有亲戚e、f
同学g有亲戚h、i

那么可以看到e、f通过b和a、c、d都建立起一个亲戚的关系,我们可以通过并查集,直接将两组集合合并,然后再判断两个人是否是亲戚的时候直接判断是不是在一个集合(是不是同一个老大),就可以了。

不然、假设我们要看c和f是不是亲戚,

1、我们要找到所有有c的集合,然后在这些集合看下是不是有f,
2、我们还要看下c所在的所有集合的所有成员所在的集合里是不是是有f
3、我们还要看c所在的所有集合的所有成员所在的所有集合里是不是有f....

周而复始,复杂度越来越大

所以并查集主要是用来解决这种多线索集合的问题,通常数据结构为一个网状(图),我们构建一个并查集(森林),维护这些集合(树)。

相关文章

  • 并查集基本介绍

    前言 今天在力扣上做了一道每日一题,接触到了并查集这个概念,以前没有了解过,记录在此。 定义 并查集(Disjoi...

  • 算法与数据结构系列之[并查集-中]

    上篇介绍了并查集的基本实现,这篇介绍几种并查集的优化方法。 1.基于size优化: 上一篇当中树实现并查集的方法中...

  • Number of Connected Components i

    基本的graph搜索题 1: DFS BFS: 并查集,并查集直观找num of edges, 所以用n - nu...

  • markdown学习

    #并查集 ##并查集的定义 ##并查集的操作

  • 算法笔记之并查集——找出知晓秘密的所有专家

    并查集知识 首先介绍一下并查集。并查集主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: ...

  • 408新增:并查集

    一、 并查集的概念 并查集(Disjoint Set)的逻辑结构属于集合,只进行并和查两种基本操作。一个集合可以划...

  • 算法模板(四)并查集

    并查集 路径压缩并查集

  • 并查集入门使用

    本文参考自《算法笔记》并查集篇 并查集的定义 什么是并查集?并查集可以理解为是一种维护数据集合的结构。名字中并查集...

  • 并查集练习

    并查集 参考《算法笔记》 三要素:并,查,集。 并差集与一个算法有关,kruskal算法,就可通过并查集实现。 1...

  • 并查集

    并查集 并查集是什么 并查集是一种用来管理元素分组情况的数据结构,并查集可以高效地进行如下操作: 查询元素a和元素...

网友评论

      本文标题:并查集基本介绍

      本文链接:https://www.haomeiwen.com/subject/kymxzktx.html