数据结构 课件3 数据描述.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3.8.2 Radix Sort 通过前面两个基数排序的例子,我们知道需要按给定的基数对数进行分解。在这里可以采用除法和取模运算来完成这种分解。 采用基数10来进行分解,那么可以按照如下表达式来得到每位数字:x%10; (x%100)/10; (x%1000)/100; ... (从最低位到最高位) 对于一般的基数r,相应的分解式为:x%r; (x%r2)/r; (x%r3)/r2;... 当使用基数r=n,对n个介于0~nc-1范围内的整数进行分解时,每个数将可以分解出c个数字。因此,可以采用c次箱子排序,每次排序时取range=n。整个排序所需要的时间为Θ(cn)=Θ (n)(因为c是一个常量)。 * * 3.8.3 Equivalence Classes 1.定义和动机 假定有一个具有n个元素的集合U={1,2,...,n},另有一个具有r个关系的集合R={(i1,j1),(i2,j2),...,(ir,jr)}。关系R是一个等价关系(equivalence relation),当且仅当如下条件为真时成立: 对于所有的a,有(a,a)∈R时(即关系是反身的)。 当且仅当(b,a) ∈ R时(a,b) ∈ R(即关系是对称的)。 若(a,b) ∈ R且(b,c) ∈ R,则有(a,c) ∈ R(即关系是传递的)。 在给出等价关系R时,我们通常会忽略其中的某些关系,这些关系可以利用等价关系的反身、对称和传递属性来获得。 * * 3.8.3 Equivalence Classes 例3-3:假定n=14,R={(1,11),(7,11),(2,12),(12,8),(11,12),(3,13),(4,13),(13,14),(14,9),(5,14),(6,10)}。 我们忽略了所有形如(a,a)的关系,因为按照反身属性,这些关系是隐含的。 同样也忽略了所有的对称关系。比如(1,11) ∈ R,按对称属性应有(11,1) ∈ R。 其他被忽略的关系是由传递属性可以得到的属性。例如根据(7,11)和(11,12),应有(7,12) ∈ R。 如果(a,b) ∈ R,则元素a和b是等价的。等价类(equivalence class)是指相互等价的元素的最大集合。 “最大”意味着不存在类以外的元素,与类内部的元素等价。 * * 3.8.3 Equivalence Classes 例3-4:找出前面例子的等价类。 等价类:{1,2,7,8,11,12}、 {3,4,5,9,13,14}和{6,10}。 所谓离线等价类(offline equiralence class)问题,是在已知n和R,来确定所有的等价类。注意每个元素只能属于某一个等价类。这个问题我们将在栈的应用中详细讨论。 所谓在线等价类(online equivalence class)问题,是对n个元素,每个元素都属于一个独立的等价类,讨论对等价类的操作。如Combine(a,b)把包含a和b的等价类合并成一个等价类。Find(e)确定哪个类包含元素e,搜索的目的是为了确定给定的两个元素是否在同一个类之中。 其中,对于同一类中的元素,Find将返回相同的结果,而对不同类的元素,则返回不同的结果。 R={(1,11),(7,11),(2,12),(12,8),(11,12),(3,13),(4,13),(13,14),(14,9),(5,14),(6,10)}。 * * 3.8.3 Equivalence Classes 可以利用两个Find操作和一个Union操作产生一个组合操作,该操作能把两个不同的类合并成一个类。 i=Find(a); j=Find(b); if(i!=j) Union(i,j); 上述操作等价于Combine(a,b)。同时我们应该注意到,利用Find和Union操作,可以向R中添加新关系。例如,为了添加关系(a,b),可以首先判断a和b是否已经位于同一个等价类,如果是,则新关系是冗余的,如果不是,则对包含a和b的两个类执行Union操作。 本节主要关心在线等价类问题,这类问题通常又称之为union-find问题。下面给出的解决方案很简单,但是效率不是最高的。我们将在二叉树的应用中给出了一个更快的解决方案。 * * 3.8.3 Equivalence Classes 例3-6[布线]一个电路由构件、针脚和电线构成。下图给出了一个由三个构件A,B和C组成的电路。每根电线连接了一对针脚。 两个针脚a和b是电子

文档评论(0)

wxc6688 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档