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

5.5.2_2并查集的进一步优化

知识汇总:

Find操作优化:

find操作主要是通过S[]数组一路向北来找给定节点的根节点,从给定节点到找到根节点所经过的节点路径称为查找路径。压缩路径就是让查找路径变短。

压缩路径过程:如开始让L节点找根节点A,那么会根据Find操作一路向北依次找到E、B、A,即LEBA为查找路径,压缩路径就是先找到根节点A,再将查找路径上的所有节点都挂到根节点下,即找到了根节点是A,查找路径上的节点为LEB都挂到根节点下,即index(A)=0,index(L)=11,index(E)=4,index(B)=1让S[11]=index(A)=0,S[4]=index(A)=0,S[1]=index(A)=0(开始B的S值就是0不用改),则此时L再想找根节点直接查找1次就直达根节点A了

代码实现:

根据给定节点x数组下标先while循环通过S[]>=0找到根节点root,再while循环对找根节点过程中的节点的S值=root数组下标即挂到根节点下边,即给定节点->根节点的路径已经变成了1即压缩了路径,等下一次再找给定节点的根节点时就还可使用已经压缩好的路径查找,提高了效率,时间复杂度能大概提高到O(1)(咋还找,这是用了缓存吗,给定节点的路径压缩完路径后能一直保持不变???)

优化:

Find操作-----》压缩路径,使得构造树的高度不超过O(α(n)) 近似于O(1),union操作------》小树合并大树,使得构造树的高度不超过O(log2n),O(α(n))<< O(log2n)压缩路径很优秀,旨在目的都为降低树的高度

优化汇总:

union操作优化前:find操作查找根节点最坏情况为树为单支h较高情况,最坏时间复杂度为O(n)即要从底部查到第一个节点,在进行n个独立元素的union操作时需要unin的次数为n-1次(如2个元素union,则需要1次union操作),且要先find再union,而find的时间复杂度是O(n),则union操作时间复杂度为O(n²)即n*O(n)

union操作优化后(小树合并大树):union操作优化小树合并大树后,会让树的高度不超过log2n,则find操作的时间复杂度不超过O(log2n),在进行n个独立元素的union操作时需要n-1次union,且进行union操作时先find再union,而find的时间复杂度是O(log2n),则union操作时间复杂度为O(nlog2n)

Find操作优化后(压缩路径):find操作压缩路径后会让树的高度不超过O(α(n)),则find操作的时间复杂度是O(α(n)),在进行n个独立元素的union操作时需要n-1次union,且进行union操作时先find再union,而find的时间复杂度是O(α(n)),则union操作时间复杂度为O(α(n))[即(n-1)*O(α(n))=O(nα(n))]

 

。。。。。。。。。。。。。 

又是啰嗦的一天。。。。。。 

http://www.lryc.cn/news/570889.html

相关文章:

  • Cult3D高级教程——1.技术综合篇
  • sql脚本导入sql_学习SQL:SQL脚本
  • 16进制颜色代码对照表
  • Eighth season eighth episode,Monica got a stripper in her bachelorette party??????
  • foxmail6.0需要下载证书才能发送邮件的解决
  • 无线路由器接入局域网的三种方式
  • PowerManager与WakeLock
  • AI编程:正在拉开新一轮“人与人”的差距
  • canvas的drawImage方法参数详解
  • 网站点击流分析
  • 菜鸟成长手册:八大品牌内存真伪巧识别
  • 三款简单的日光灯驱动电路图分享
  • R语言——RStudio下载R包时总是下载不成功?解决方案
  • FckEditor中文配置手册详细说明
  • 智能土木通 - 土木工程专业知识问答系统01:项目简介
  • 2014校园招聘_腾讯2014校园招聘
  • 前端—每天5道面试题(十)
  • 【C语言】函数递归(有相关的题目练习喔~)
  • 1688图片搜索API接口攻略
  • 谷歌地图离线包-尝试
  • jQuery 和 YUI (Yahoo User Interface) 各自的优缺点有哪些?具体的使用场景是怎样的?...
  • 基于51单片机的温度和液位监测系统(串口传输)
  • 网络监测软件有哪些
  • <c++基础(5)>整数溢出
  • WP7超越Androidi五大优势:硬件要求严格居首
  • Java类加载器与双亲委派模型深度解析
  • CSDN博客背景皮肤设置
  • 运用API创建多线程
  • 电位器是什么?
  • 如何使用configure脚本安装PBS