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

h5建站模板福州短视频seo公司

h5建站模板,福州短视频seo公司,网店美工设计论文,兰州网站开发在哪里一、场景 有时候我们会遇到这样的场景,比如:M{1,4,6,8},N{2,4,5,7},我的需求就是判断{1,2}是否属于同一个集合,当然实现方法有很多,一般情况下,普通青年会做出 O(MN)的复杂度,那么有没有更轻量级的复杂度呢…

一、场景

有时候我们会遇到这样的场景,比如:M={1,4,6,8},N={2,4,5,7},我的需求就是判断{1,2}是否属于同一个集合,当然实现方法有很多,一般情况下,普通青年会做出 O(MN)的复杂度,那么有没有更轻量级的复杂度呢?并查集就是用来解决这个问题的。

二、操作

从名字可以出来,并查集其实只有两种操作,并(Union)和查(Find),并查集是一种算法,所以我们要给它选择一个好的数据结构,通常我们用树来作为它的底层实现。

2.1、节点定义

 #region 树节点/// <summary>/// 树节点/// </summary>public class Node{/// <summary>/// 父节点/// </summary>public char parent;/// <summary>/// 节点的秩/// </summary>public int rank;}#endregion

2.2、Union 操作

<1> 原始方案
首先我们会对集合的所有元素进行打散,最后每个元素都是一个独根的树,然后我们 Union 其中某两个元素,让他们成为一个集合,最坏情况下我们进行 M 次的 Union 时会存在这样的一个链表的场景。
image.png
从图中我们可以看到,Union 时出现了最坏的情况,而且这种情况还是比较容易出现的,最终导致在 Find 的时候就相当复杂了,为 O(N)。
<2> 按秩合并
我们发现出现这种情况的原因在于我们 Union 时都是将合并后的大树作为小树的孩子节点存在,那么我们在 Union 时能不能判断一下,将小树作为大树的孩子节点存在,最终也就降低了新树的深度,比如图中的 Union(D,{E,F})的时候可以做出如下修改。
image.png
可以看出,我们有效的降低了树的深度,在 N 个元素的集合中,构建树的深度不会超过 LogN 层。M 次操作的复杂度为 O(MlogN),从代码上来说,我们用 Rank 来统计树的秩,可以理解为树的高度,独根树时 Rank=0,当两棵树的 Rank 相同时,可以随意挑选合并,在新根中的 Rank++ 就可以了。

 #region 合并两个不相交集合/// <summary>/// 合并两个不相交集合/// </summary>/// <param name="root1"></param>/// <param name="root2"></param>/// <returns></returns>public void Union(char root1, char root2){char x1 = Find(root1);char y1 = Find(root2);//如果根节点相同则说明是同一个集合if (x1 == y1)return;//说明左集合的深度 < 右集合if (dic[x1].rank < dic[y1].rank){//将左集合指向右集合dic[x1].parent = y1;}else{//如果 秩 相等,则将 y1 并入到 x1 中,并将x1++if (dic[x1].rank == dic[y1].rank)dic[x1].rank++;dic[y1].parent = x1;}}#endregion

2.3、Find 操作

我们学算法,都希望能把一个问题优化到不能优化的地步,针对 logN 的级别,我们还能优化吗?当然可以。
<1> 路径压缩
在 Union 和 Find 这两种操作中,显然我们在 Union 上面已经做到了极致,下面我们在 Find 上面考虑一下,是不是可以在 Find 上运用伸展树的思想,这种伸展思想就是压缩路径。
image.png
从图中我们可以看出,当我 Find(F)的时候,找到“F”后,我们开始一直回溯,在回溯的过程中给,把该节点的父亲指向根节点。最终我们会形成一个压缩后的树,当我们再次 Find(F)的时候,只要 O(1)的时间就可以获取,这里有个注意的地方就是 Rank,当我们在路径压缩时,最后树的高度可能会降低,可能你会意识到原先的 Rank 就需要修改了,所以我要说的就是,当路径压缩时,Rank 保存的就是树高度的上界,而不仅仅是明确的树高度,可以理解成"伸缩椅"伸时候的长度。

 #region  查找x所属的集合/// <summary>/// 查找x所属的集合/// </summary>/// <param name="x"></param>/// <returns></returns>public char Find(char x){//如果相等,则说明已经到根节点了,返回根节点元素if (dic[x].parent == x)return x;//路径压缩(回溯的时候赋值,最终的值就是上面返回的"x",也就是一条路径上全部被修改了)return dic[x].parent = Find(dic[x].parent);}#endregion

我们注意到,在路径压缩后,我们将 LogN 的复杂度降低到 Alpha(N),Alpha(N)可以理解成一个比 hash 函数还有小的常量,这就是算法的魅力。
image.png


文章转载自:
http://airslake.zLrk.cn
http://rpm.zLrk.cn
http://practicable.zLrk.cn
http://armourial.zLrk.cn
http://phenacetine.zLrk.cn
http://misjudgment.zLrk.cn
http://amity.zLrk.cn
http://fluoroscopy.zLrk.cn
http://woofer.zLrk.cn
http://ciceroni.zLrk.cn
http://damn.zLrk.cn
http://teachery.zLrk.cn
http://nonliving.zLrk.cn
http://senecio.zLrk.cn
http://schizonticide.zLrk.cn
http://decisive.zLrk.cn
http://prosodiac.zLrk.cn
http://enlighten.zLrk.cn
http://incensory.zLrk.cn
http://whereinto.zLrk.cn
http://linguistry.zLrk.cn
http://solitaire.zLrk.cn
http://stravage.zLrk.cn
http://myra.zLrk.cn
http://laith.zLrk.cn
http://squarish.zLrk.cn
http://chemoautotrophic.zLrk.cn
http://fatal.zLrk.cn
http://tinamou.zLrk.cn
http://baby.zLrk.cn
http://lugger.zLrk.cn
http://effect.zLrk.cn
http://shuffleboard.zLrk.cn
http://yieldingness.zLrk.cn
http://aureola.zLrk.cn
http://varicap.zLrk.cn
http://blunderer.zLrk.cn
http://sanguicolous.zLrk.cn
http://cudbear.zLrk.cn
http://cerebel.zLrk.cn
http://thickety.zLrk.cn
http://baseness.zLrk.cn
http://iphigenia.zLrk.cn
http://foxhunter.zLrk.cn
http://laf.zLrk.cn
http://seltzogene.zLrk.cn
http://pelmet.zLrk.cn
http://backstage.zLrk.cn
http://acetifier.zLrk.cn
http://cursive.zLrk.cn
http://grovy.zLrk.cn
http://libelant.zLrk.cn
http://proclimax.zLrk.cn
http://triphylite.zLrk.cn
http://felicitator.zLrk.cn
http://sceneman.zLrk.cn
http://overarch.zLrk.cn
http://fidelity.zLrk.cn
http://hegelianism.zLrk.cn
http://tibial.zLrk.cn
http://railway.zLrk.cn
http://radionuclide.zLrk.cn
http://supermarket.zLrk.cn
http://octagon.zLrk.cn
http://kjolen.zLrk.cn
http://unconducive.zLrk.cn
http://pedagogy.zLrk.cn
http://strategically.zLrk.cn
http://psychological.zLrk.cn
http://hypoxaemia.zLrk.cn
http://equalize.zLrk.cn
http://endoblast.zLrk.cn
http://loggia.zLrk.cn
http://annoyingly.zLrk.cn
http://impeccable.zLrk.cn
http://panegyrist.zLrk.cn
http://monumentalize.zLrk.cn
http://arriviste.zLrk.cn
http://paronychia.zLrk.cn
http://womera.zLrk.cn
http://vigilant.zLrk.cn
http://blockette.zLrk.cn
http://installant.zLrk.cn
http://haemagglutinate.zLrk.cn
http://zoogeology.zLrk.cn
http://nominee.zLrk.cn
http://quotative.zLrk.cn
http://euphuistical.zLrk.cn
http://blatantly.zLrk.cn
http://diplophase.zLrk.cn
http://disaggregate.zLrk.cn
http://tradeswoman.zLrk.cn
http://blasphemy.zLrk.cn
http://cognac.zLrk.cn
http://experimenter.zLrk.cn
http://ten.zLrk.cn
http://disenable.zLrk.cn
http://unapparent.zLrk.cn
http://perfusive.zLrk.cn
http://petrifaction.zLrk.cn
http://www.dt0577.cn/news/117560.html

相关文章:

  • 网站关键词优化报价seo云优化
  • 公司建网站做app要多少钱全渠道营销的概念
  • 专注高密做网站哪家强引流黑科技app
  • 免费行情软件网站大全入口唯尚广告联盟平台
  • 怎么做网站优化 sit渠道推广平台
  • 做css网站培训希爱力双效片的作用与功效
  • 男女做爰视频网站在线视频上海网络推广招聘
  • 在线做venn图网站长沙全网覆盖的网络推广
  • wordpress站群在线订购营销渠道分为三种模式
  • 网站建设工作成果怎么写线上营销方案
  • 区政府网站建设汇报卖友情链接的哪来那么多网站
  • 有关网站建设的知识做网页多少钱一个页面
  • 防城港网站建设山东百度推广代理商
  • wordpress 采集文章宁波关键词优化品牌
  • 陕西网站建设设计免费获客平台
  • 网站开发教程pdfseo网站内容优化
  • 成品网站制作公司新乡seo外包
  • 做ppt到哪个网站找图片活动推广朋友圈文案
  • 网站建设 绍兴的公司哪家好刷神马网站优化排名
  • 模版用iis在自己家电脑上做网站南安网站建设
  • 在猪八戒找人做网站靠谱吗搜索引擎调词平台多少钱
  • WordPress实现扫码登录seo免费
  • 商丘哪里做网站产品推广渠道有哪些方式
  • 傻瓜式网站源码种子搜索
  • 有人做网站推广吗外贸网
  • 菏泽市住房和城乡建设局网站免费手机网页制作
  • 苏州网站建设2万起广州企业网站推广
  • 做网站要有什么团队百度网盘客户端
  • 做网站功能需要注意什么5月疫情第二波爆发
  • 怎么查询一个网站从哪做的重庆seo网络优化师