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

西安网站建设q.479185700強网络推广协议合同范本

西安网站建设q.479185700強,网络推广协议合同范本,手机网站欣赏,郑州哪里有做网站文章目录并查集特点构建过程查找两个元素是否是同一集合优化查找领头元素设置两个元素为同一集合构建结构应用场景并行计算集合问题并查集特点 对于使用并查集构建的结构,可以使得查询两个元素是否在同一集合,以及合并集合的操作无限接近O(1) 构建过程…

文章目录

  • 并查集特点
  • 构建过程
    • 查找两个元素是否是同一集合
      • 优化查找领头元素
    • 设置两个元素为同一集合
  • 构建结构
  • 应用场景
    • 并行计算集合问题

并查集特点

  • 对于使用并查集构建的结构,可以使得查询两个元素是否在同一集合,以及合并集合的操作无限接近O(1)

构建过程

查找两个元素是否是同一集合

  • 并查集结构会让每个元素合并后,挂在一个领头元素上,可能呈现下面的结构,要判断d和f是否是同一集合,就判断顶部的零头元素是否一样,因为a和e不一样,所以不是同一集合

在这里插入图片描述

优化查找领头元素

  • 如上图的结构,当要查找d的领头元素时,需要一直往上遍历,当节点深度很深时,也会带来负担
  • 优化方式是,当某个元素查找到领头元素后,将元素路径上所经过的所有节点的领头元素设置成查找的节点,比如d查找到a后,将b的领头元素设置成a
  • 通过上面的优化手段可以看出,当使用并查集查询查询领头元素的次数越多,查找的效率就越好

设置两个元素为同一集合

  • 将两个元素的领头元素设置成同一个即可,即将挂载节点少的领头元素挂载到挂载节点多的领头元素下,比如上图将e挂载到a下,因为查找元素是否在同一集合是根据领头元素是否相同来的

构建结构

class Element {value;constructor(value) {this.value = value;}
}class Union {// 给定元素对应的修饰对象elementMap;// 元素对应的父元素fatherMap;// 领头元素下挂载的元素个数sizeMap;constructor(list) {this.elementMap = new Map();this.fatherMap = new Map();this.sizeMap = new Map();list.forEach((value) => {const element = new Element(value);this.elementMap.set(value, element);// 初始将所有元素都领头元素设置成自身this.fatherMap.set(element, element);// 初始所有领头元素下挂载的元素个数为1this.sizeMap.set(element, 1);});}// 查找领头元素findHead(element) {const path = [];// 找到领头元素while (element !== this.fatherMap.get(element)) {path.push(element);element = this.fatherMap.get(element);}// 优化操作:将路径上的元素的父元素,都更新成领头元素while (path.length) {this.fatherMap.set(path.pop(), element);}return element;}// 判断是否同一集合isSameSet(value1, value2) {if (this.elementMap.has(value1) && this.elementMap.has(value2)) {return (this.findHead(this.elementMap.get(value1)) ===this.findHead(this.elementMap.get(value2)));}return false;}// 设置两个元素为同一集合setUnion(value1, value2) {if (this.elementMap.has(value1) && this.elementMap.has(value2)) {const head1 = this.findHead(this.elementMap.get(value1));const head2 = this.findHead(this.elementMap.get(value2));if (head1 !== head2) {const bigOne =this.sizeMap(head1) > this.sizeMap(head2) ? head1 : head2;const smallOne = bigOne === head1 ? head2 : head1;this.fatherMap.set(smallOne, bigOne);this.sizeMap.set(bigOne,this.sizeMap.get(bigOne) + this.sizeMap.get(smallOne));this.sizeMap.delete(smallOne);}}}
}

应用场景

并行计算集合问题

初始问题和解法
在这里插入图片描述
通过多线程计算,将整个内容分成左右两个区域,通过多线程分别求出左右两个面积的岛屿数量为:1个和2个,总和为3,但实际岛屿答案为2个,所以还要计算左右两个是否有岛屿是属于同一个集合

  • 首先判断每一行分割的位置左右相邻节点是否都为1,是1说明为同一集合,通过并查集设置为同一集合,将总岛屿数量-1,同理后续相邻1节点只需要先通过并查集结构判断是否在同一集合,如果没有则设置为同一集合,然后岛屿数量-1的操作即可
  • 因为查询和合并的代价都很低,所以再通过多线程带来的提速更快了
http://www.yidumall.com/news/35104.html

相关文章:

  • 做网站时连服务器上的数据库百度收录提交网址
  • 哪个网站可以做笔译兼职客源引流推广
  • 网页设计教程大全搜索引擎优化技术
  • 门户网站建设请示报告网站友情链接怎么弄
  • 吴桥网站建设百度推广客服投诉电话
  • 济南网站建设工作室互联网平台推广是什么意思
  • 宝鸡网站优化哪家好可以发布推广引流的悬赏平台
  • 苏州网站制作目前较好的crm系统
  • 设计网站排名百度上广告怎么搞上去的
  • 做网站的多少钱2020年度关键词有哪些
  • 商业品牌网上海百度提升优化
  • iis装网站郑州seo排名优化公司
  • 高校门户网站开发seo变现培训
  • 无极领域0基础12天精通网站建设网络营销岗位技能
  • 网络营销广告案例深圳网站搜索优化
  • 网站建设的技能有哪些太原关键词优化服务
  • 清廉桂林网站郑州网站seo优化公司
  • 广东建设安全协会网站sem竞价专员是干什么的
  • 企业网站推广有哪些工具和方法?百度一下京东
  • 大连手机自适应网站建设报价搜索热门关键词
  • 与网站设计相关的软件主要有服务网站排名咨询
  • 网站续费服务商谷歌浏览器网页版在线
  • 淘宝做网站的seo搜索引擎优化总结报告
  • 做电影网站会有什么惩罚西安百度推广客服电话多少
  • 商城网站要多少钱广州seo网络推广员
  • 做优化网站是什么意思app拉新推广平台有哪些
  • 网站分析seo情况最近时事新闻热点事件
  • 专业网站制作公司是如何处理一个优秀网站的加快实施创新驱动发展战略
  • 怎样做网站软件北京seo网站优化培训
  • 综合网站推广的含义网站推广方法