东莞网站建设最牛农产品期货交易平台app

张小明 2026/1/11 9:12:19
东莞网站建设最牛,农产品期货交易平台app,培训课程网站,做pc网站软件数据结构#xff1a;并查集 并查集#xff08;Disjoint Set Union#xff0c;简称 DSU#xff09;是一种用于高效管理和合并不相交集合的数据结构#xff0c;核心支持两种操作#xff1a; 查找#xff08;Find#xff09;#xff1a;确定某个元素属于哪个集合#xf…数据结构并查集并查集Disjoint Set Union简称 DSU是一种用于高效管理和合并不相交集合的数据结构核心支持两种操作查找Find确定某个元素属于哪个集合通常返回集合的代表元素合并Union将两个不相交的集合合并为一个集合。并查集的设计目标是在近乎常数时间内完成这两种操作通过路径压缩和按秩合并两种优化策略可将时间复杂度降低到近似O(1)O(1)O(1)严格来说是阿克曼函数的反函数增长极慢。资料https://pan.quark.cn/s/43d906ddfa1b、https://pan.quark.cn/s/90ad8fba8347、https://pan.quark.cn/s/d9d72152d3cf一、并查集的核心概念1. 集合的表示并查集采用树形结构表示集合每个集合对应一棵树树的根节点是该集合的代表元素。每个元素存储一个指向父节点的引用根节点的父节点是自身例如集合{1,2,3}\{1,2,3\}{1,2,3}可表示为树1←2←3根为 1集合{4,5}\{4,5\}{4,5}可表示为树4←5根为 4。2. 核心操作定义操作描述未优化时间复杂度查找Find从元素x出发沿父节点指针向上遍历直到找到根节点集合代表O(h)O(h)O(h)hhh为树的高度合并Union找到元素x和y所在集合的根节点若根不同则将其中一棵树的根节点指向另一棵树的根节点O(h)O(h)O(h)查询连通性判断x和y是否属于同一集合即 Find(x) Find(y)O(h)O(h)O(h)3. 优化策略未优化的并查集在最坏情况下会退化为链表如连续合并1-2, 2-3, 3-4...导致操作时间复杂度升至O(n)O(n)O(n)。两种优化策略可解决该问题1路径压缩Path Compression在执行Find 操作时将路径上所有节点的父节点直接指向根节点扁平化树结构减少后续查找的次数。示例查找元素 3 时将路径1←2←3优化为1←2、1←3下次查找 2 或 3 可直接找到根 1。2按秩合并Union by Rank/Size在执行Union 操作时比较两棵树的“秩”可以是树的高度或节点数量将秩较小的树的根指向秩较大的树的根避免树的高度过度增长。按高度合并维护每个根节点的高度合并时矮树挂到高树的根下按大小合并维护每个根节点的子节点数量合并时小树挂到大树的根下。二、并查集的实现步骤初始化每个元素初始化为独立集合父节点指向自身秩初始化为 1或高度初始化为 0查找操作带路径压缩递归或迭代找到根节点并将路径上所有节点的父节点指向根合并操作按秩合并找到两个元素的根节点若根不同则按秩合并两棵树并更新秩的值连通性查询比较两个元素的根节点是否相同。三、并查集的实现示例PythonclassUnionFind:def__init__(self,size):初始化并查集size 为元素总数元素编号从 0 到 size-1self.parentlist(range(size))# 父节点数组parent[i] 表示 i 的父节点self.rank[1]*size# 按大小合并rank[i] 表示以 i 为根的集合的大小deffind(self,x):查找元素 x 的根节点带路径压缩ifself.parent[x]!x:# 路径压缩将 x 的父节点直接指向根节点self.parent[x]self.find(self.parent[x])returnself.parent[x]defunion(self,x,y):合并元素 x 和 y 所在的集合按秩合并root_xself.find(x)root_yself.find(y)ifroot_xroot_y:return# 已在同一集合无需合并# 按大小合并小树合并到大树下ifself.rank[root_x]self.rank[root_y]:self.parent[root_x]root_y self.rank[root_y]self.rank[root_x]else:self.parent[root_y]root_x self.rank[root_x]self.rank[root_y]defis_connected(self,x,y):判断 x 和 y 是否连通returnself.find(x)self.find(y)defget_set_size(self,x):获取元素 x 所在集合的大小rootself.find(x)returnself.rank[root]# 使用示例if__name____main__:# 初始化 5 个元素的并查集0-4ufUnionFind(5)# 合并集合uf.union(0,1)uf.union(1,2)uf.union(3,4)# 查询连通性print(uf.is_connected(0,2))# True0、1、2 连通print(uf.is_connected(0,3))# False0 和 3 分属不同集合# 合并两个集合uf.union(2,3)print(uf.is_connected(0,3))# True所有元素连通# 查询集合大小print(uf.get_set_size(0))# 5所有元素在一个集合中四、并查集的时间复杂度未优化查找和合并操作的时间复杂度为O(h)O(h)O(h)最坏情况hnhnhn时间复杂度O(n)O(n)O(n)带路径压缩 按秩合并单次操作的均摊时间复杂度为O(α(n))O(\alpha(n))O(α(n))其中α(n)\alpha(n)α(n)是阿克曼函数的反函数增长极其缓慢。当n≤10600n \leq 10^{600}n≤10600时α(n)≤5\alpha(n) \leq 5α(n)≤5可近似认为是O(1)O(1)O(1)。五、并查集的典型应用并查集是解决连通性问题的利器广泛应用于图论、算法竞赛和工程场景图的连通分量统计场景统计无向图中连通分量的数量方案遍历所有边合并边的两个顶点最终根节点的数量即为连通分量数。最小生成树算法Kruskal 算法场景加权无向图的最小生成树求解方案将所有边按权重排序依次选择边若边的两个顶点不在同一集合则合并加入生成树直到生成树包含n−1n-1n−1条边。检测图中的环场景判断无向图是否存在环方案遍历所有边若边的两个顶点已连通则存在环否则合并两个顶点。动态连通性问题场景动态添加边并查询两点是否连通如社交网络的好友关系、网络节点的连通性方案用并查集维护动态连通关系支持高效的合并和查询。岛屿数量问题LeetCode 经典题场景给定二维网格统计岛屿的数量相邻的 1 视为一个岛屿方案将每个 1 视为一个元素合并相邻的 1最终根节点的数量即为岛屿数。区间合并问题场景合并多个重叠或相邻的区间方案将区间映射为元素合并有交集的区间最终得到不重叠的区间集合。六、并查集的扩展带权并查集功能不仅维护连通性还维护节点到根节点的权值如距离、差值应用解决节点间关系的传递问题如判断a到b的距离、a和b的大小关系等。可持久化并查集功能支持查询历史版本的连通状态应用需要回溯的场景如撤销之前的合并操作。七、并查集与其他数据结构的对比数据结构核心功能优势劣势并查集高效管理集合的合并与查询时间复杂度近似 O(1)实现简单不支持删除元素拆分集合邻接表存储图的结构支持遍历适合图的遍历DFS/BFS连通性查询效率低O(n)哈希表存储键值对支持查找支持任意类型的键查找快无法高效维护集合的合并并查集是针对连通性问题的专用数据结构在处理动态合并和查询的场景下效率远超其他结构。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

山东平台网站建设找哪家可做分析图的地图网站

文章目录前言1. 使用Docker本地部署Focalboard1.1 在Windows中安装 Docker1.2 使用Docker部署Focalboard2. 安装Cpolar内网穿透工具3. 实现公网访问Focalboard4. 固定Focalboard公网地址前言 Focalboard 是一款开源的项目管理工具,核心功能围绕看板协作展开&#x…

张小明 2026/1/10 14:07:06 网站建设

网站建设需要ftp企业网站主要有哪四种类型

从零开始玩转Zynq:vivado2018.3安装与软硬协同开发实战 你有没有遇到过这样的场景?手头有个Zynq开发板,想做个实时图像处理系统,结果刚打开Xilinx官网就卡在第一步—— Vivado怎么装?版本选哪个?组件勾哪…

张小明 2026/1/10 11:23:26 网站建设

网站域名可以更换吗招聘工作的网站有哪些

如何轻松打造个性化音乐空间:BetterNCM完整使用手册 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 你是否曾经觉得自己的音乐播放器界面千篇一律?是否渴望为日…

张小明 2026/1/9 21:48:10 网站建设

做计算机模拟ie题模拟网站打不开微网站自己怎么做的

“放弃30万年薪,他靠AI求职中介‘越级匹配’英国算法岗,回国反而‘水土不服’?”“不是所有30万的‘体面’,都抵得上一次被看见的精准对焦。”引言 最近,一位服务超过5年、帮助超百名留学生进入顶尖科技公司的资深算法…

张小明 2026/1/10 0:18:20 网站建设

淮安做网站找哪家公司长沙网站排名公司

第一章:构建缓存失效?可能是上下文惹的祸在现代软件开发中,CI/CD 流水线广泛依赖缓存机制来加速构建过程。然而,开发者常遇到“构建缓存未命中”的问题,即使代码未发生明显变更。一个容易被忽视的原因是:**…

张小明 2026/1/9 23:37:41 网站建设

外贸网站定制建站中国建筑app下载

企业AI Agent的serverless架构设计 关键词:企业AI Agent、Serverless架构、架构设计、人工智能、无服务器计算 摘要:本文聚焦于企业AI Agent的Serverless架构设计。随着人工智能在企业中的广泛应用,如何高效、灵活且低成本地部署和管理AI Agent成为关键问题。Serverless架构…

张小明 2026/1/7 22:35:58 网站建设