并查集(Data Structure for Disjoint Sets)

Posted GoldenaArcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并查集(Data Structure for Disjoint Sets)相关的知识,希望对你有一定的参考价值。

并查集(Data Structure for Disjoint Sets)

为算法导论 v4 的 p520-545,p520-531 为算法内容本身,p531-541 为论证,p541-544 是题目,p544-545 则是章节笔记。

Disjoint Sets 的曾用名为 Union Find,二者指的都是一个东西。

这篇笔记主要是 p530-531 部分内容。

算法方面,Disjoint Sets 主要应用是 Minimum Spanning Tree 中的 Kruskal 算法,当然,其应用范围也就包括各种动态连接的问题。直接的应用不算多,但是使用 Disjoint Sets 为核心的拓展不少。

并查集操作

并查集的定义:

  • 一个并查集维护一个由 S = S 1 , S 2 , . . . , S n S=\\S_1, S_2, ..., S_n\\ S=S1,S2,...,Sn 集合组成的,动态不相连集

  • 每一组集合中选出一个代表用以标识

    在一些应用案例中,挑选代表需要花费一些额外的功夫,比如说挑选最大最小值等

每一个元素(set) 都用一个对象 x x x 来表示,并查集中主要有下面三个操作:

  • Make-Set( x x x)

    Make-Set 中的 x x x 不能存在于其他任何集合中

  • Union( x x x, y y y)

    集合两个不相关的,包括 x x x y y y 的集合。

    理论上来说,集合 S x S_x Sx S y S_y Sy 应该会移除两个集合并创建一个新的 S x ⋃ S y S_x \\bigcup S_y SxSy,不过实际操作来说,基本会将一个集合并入到另一个集合中。

  • Find-Set( x x x)

    返回包含 x x x 元素集合的代表指针。

书中提供了一个集合图的伪代码:

基本上这个就是并查集的基本逻辑。

上面的伪代码是以并查一个图为例,并查集最初表现为: a , b , c , d , e , f , g , h , i , j \\a\\, \\b\\, \\c\\, \\d\\, \\e\\, \\f\\, \\g\\, \\h\\, \\i\\, \\j\\ a,b,c,d,e,f,g,h,i,j 10 个结点,边包括 ( b , d ) , ( e , f ) , ( a , c ) , ( h , i ) , ( a , b ) , ( f , g ) , ( b , c ) (b,d), (e,f), (a,c), (h,i), (a,b), (f,g), (b,c) (b,d),(e,f),(a,c),(h,i),(a,b),(f,g),(b,c)

a b c d e f g h i j

第一步先连接 ( b , d ) (b,d) (b,d)

a b d c e f g h i j

此时的并查集为: a , b , d , c , e , f , g , h , i , j \\a\\, \\b, d\\, \\c\\, \\e\\, \\f\\, \\g\\, \\h\\, \\i\\, \\j\\ a,b,d,c,e,f,g,h,i,j。集 b , d \\b, d\\ b,d 中的代表应一致,这样 Find-Set(b)Find-Set(d) 就会返回同样的结果。

第二步连接 ( e , f ) (e,f) (e,f)

a b d c e f g h i j

此时的并查集为: a , b , d , c , e , f , g , h , i , j \\a\\, \\b, d\\, \\c\\, \\e, f\\, \\g\\, \\h\\, \\i\\, \\j\\ a,b,d,c,e,f,g,h,i,j。同理集 e , f \\e, f\\ e,f 中的代表也应一致。

第二步连接 ( a , c ) (a,c) (a,c)

a c b d e f g h i j

此时的并查集为: a , c

以上是关于并查集(Data Structure for Disjoint Sets)的主要内容,如果未能解决你的问题,请参考以下文章

数据结构高阶第十一篇——并查集(原理+实现+应用)

数据结构高阶第十一篇——并查集(原理+实现+应用)

并查集操作

并查集操作

并查集的一般操作 ④

poj1456 贪心+并查集