IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 第21章-用于不相交集合的数据结构 21.1 不相交集合的操作 21.2 不相交集合的链表表示 -> 正文阅读

[数据结构与算法]第21章-用于不相交集合的数据结构 21.1 不相交集合的操作 21.2 不相交集合的链表表示

一、不相交集合的操作

一个不相交集合数据结构(disjoint-set data structure)维护了一个不相交动态集的集合S={S1, S2,…,Sk}。我们用一个代表(representative)来标识每个集合, 它是这个集合的某个成
员。
这个数据结构支持一下三个操作:
MAKE-SET(x):建立一个新的集合,代表为x,因为不相交集合,因此别的集合中没有x。
UNION(x,y):将包含x和y两个动态集合合并成一个新的集合,代表可以是其中任何一个元素,同时我们要将两个合并前的集合删除,避免相交;实际上,我们一般会将另一个集合中的元素并到这个集合中。
FIND-SET(x):返回一个指针,这个指针包含x(唯一)集合的代表。

1、一个应用

在这里插入图片描述

CONNEXTED-COMPONENTS
//将v放到自己的集合中
for each vextex v ∈ G.V
	MAKE-SET(v)
//对包含u和v的集合进行合并
for each edge(u,v) ∈ G.E
	if FIND-SET(u) != FIND-SET(v)
		UNION(u,v)
SAME-COMPONENT(u,v)
//u和v边是否在同一个集合中
if FIND-SET(u) == FIND-SET(v)
	return TRUE
else return FALSE

2、不相交集合的链表表示

每个集合用一个自己的链表来表示。每个集合的对象包含head属性和tail属性,head属性指向表的第一个对象,tail属性指向表的最后一个对象。链表中的每个对象都包含一个集合成员、一个指向链表中下一个对象的指针和一个指回到集合对象的指针。在每个链表中,对象可以以任意的次序出现。代表是链表中第一个对象的集合成员。
MAKE-SET(x):只需要创建一个只有x对象的新的链表。
FIND-SET(x):沿着x对象的返回指针返回到集合对象,然后返回head指向对象的成员。
在这里插入图片描述

1、合并的一个简单实现

上图将y所在的链表合并到了x所在的链表。我们通过x.tail迅速找到拼接y所在的链表的位置,这时候要删除y所在链表中所有的对象,因此,必须更新指向集合对象的指针,比如上图中bceh对象的指针都被更新。

2、一种加权合并的启发式策略

可以假设每个表中还包含了表的长度,以及拼接次序可以任意的话,我们总是将较短的表拼接到较长的表中。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:19:25  更:2022-09-24 21:20:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 13:42:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码