什么是Union Find(并查集)?
并查集是一种属性数据结构 用于处理一些不交集disjoint sets的合并以及查询问题。
但是光这么说也太他妈抽象了。
不如看两个应用场景:
- 网络连接判断:
如果每个pair中的两个整数分别代表一个网络节点,那么该pair就是用来表示这两个节点是需要连通的。那么为所有的pairs建立了动态连通图后,就能够尽可能少的减少布线的需要,因为已经连通的两个节点会被直接忽略掉。 - 变量名等同性(类似于指针的概念):
在程序中,可以声明多个引用来指向同一对象,这个时候就可以通过为程序中声明的引用和实际对象建立动态连通图来判断哪些引用实际上是指向同一对象。
这两个应用场景 说实话 也抽象的一批。
那么不妨这样想:给你一堆元素 这些元素之间可能链接可能没链接,那么随便给你一对节点,让你判断这两个节点是否互相链接?(属于同一个集合)
通俗一点讲:
我们并不关心所有的输入哪个和哪个是相连的 每个之间是否直接相连什么的
我们所关心的是 针对所输入的一大堆边 我们要快速讲这些节点划分到不同的图里面(union部分) 然后如果以后我们需要判断某两个节点时候属于同一个图 我们可以用find()函数实现。至于每个图内部是如何相连的 我一点都不关心。

浙公网安备 33010602011771号