用于不相交集合的数据结构

原创 2017年01月03日 09:51:56

不相交集合的操作

MAKE-SET(x):建立一个集合,它的唯一成员(因而为代表)是x。因为各个集合是不相交的,所以x不会出现在别的某个集合中
UNION(x,y):将包含x和y的两个集合合并。假定操作之前着两个集合是不相交的。
FIND-SET(x):返回一个指针,这个指针指向包含x的(唯一)集合的代表。

不相交集合的链表表示

屏幕快照 2017-01-03 09.50.58

不相交森林集合

  1. 按秩合并:秩表示该节点高度的一个上界,总是秩小的树接到秩大的树
  2. 路径压缩:屏幕快照 2017-01-01 22.00.24

秩:x.rank,代表x的高度

MAKE-SET(x)
    x.p = x
    x.rank = 0
//按秩合并   
UNION(x,y)
    LINK(FIND-SET(x),FIND-SET(y))    
LINK(x,y)
    if x.rank > y.rank
        y.p = x
    else
        x.p = y
        if x.rank == y.rank
            y.rank = y.rank + 1
//带有路径压缩的FIND-SET 
FIND-SET(x)
    if x != x.p
        x.p = FIND-SET(x.p)
    return x.p

FIND-SET过程是一个两趟方法,递归时,第一趟沿着查找路径向上找到根,递归回溯时,第二趟沿着搜索树向下更新节点,使其直接指向根

版权声明:本文为博主原创文章,未经博主允许不得转载。

[算法导论读书笔记]用于不相交集合的数据结构(并查集)

不相交集合数据结构的概念和操作:     不相交集合数据结构(disjoing-set data structure)保持一组不相交的动态集合S={S1,S2,S3,……Sk}。每个集合通过一个代表...
  • lalor
  • lalor
  • 2012年03月23日 21:11
  • 3670

算法导论(五)——高级数据结构

B 树是一种被设计成专门存储在磁盘上的平衡查找树。因为磁盘的速度远远慢于内存,所以 B树被设计成尽量减少磁盘访问的次数(引入多叉,降低树的高度),知道了这一点之后就会很清楚明白 B 树的变形 B+树...

并查集——用于不相交集合的数据结构

并查集 并查集保持一组不相交的动态集合S={S1, S2, ..., SK}.每个集合通过一个代表来表示,代表即集合中的某个成员。 并查集的精髓(即它的三种操作): 集合中的每一个元素是由一个对象表示...

算法导论21(用于不相交集合的数据结构)

21.1不相交集合的操作 不相交集合数据结构()
  • hz5034
  • hz5034
  • 2014年10月31日 20:47
  • 277

算法导论学习笔记(15)——用于不相交集合的数据结构

用于不相交集合的数据结构 总结:这一章讲了并查集的相关概念,以及主要的MAKE-SET, UNION, FIND-SET操作,并给出了并查集的链表表示和森林表示方式。 1.    不相交集...

算法导论 第21章 用于不相交集合的数据结构

一、综述 不相交集合数据结构(disjoint-set data struct)保持一组不相交的动态集合S={S1,S2,……,Sk} 这种数组结构支持三种操作: (1)MAKE-SET(x):...

算法导论 第21章 用于不相交集合的数据结构

不相交集合的定义和操作     不相交集合的数据结构保持一组动态集合,每个集合通常有一个代表(也是该集合的成员),用以标识该集合。显然,由于这组动态集合是不相交的,那么集合代表(标识)自然也是独一无二...

用于不相交集合的数据结构(并查集)

不相交集合数据结构的概念和操作:     不相交集合数据结构(disjoing-set data structure)保持一组不相交的动态集合S={S1,S2,S3,……Sk}。每个集合通过一个...

算法导论代码 第21章 用于不相交集合的数据结构

第21章 用于不相交集合的数据结构 21.2 不相交集体的链表表示 #include #include #include typedef struct set_type *set; stru...

不相交集合的数据结构

不相交集合的数据结构本来想着来实现基于贪婪思想的Kruskal算法—–最小生成树的算法之一。 却发现当我们合并集合时里面还涉及到一个判断“环”的问题,继而有了本篇博文:不相交集合的数据结构。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用于不相交集合的数据结构
举报原因:
原因补充:

(最多只允许输入30个字)