算法1之并查集

本文介绍了并查集这一算法,包括其基本思想、路径压缩优化、问题描述以及主要操作。并查集常用于判断元素间关系,如亲戚关系判断。文章通过一个畅通工程的例子,展示了如何使用并查集解决最少数目道路建设问题,给出输入输出样例,并提供了相关学习资源链接。
摘要由CSDN通过智能技术生成

算法1之并查集

并查集:即包含 合并集合查找集合中的元素 两种操作的树型数据结构, 三个字已经涵盖了其功能。常常在使用中以森林来表示。

一、并查集思想
1.1 算法思想

如果将集合中的元素当成是树上的不同的节点,那么,判断两个元素是否属于同一个集合的问题,就变成了他们所在树的根是否为同一根的问题。

1.2 路径压缩

同一棵树存在不同的枝干,枝干上有不同层次的叶节点(即我们所说的元素)。为了查快查找某个叶子节点的根节点的速度,查找时将元素 x 到根节点 root 上的所有叶子节点的 Parent(父节点)设为根节点。称该优化的方法为路径压缩

经过路径压缩优化后,平均复杂度可视为 Ackerman 函数的反函数,实际应用中可粗略认为其是一个常数。

1.3 问题描述

以亲戚为例,或许你不会知道,某个朋友是你的亲戚,他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。

通过家族图谱,可以很轻松判断两个人是否为亲戚。但当两个人的最近公共祖先与他们相隔好几代,使得家族十分庞大,那么检验两人的亲戚关系就会变得很困难。通过写程序推出 Marry 和 Ben 是否为亲戚。

说明: 这是一个非常经典的并查集例子。用集合的思路,对每个人建立一个集合,开始的时候集合元素就是这个人本身,表示开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值