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

原创 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过程是一个两趟方法,递归时,第一趟沿着查找路径向上找到根,递归回溯时,第二趟沿着搜索树向下更新节点,使其直接指向根

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

相关文章推荐

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

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

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

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

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

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

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

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

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

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

不相交集合的数据结构

不相交集合的数据结构本来想着来实现基于贪婪思想的Kruskal算法—–最小生成树的算法之一。 却发现当我们合并集合时里面还涉及到一个判断“环”的问题,继而有了本篇博文:不相交集合的数据结构。

数据结构之不相交集类

不相交集类是解决等价关系问题的一种非常有效的手段!等价关系是一种关系R,他满足自反性,对称性与传递性。有人说散列是最艺术的数据结构,优先队列是最优雅的数据结构 而不相交集类就是最简洁的数据结构!这些说...

用不相交集数据结构生成迷宫

之前提到的不相交集数据结构(:http://blog.csdn.net/zhutulang/article/details/7791804。)的一个应用的例子是迷宫的生成。如下图所示就是一个50*50...

数据结构与算法——不相交集类的C++实现

简介: 不相交集类是将一些元素合并为不相交的各个集合。在同一个集合中的元素两两等价,不同集合中的元素不等价。 1.等价关系 等价关系必须满足下面三个性质: (1):自反性,对于集合S中...

利用不相交集类制作迷宫游戏(数据结构课程设计——迷宫老鼠)

之前大一的时候有几天闲来无事,为了学习做了一个可以自动生成迷宫,可以寻找最短路径的小游戏,现在整理分享一下简单介绍:利用不相交集类考虑一个迷宫的生成,一个简单算法就是从各处的墙壁开始(除入口和出口之外...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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