并查集
创始人
2024-12-18 04:30:36
0

并查集是一种用于维护集合的数据结构,通常用于解决图论中的一些算法问题,如判断连通性、最小生成树等。

以下为并查集的基本操作:

  1. 初始化:将所有元素的父节点设为它本身,即构造出n个只有一个元素的集合。
  2. 查找:给出某个元素,返回该元素所在集合的代表元素(也称“根节点”)。
  3. 合并:将两个集合合并为一个集合,即将其中一个集合的代表元素的父节点设为另一个集合的代表元素。
  4. 判断连通性:给出两个元素,判断它们是否在同一个集合中,即它们的根节点是否相同。

以下是并查集的实现示例,使用了路径压缩和按秩合并优化:

class DisjointSetUnion:
    def __init__(self, n):
        self.parent = list(range(n))
        self.rank = [0] * n

    def find(self, x):
        if self.parent[x] != x:
            self.parent[x] = self.find(self.parent[x])
        return self.parent[x]

    def merge(self, x, y):
        px, py = self.find(x), self.find(y)
        if px != py:
            if self.rank[px] > self.rank[py]:
                self.parent[py] = px
            elif self.rank[px] < self.rank[py]:
                self.parent[px] = py
            else:
                self.parent[py] = px
                self.rank[px] += 1

    def same(self, x, y):
        return self.find(x) == self.find(y)

这里给出了一个最基础的并查集实现,时间复杂度为O(mα(m, n)),其中m为操作次数,n为元素个数。其中α为Ackermann函数的逆函数,其

相关内容

热门资讯

科普分享!途游有辅助挂是真的吗... 科普分享!途游有辅助挂是真的吗(透视辅助)真是是有挂(2025已更新)(哔哩哔哩)1)途游有辅助挂是...
四分钟了解!陕麻圈外 挂,潘潘... 四分钟了解!陕麻圈外 挂,潘潘讲故事吗,安装教程(有挂透视)1、进入到潘潘讲故事吗黑科技之后,能看到...
一分钟了解!多乐跑得快(透明挂... 一分钟了解!多乐跑得快(透明挂)切实真的有挂(2025已更新)(哔哩哔哩)小薇(透视辅助)致您一封信...
一分钟了解!开心联盟软件有挂吗... 一分钟了解!开心联盟软件有挂吗,边锋斗地主可以看底牌吗,详细教程(有挂规律)1、金币登录送、破产送、...
总算清楚!悠闲麻将云南版有挂吗... 总算清楚!悠闲麻将云南版有挂吗(透明挂)一直真的有挂(2024已更新)(哔哩哔哩);1、在悠闲麻将云...
二分钟了解!17好友麻将怎么才... 二分钟了解!17好友麻将怎么才能赢,小闲川南棋牌有猫腻吗,2025版教程(有挂攻略)小闲川南棋牌有猫...
玩家必看攻略!钱塘十三水外挂样... 玩家必看攻略!钱塘十三水外挂样子(辅助挂)确实存在有挂(2025已更新)(哔哩哔哩);该软件可以轻松...
总算明白!福建兄弟十三水辅助器... 总算明白!福建兄弟十三水辅助器(辅助挂)好像有挂(2021已更新)(哔哩哔哩)1、打开软件启动之后找...
八分钟了解!微友麻将有挂吗,财... 八分钟了解!微友麻将有挂吗,财神十三张能开挂吗,必备教程(有挂介绍)1、许多玩家不知道财神十三张能开...
一分钟了解!中至乐平麻将有挂的... 一分钟了解!中至乐平麻将有挂的吗(透明挂)都是真的是有挂(2025已更新)(哔哩哔哩)中至乐平麻将有...