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

自己做的网站什么时候可以赚钱网站开发及技术

自己做的网站什么时候可以赚钱,网站开发及技术,wordpress 翻页电子书,设计图纸用什么软件文章目录 1. 原理介绍2. 并查集的应用3. find()函数的定义与实现4. 并查集的join函数5. 路径压缩优化算法-优化find6. 路径压缩优化算法按秩合并算法 1. 原理介绍 并查集是一种用于维护集合关系的数据结构#xff0c;它支持合并集合和查询元素所在的集合。它的基本思想是将元… 文章目录 1. 原理介绍2. 并查集的应用3. find()函数的定义与实现4. 并查集的join函数5. 路径压缩优化算法-优化find6. 路径压缩优化算法按秩合并算法 1. 原理介绍 并查集是一种用于维护集合关系的数据结构它支持合并集合和查询元素所在的集合。它的基本思想是将元素分组每个组称为一个集合最终目的是实现高效地判断两个元素是否在同一集合中。并查集维护的是一棵树其中每个节点代表一个元素节点之间的边表示它们属于同一个集合。初始时每个元素都是一个独立的集合也就是一棵只有一个节点的树。合并两个集合时只需要将其中一个集合的根节点挂在另一个集合的根节点下面即可。查询元素所在的集合时只需要一直向上找到根节点即可。并查集的时间复杂度取决于路径压缩和按秩合并这两种优化策略。路径压缩是指在查询根节点的过程中将路径上的所有节点都直接挂在根节点下面以减少下次查询的时间。按秩合并是指在合并两个集合的时候将元素个数少的集合挂在元素个数多的集合下面以保持树的平衡性。 2. 并查集的应用 并查集常用于解决图论中的连通性问题例如判断无向图是否连通求图的最小生成树等。另外它还可以用于离散化处理等场景。 3. find()函数的定义与实现 前面在介绍原理的时候说到并查集的基本思想是将元素分组每个组称为一个集合最终目的是实现高效地判断两个元素是否在同一个集合中。而find函数的作用就是判断一个元素是否属于一个组而所谓的一组实际上就是一棵树。那么find函数是如何实现判断一个元素是否属于一个组的原理其实很简单其实每个组都会有个代表元这个代表元通常是更节点只要两个元素拥有共同的代表元它们就属于同一个组。下面我们基于代码分析一下find函数的原理 public int find(int x) {while (parent[x] ! x) {x parent[x];}return x; }在该实现中我们使用一个while循环来一直向上查找直到找到该元素所在组的根节点为止。在查找的过程中我们每次都将当前元素的父节点parent[x])作为下一个元素进行查找。当找到根节点时循环终止返回该节点即可。然而当并查集的规模比较大时这种实现的时间复杂度会很高为 O ( n ) O(n) O(n)其中 n n n是并查集中元素的总数。而优化后的实现可以将时间复杂度降低到 O ( α ( n ) ) O(\alpha(n)) O(α(n))其中 α \alpha α是阿克曼函数的反函数可以认为它是一个极小的值因此可以近似地看作是常数时间复杂度。因此路径压缩优化对于并查集的性能提升非常显著。 4. 并查集的join函数 并查集Union-Find Set中的 join() 函数用于将两个元素所在的组合并成一个大组它的实现原理很简单即将其中一个元素的根节点指向另一个元素的根节点即可。具体来说它的实现可以分为以下两个步骤 找到两个元素所在组的根节点。我们可以使用并查集中的 find() 函数来查找两个元素所在组的根节点。如果它们的根节点相同则说明它们已经在同一个组中不需要再合并了。 合并两个组。如果两个元素不在同一个组中则需要将它们所在的组合并成一个大组。具体来说我们可以将其中一个元素的根节点指向另一个元素的根节点从而将两个组合并成一个大组。 以下是并查集中 join() 函数的 Java 代码实现 public void join(int x, int y) {int rootX find(x);int rootY find(y);if (rootX ! rootY) {parent[rootX] rootY;} }其中parent 是一个数组用于存储每个元素所在组的根节点。初始时每个元素的父节点都是它自己即 parent[i] i。在 join() 函数中我们首先使用 find() 函数来找到 x 和 y 所在组的根节点。如果它们的根节点相同说明它们已经在同一个组中不需要再合并了。如果它们的根节点不同说明它们不在同一个组中需要将它们所在的组合并成一个大组。为了实现这一点我们将其中一个元素的根节点指向另一个元素的根节点即可这里我们选择将 x 所在组的根节点 rootX 指向 y 所在组的根节点 rootY。具体来说我们可以将 parent[rootX] 的值赋为 rootY从而将 x 所在组的所有元素的根节点都指向 y 所在组的根节点 rootY从而将两个组合并成一个大组。需要注意的是这里的 join() 函数只是简单地将其中一个元素的根节点指向另一个元素的根节点并不考虑各组的大小和深度等因素因此可能会导致并查集出现深度不平衡的情况。针对这个问题可以使用一些其他的优化策略例如按秩合并和路径压缩等以提高并查集的性能和稳定性。 5. 路径压缩优化算法-优化find 前面我们说到原始的find函数的查找根节点的时间复杂度较高这里我们考虑将其进行优化。路径压缩是并查集中一种常用的优化技术它通过修改树的结构来减少后续查找所需经过的节点数量从而提高并查集的性能。在并查集中每个元素都有一个父节点用于表示它所在的组的根节点。当我们查找一个元素所在的组时实际上就是在不断向上查找该元素的父节点直到找到根节点为止。路径压缩就是在这个查找的过程中将沿途经过的所有节点的父节点直接指向根节点从而降低后续查找所需经过的节点数量。 具体来说路径压缩的原理可以分为两个步骤 查找根节点我们首先使用递归调用的方式不断查找当前元素的父节点直到找到根节点为止。在查找过程中如果当前元素的父节点不是根节点那么我们就将其父节点设置为下一次查找的元素。 路径压缩当我们找到根节点后就会得到整个树的结构。此时为了减少后续查找所需经过的节点数量我们可以将沿途经过的所有节点的父节点都直接指向根节点。这个过程可以在递归调用的返回过程中完成具体来说就是在返回前将当前元素的父节点设置为根节点即可。 以下是基于路径压缩优化的并查集中find()函数的Java实现 public int find(int x) {if (parent[x] ! x) {parent[x] find(parent[x]); // 路径压缩}return parent[x]; } 6. 路径压缩优化算法按秩合并算法 路径压缩算法还可以与按秩合并算法结合起来以进一步提高并查集的性能和稳定性。具体来说可以在每个节点上增加一个权值表示该节点所在组的大小或深度等信息从而实现按秩合并算法的功能。在进行路径压缩的同时还可以更新节点的权值信息从而保证并查集的平衡性和稳定性。在路径压缩算法中为了避免对并查集中所有节点都进行路径压缩操作可能会出现一些节点的父节点指向了自己的情况。为了避免这种情况可以在进行路径压缩时同时对节点进行加权标记表示该节点已经进行了路径压缩操作。具体来说可以在 find() 函数中增加一个参数 compress表示是否进行路径压缩同时在每个节点上增加一个标记 compressed表示该节点是否已经进行了路径压缩。修改后的 find() 函数实现如下 public int find(int x, boolean compress) {if (parent[x] ! x) {if (compress !compressed[x]) {// 路径压缩并更新节点的权值信息parent[x] find(parent[x], compress);size[x] size[parent[x]];compressed[x] true;} else {// 递归查找根节点parent[x] find(parent[x], compress);}}return parent[x]; }
http://www.w-s-a.com/news/545073/

相关文章:

  • 网站使用说明书网站建设公司的介绍
  • 推广型网站免费建设网站防盗链设置
  • 建设银行网站查开户行网站反链暴增怎么回事
  • centos7做网站软件实施工程师工资一般多少
  • 专业房产网站建设深圳建设交易集团
  • 政务网站建设标准项目经理接到网站开发怎么开展
  • 网站框架设计好后怎么做网站广告销售怎们做
  • asp技校网站保定八大平台公司
  • wordpress网站前端优化网站备案批量查询
  • 北京企业做网站杭州seo中心
  • 护肤品网站建设前的行业分析wordpress电子书模板
  • 做网站怎么销售.net开发网站怎么样
  • 蚌埠网站优化网站换空间wordpress
  • 微网站开发框架公司企业logo
  • 大淘客官网做的网站打不开网站建设完成
  • 婚纱摄影网站模板让别人做网站怎样才安全
  • 技术支持 骏域网站建设专家佛山网站运营管理教材
  • 个体营业执照可以做网站服务吗电商运营学校培训
  • 企业网站免费推广的方法.wordpress 爱情模板下载地址
  • 轻淘客 轻网站怎么做手机开发人员选项怎么打开
  • 天津做网站制作公司html网站 下载
  • 哪个网站的课件做的好crm客户管理系统全称
  • 网站建设工作室创业计划书seo是什么职位的简称
  • o2o平台网站开发什么是白帽seo
  • 免费建个人手机网站WordPress 简历库
  • 建网站 是否 数据库阳瘘的最佳治疗方法是什么
  • 知晓程序网站怎么做网站基础维护
  • 兼职做网站赚钱吗图片设计制作哪个软件好手机
  • 做手机旅游网站智慧校园登录入口
  • 莆田网站建设维护国外极简网站