- 1、本文档共176页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
集合及其表示等价类和并查集静态有哪些信誉好的足球投注网站表二叉有哪些信誉好的足球投注网站树最优二叉
集合及其表示 等价类与并查集 静态有哪些信誉好的足球投注网站表 二叉有哪些信誉好的足球投注网站树 最优二叉有哪些信誉好的足球投注网站树 AVL树 小结 集合及其表示 集合是成员(对象或元素)的一个群集。集合中的成员可以是原子(单元素),也可以是集合。 集合的成员必须互不相同。 在算法与数据结构中所遇到的集合,其单元素通常是整数、字符、字符串或指针,且同一集合中所有成员具有相同的数据类型。 colour = { red, orange, yellow, green, black, blue, purple, white } name = { “An”, “Cao”, “Liu”, “Ma”, “Peng”, “Wang”, “zhang” } 集合中的成员一般是无序的,没有先后次序关系。但在表示它时,常常写在一个序列里。 我们常设定集合中的单元素具有线性有序关系,此关系可记作“”,表示“优先于”。 若a, b是集合中的两个单元素,则ab, a==b, ab三者必居其一; 若a, b, c是集合中的三个单元素,且ab, bc,则ac。(传递性) 整数、字符和字符串都有一个自然的线性顺序。而指针也可以依据其在序列中安排的位置给予一个线性顺序。 集合操作有求集合的并、交、差、判存在等。 用有序链表来表示集合时,链表中的每个结点表示集合的一个成员。 各结点所表示的成员 e0, e1, …, en 在链表中按升序排列,即 e0 e1 … en。 在一个有序链表中寻找一个集合成员时,一般不用有哪些信誉好的足球投注网站整个链表,有哪些信誉好的足球投注网站效率可以提高很多。 集合成员可以无限增加。因此,用有序链表可以表示无穷全集合的子集。 等价类与并查集 在求解实际应用问题时常会遇到等价类问题。 从数学上看,等价类是一个对象(或成员)的集合,在此集合中所有对象应满足等价关系。 若用符号“?”表示集合上的等价关系,那么对于该集合中的任意对象x, y, z,下列性质成立: 自反性:x ? x (即等于自身)。 对称性:若 x ? y, 则 y ? x。 传递性:若 x ? y且 y ? z, 则 x ? z。 因此,等价关系是集合上的一个自反、对称、传递的关系。 “相等”(=)就是一种等价关系,它满足上述的三个特性。 一个集合 S 中的所有对象可以通过等价关系划分为若干个互不相交的子集 S1, S2, S3, …,它们的并就是 S。这些子集即为等价类。 算法的输出从编号 i = 0 的对象开始,对所有的对象进行检测。 在 i = 0 时,循第0个单链表先找出形式为( 0, j )的等价对,把 0 和 j 作为同一个等价类输出。再根据等价关系的传递性,找所有形式为( j, k )的等价对,把 k 也纳入包含 0 的等价类中输出。如此继续,直到包含 0 的等价类完全输出为止。 接下来再找一个未被标记的编号,如 i = 1,该对象将属于一个新的等价类,我们再用上述方法划分、标记和输出这个等价类。 在算法中使用了一个栈。每次输出一个对象编号时,都要把这个编号进栈,记下以后还要检测输出的等价对象的单链表。 并查集 (Union-Find Sets) 建立等价类的另一种解决方案是先把每一个对象看作是一个单元素集合,然后按一定顺序将属于同一等价类的元素所在的集合合并。 在此过程中将反复地使用一个有哪些信誉好的足球投注网站运算,确定一个元素在哪一个集合中。 能够完成这种功能的集合就是并查集。它支持以下三种操作:? Union (Root1, Root2) //并操作;? Find (x) //有哪些信誉好的足球投注网站操作; ? UFSets (s) //构造函数。 一般情形,并查集主要涉及两种数据类型:集合名类型和集合元素的类型。 利用并查集来解决等价问题的步骤如下: 利用UFSets操作, 建立UFSets型集合this, 集合中每一个元素初始化为0,各自形成一个单元素子集合, i =1, 2, …, n。n是集合中元素个数。 重复以下步骤, 直到所有等价对读入并处理完为止。 读入一个等价对[i][j]; 用Find(i), Find(j)有哪些信誉好的足球投注网站 i、j 所属子集合的名 字x和y; 若x ? y. 用 Union(x,y) 或 Union(y,x) 将它们合并, 前者的根在 x;后者的根在 y。 为简化讨论,忽略实际的集合名,仅用表示集合的树的根来标识集合。 如果我们确定了元素 i 在根为 j 的树中,而且 j 有一个指向集合名字表中第 k 项的指针,则集合名即为 name[k]。 为此,采用树的双亲表示作为集合存储表示。集合元素的编号从0到 n-1。其中 n 是最大元素个数。在双亲表示中,第 i 个数组元素代表包含集合元素 i 的树结点。根结点的双亲为-1,表示集合中的元素个数。为了区别双亲指针信息( ? 0 ),集合元素个数信息用负数表示。 Find和Union操作性能不好。
文档评论(0)