course 算法之并查集

并查集解决什么问题?

解决动态连通性问题的算法

快速查找算法和快速合并算法,以及这些算法的实验和改进

开发算法的有效流程:

  1. 建立问题模型,数学模型,高清问题的实质,实践检验模型
  2. 找出解决该问题大体上所需的基本操作,
  3. 据此找出算法解决该问题,
  4. 有可能算法足够快,符合存储空间的要求,也有可能算法不够快,存储空间不足,提出心酸放,一直循环,直到满意为止

问题阐述:

有一组共N个对象,用0到N 的数字来标记他们,两个对象间可以连通,假设有一组命令可以连通两个对象,将两个对象用命令链接,问题是连通性查询,查询两个对象之间是否已有联通的路径存在,

合并命令与联通查询的交叉混合,已知一些对象两两的连通,求俩对象是否连通

问题解决环境

用计算机去解决这个问题,人类需要花一些时间来思考问题,

并查集在生活中的具体实例

扫描二维码关注公众号,回复: 7285755 查看本文章

这些算法用在图像上,应用对象就是像素,用在网络上,对象就是计算机,社交网络上,应用对象就是

人,用在计算机芯片上,应用对象就是电路元件,对象可以是抽象的,程序的变量名,数学集合中的元素,也可以是物理对象如符合体系中的金属位,用0到N为之编号存在数组中,

连接的特征:

连接到是对称的,连接到是传递性的,

连通分量性质:

连通分量中任意两个对象都是相连接的,就是不与外边的连接,一条子链

我们要维护连通分量就是查找两个对象是否在相同的分量中,合并命令就是,将包括量个对象的分量替换为其并集,

在Java中

Java中就是创造一个UF的类,一个用来实现合并,另一个用来实现连接查找,返回一个bool,构造器需要对象的数量作为参数,以此建立数据结构.对象的数量和操作的数量都有可能是巨大的,可能会有非常大的合并与连接查询,算法在此环境下必须是高效的,

我们检查我们应用应用编程接口API设计,设计一个使我们开发的数据类型的客户端来检查API,测试客户端

课程地址

        https://www.coursera.org/learn/algorithms-part1/lecture/fjxHC/dynamic-connectivity

猜你喜欢

转载自www.cnblogs.com/zhangyulove/p/11521514.html