zoukankan      html  css  js  c++  java
  • [Algorithm] 并查集

    背景QAQ

    最近在准备找工作,以前就听说过并查集,一直没有深入了解,今天就仔细分析一下并查集,如果有漏洞请多多指教

    概念

    并查集就是一种树形结构,主要是用来处理一些不相交集合的合并及查询问题。

    那么是怎么处理的呢。

    首先要求集合中的元素不相同,其次要求可以识别出某个集合。这就需要我们找出一个集合中的某个元素作为特征值来代表这个集合。

    试想类似于武林门派。把集合类似于不同门派。比如少林、武当、峨眉等。然后把各门派的掌门人作为该门派的代表人物。这样就很像并查集的集合概念了

    并查集要做的就是合并和查询。

    合并join:

    现在要求两个集合合并,类似于武当和峨眉结盟,那么就需要在这两个门派中推选出新的盟主来代表这个大联盟。

    在集合中呢,就要通过把两个特征值合并来组成一个门派。因为并查集是一个树结构,所有可以通过使A集合特征值称为B集合子节点来完成合并。

    查询find:

    查询是通过每个子节点都有一个指向父节点的指针来联系在一起。所以这很容易实现。

    代码实现(使用数组来模拟):

    int pre[N] // 表示N节点的父节点值情况
    int find(x)
    {
        int r = x;  
        while (pre[r] != r)
            r = pre[r[;
        return r;
    }
    void join(int x, int y)
    {
        int a = find(x);
        int b = find(y);
        if (a != b)
            pre[a] = b;
    }
  • 相关阅读:
    把Outlook与Google Calendar同步了
    (int) Int32.Parse() Convert.toInt32() (转)
    Http Context(转)
    DataReader DataSet(转)
    主键和外键(转)
    显卡参数学习
    开源抽象工厂模式,序列化,反序列化等..
    ASP.NET中App_Code,App_Data等文件夹的作用(转)
    using tianjiayinyong qubie
    xuliehua fanxuliehua xml(zhuan)
  • 原文地址:https://www.cnblogs.com/immjc/p/9384922.html
Copyright © 2011-2022 走看看