当前位置: 首页 > article >正文

算法中并查集中的rank数组有什么用

在并查集(Union-Find)算法中,rank 数组的作用是优化集合的合并操作,以减少树的高度,从而提高查找(Find)操作的效率。具体来说,rank 数组用于记录每个节点作为根节点时的树的"秩"或"高度",在合并(Union)两个集合时,可以通过 rank 值来决定如何合并,以确保树的高度尽可能小。

具体作用:

  1. 减少树的高度:并查集的基本操作包括查找(Find)和合并(Union),而 rank 是为了在合并两个集合时选择树高度更小的树作为子树,减少树的高度,从而优化后续的查找操作。

  2. 优化合并操作:当合并两个不同的集合时,通常会比较这两个集合根节点的 rank 值。如果 rank 小的一方会成为 rank 大的一方的子树,这样可以避免树的高度过快增长,确保整个树的结构较为平衡。

rank 优化的步骤:

  • 如果两个集合的根节点 rank 不同,rank 小的集合将被合并到 rank 大的集合上,保持树的高度不变。
  • 如果两个集合的根节点 rank 相同,任意选择一个根为另一个根的父节点,同时将新的根节点的 rank 加 1,因为树的高度增加了一层。

rank 与路径压缩的结合:

  • rank 通常和路径压缩(Path Compression)结合使用,路径压缩是在执行查找操作时,将查找到的所有节点直接连接到根节点,从而进一步减小树的高度。这两种优化方法共同作用,使并查集的时间复杂度接近常数级别(摊还复杂度为 O(α(n)),其中 α(n) 是阿克曼函数的反函数,增长极其缓慢)。

通过 rank 数组,能够使得并查集的性能更加高效,特别是在处理大量合并和查找操作时,显著减少了时间复杂度。


http://www.kler.cn/a/349098.html

相关文章:

  • Servlet的HttpServletRequest
  • python机器学习(手写数字识别)
  • 【Go初阶】两万字快速入门Go语言
  • 弘景光电:以创新为翼,翱翔光学科技新蓝海
  • 基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用
  • 针对一些需要登录鉴权的接口使用postman测试接口方法
  • SQL第15课——插入数据
  • 从零实现高并发内存池
  • 大模型之三十二-语音合成TTS(coqui) 之二 fine-tune
  • 名词解释 UTC 时间
  • [CSP-J 2023] 小苹果
  • Maplibre-gl\Mapbox-gl改造支持对矢量瓦片加密
  • MySQL数据库——SQL语句(完整详解DDL、DML、DQL、DCL语句,涵盖增删改查。附有案例+代码)
  • 【AI知识点】知识图谱评分函数(Scoring Function for Knowledge Graphs)
  • windows上传文件到服务器
  • 【Linux】Linux下的Makefile基本操作
  • 聚铭网络脆弱性扫描系统荣获CNNVD兼容性资质证书
  • 苍穹外卖学习笔记(十九)
  • 【力扣 | SQL题 | 每日3题】力扣1097,1149,1070
  • 【SpringBoot】application配置文件中的数组配置及绑定