图---互斥集

互斥集主要用于Kruskal算法中,用于求图的最小生成树。

 

互斥集主要有3个基本操作:

 

1. 初始化各个集合

Make(a)p[a] ← a

 


 

2. 查找各个集合的老祖宗

Find(a)if a == p[a] : return aelse         : return Find(p[a])

 


 

3.  合并两个集合

Union(a, b)p[Find(b)] ← Find(a)

 

 

上面是第一个版本,相对比较简单;但是,这个版本在某些情况下存在效率低下的问题,例如在查找老祖宗的时候形成直线的连接。

解决这个问题有两种方法:

1. 在find的过程中,将中间查找到的节点全部挂到最终查找到的祖宗节点下去。

2. 在union的时候每次总是将层次小的集合挂到层次大的集合下去。

rank[x]: level of set:xMake(x)p[x] ← xrank[x] ← 0

 


 

Find(x)IF x ≠ p[x] p[x] ← Find_Set(p[x])RETURN p[x]

 


 

Union(x, y)Link( Find_Set(x), Find_Set(y) )

 


 

Link(x, y)IF rank[x] > rank[y]p[y] ← x        ELSE p[x] ← yIF rank[x] == rank[y]rank[y]++

 


 

 

转载于:https://www.cnblogs.com/xfei-zhang/p/5086883.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle配置监听要注意的地方

昨天心血来潮,把Oracle的监听都删了,准备重新配一遍,结果弄了一天才配好,不过对Oracle的了解更深了一些。 对昨天的问题做一个总结: 1、直接在NetManager中删掉监听时,实际的监听服务好像并没有完全删除&am…

signature=486e34400687432217e65e837b8e6753,PXE常见错误代码表

在我们日常做无盘时,通常都会遇到一些这样或那样的问题,不过好在一般这些错误都会有些错误代码,我们可以通过错误代码查询到一些有帮助的信息。下面是我转载的一些PXE驱动错误代码表,遇到PXE错误时,可查询下看看&#…

12月25号 Category类别

Category类别 1.在已有类的基础上进行扩展,无需像继承一样子类化,就可以直接添加一些方法 2.继承不仅可以添加方法还可以添加属性,类别只能添加方法 3.类别不会改变现有类的方法,万一重写,自己写的优先级高 4.把类别中…

17---Net基础加强

更新中,敬请期待。。。。。。。。。。。。 复习 将xml显示到treeview 修改增加 删除 foreach原理 深拷贝与浅拷贝 模拟数据库及登陆 复习总结转载于:https://www.cnblogs.com/yechangzhong-826217795/p/4157562.html

Linux系统rootpassword改动

重新启动系统。 进入系统引导界面: 按下e键: 选择第二项。内核启动參数设置,按下e键: 在结尾处,输入数字 1或者 英文 " single",再回车: 按下b键启动。此时以单用户模式级别引导启动程…

关于OC-省市区习题

对于省市区的问题,关键在于搞清楚数组嵌套字典,字典里面装数组的多重嵌套关系,沉下心来,捋清楚思路, 实在看不懂就多打几遍,这道题理解了,熟练了对之后学习很有好处。 代码如下: NSS…

23种设计模式----------代理模式(一)

代理模式也叫委托模式。 代理模式定义:对其他对象提供一种代理从而控制对这个对象的访问。就是,代理类 代理 被代理类,来执行被代理类里的方法。 一般情况下,代理模式化有三个角色。 1,抽象的主题类(或者接口) IGamePl…

(转) Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

http://blog.csdn.net/u010648555/article/details/60767633 当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的坏习惯。 通过前面的学习,你可能大致了解了Quartz,本篇博文为你打…

被流氓360设置浏览器主页的解决办法(如果你也遇到了跟我一样的问题,不妨看一下是不是这个原因)...

最近电脑罢工,重装了系统;很多常用软件都不得不重新安装,其实这都不是事儿,现在基本上都是百兆光纤了,下载安装都很顺溜。 浏览器也在安装之列,因为搞开发所以谷歌火狐浏览器都是必装的;平时基本…

BZOJ1834 [ZJOI2010]network 网络扩容

网络流训练好题。。。但是要给差评!蒟蒻表示这就是板子题,然后做了半个小时T T 先跑一边最大流,得到第一问答案ans。 第二问:原先的边不动,费用为0。 然后对每条边在上面再加一条边,流量为inf,费…

android 更新平台,Android更新平台架构方案

这篇文章是去年写的,我们的两款app一直这使用umeng的更新服务,但是16年umeng开始放弃更新服务,考虑到切换到其他更新平台也会面临这样的问题,我开始着手自己搭建一个更新平台。整体方案包含前后端,客户端代码封装成jar…

setSignVisible的修改

store传入accountReducer 1.从cookie中获取id,avatar,nickname.2.createStore(reducer, initState)传入reducer,可以在页面中state.accountReducer.current_account获取 const middleware routerMiddleware(browserHistory); let initState {};if(Cookie.hasItem("id&qu…

DGbroker故障切换示例

1.主库故障 SQL> startup ORACLE instance started.Total System Global Area 1068937216 bytes Fixed Size 2260088 bytes Variable Size 910164872 bytes Database Buffers 150994944 bytes Redo Buffers 5517312 bytes ORA-00205: e…

html 自动触发 事件,js自动触发事件自定义事件

在有些情况下,我们需要程序逻辑自动触发元素的事件,例如js提供了click(), form提供了reset(),submit()等方法!在jquery中提供了trigger()方法帮助我们自动触发事件,原理是什么呢?接下来让我们一探究竟&…

Storm编程入门API系列之Storm的可靠性的ACK消息确认机制

概念,见博客 Storm概念学习系列之storm的可靠性 什么业务场景需要storm可靠性的ACK确认机制? 答:想要保住数据不丢,或者保住数据总是被处理。即若没被处理的,得让我们知道。 public void nextTuple() {num;System.out.…

关于 php mysql pdo cannot find driver 解决方案

1、下载 文件 或者 进入 在PHP源码包中进入ext/pdo_mysql http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 2、解压文件tar zxvf PDO_MYSQL-1.0.2.tgz 3、配置和编译文件cd PDO_MYSQL-1.0.2/usr/local/php/bin/phpize./configure –with-php-config/usr/local/php/bin/php-config…

iOS网络编程开发-数据加密

iOS网络编程开发-数据加密 一、简单说明 1.说明 在开发应用的时候,数据的安全性至关重要,而仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题。 如:可以利用软件(比如Charles)设置代理服务器&am…

Codeforces 821C - Okabe and Boxes

821C - Okabe and Boxes 思路&#xff1a;模拟。因为只需要比较栈顶和当前要删除的值就可以了&#xff0c;所以如果栈顶和当前要删除的值不同时&#xff0c;栈就可以清空了(因为下一次的栈顶不可能出现在前面那些值中)。 代码&#xff1a; #include<bits/stdc.h> using n…

Java中forEach, 用来遍历数组

这里的for是Java中forEach, 用来遍历数组的。for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中。和for(int i0;i<d.length();i)是一样的&#xff0c;但是forEach的可用场合较多。public class e1 {public static void main(String[] …

HDU -2546饭卡(01背包+贪心)

这道题有个小小的坎&#xff0c;就是低于5块不能选&#xff0c;大于5块&#xff0c;可以任意选&#xff0c;所以就在初始条件判断一下剩余钱数&#xff0c;然后如果大于5的话&#xff0c;这时候就要用到贪心的思想&#xff0c;只要大于等于5&#xff0c;先找最大的那个&#xf…