美文网首页
数据结构-并查集

数据结构-并查集

作者: 羽裳有涯 | 来源:发表于2020-04-14 11:28 被阅读0次

并查集

  • 并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题

makeSet(s)

:建立一个新的并查集,其中包含 s 个单元素集合。

union

:将两个子集合并成同一个集合。

find(x)

确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。

并查集的优化

1、路径压缩

我们找到最久远的祖先时“顺便”把它的子孙直接连接到它上面。这就是路径压缩了

int getfather(int v)
{
    if (father[v]==v)
      return v;
    else
    {
        father[v]=getfather(father[v]);//路径压缩
        return father[v];
     }
}

2、Rank合并

合并时将元素所在深度小的集合合并到元素所在深度大的集合。

void judge(int x ,int y)

{
     fx = getfather(x);
     fy = getfather(y);

     if (rank[fx]>rank[fy])
        father[fy] = fx;
     else
     {
        father[fx] = fy;
        if(rank[fx]==rank[fy])
           ++rank[fy]; //重要的是祖先的rank,所以只用修改祖先的rank就可以了,子节点的rank不用管
     }
}

相关文章

  • 并查集

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

  • 并查集

    并查集是什么 并查集是一种用来管理元素分组情况的数据结构。并查集可以高效地进行如下操作。不过需要注意并查集虽然可以...

  • Union-Find algorithm-并查集算法

    并查集 并查集(Union-Find Set),也称为不相交集数据结构(Disjointed Set Data S...

  • 高级数据结构:并查集(Java 实现)

    并查集的内容非常简单,代码的每个方法的实现都很短,难在灵活应用。 并查集基础 为什么叫并查集?因为在这个数据结构中...

  • 最小生成树算法——Kruskal算法

    算法思想 先了解下什么叫并查集 并查集 (Union Find Set)又叫不相交集数据结构(Disjointed...

  • luogu P1551 亲戚(并查集入门)

    这是一个并查集模板。 说一下并查集,虽然我也是刚刚学会没几天。。。 并查集是个树形结构的数据结构,主要用于合并两个...

  • markdown学习

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

  • 数据结构——并查集

    目录 1、等价关系和等价类 2、并查集实现中的权衡 2.1、快速FIND实现(Quick FIND) 2.2、快速...

  • 数据结构 - 并查集

    相关概念 等价关系若对于每一对元素(a, b), ![](http://latex.codecogs.com/sv...

  • 数据结构-并查集

    并查集 洛谷(P3367) 在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集...

网友评论

      本文标题:数据结构-并查集

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