- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[高等教育]第6章树和二叉树part4
第六章 树和二叉树 主讲:戚玉涛 第6章 树和二叉树 树的应用 树与等价问题 哈夫曼树与哈夫曼编码 树与等价问题 等价关系:设关系R定义在集合S上,对于任意的元素对( a,b ),a,b∈S,a R b 为真或为假。 等价关系R满足如下三个属性:??? (1)?自反性 :对于? a∈S,a R a 为真???? (2)?对称性 :a R b为真当且仅当 b R a?为真?? (3)?传递性 :若a R b,b R c为真 ,a R c为真 划分等价类 等价类:R是集合S的等价关系,由[x]R={ y| y∈S∧x R y } 给出的集合[x]R称为:由x∈S生成的一个R等价类。 划分:R是S上的等价关系,可以按R将S划分为若干不相交的子集 S1 ,S2,……, 它们的并即为S,则这些子集 Si就是S的R等价类。 划分等价类 假设集合S有n个元素,m个形如(x,y)的等价偶对确定了等价关系R,求S的划分。 一种确定等价类的算法: 1) 令S中每个元素各自形成一个只含单个成员的子集,记为S1 ,S2 ,…,Sn。 2) 重复读入m个偶对,对每个偶对(x,y),判断x和y所属的子集,设x∈Si,y∈Sj,若Si≠Sj,则将Sj并入Si,并置Sj为空。 3) 处理完m个偶对后剩下的非空子集就是S的R等价类。 划分等价类 由以上划分等价类的算法可以看出,划分等价类需要的基本操作有以下3个: 1) 构造只含单个元素的集合 2) 判定某个元素所属集合 3) 合并两个互不相交的集合 由此,需要一个包含上述三种操作的抽象数据类型MFSet(Merge Find Set) ADT MFSet ADT MFSet:若S是MFSet类型的集合,则它由子集Si构成,S1∪S2∪…∪Sn=S。 基本操作: Initial(S,n,x1,x2,…,xn):构造由n个子集构成的集合S,每个子集只含单个元素。 Find(S,x):查找x所属的子集Si。 Merge(S,i,j):合并两个不相交的集合Si和Sj。 MFSet类型的实现 根据Find和Merge两个操作的特点,用树来实现MFSet。 以森林F=(T1,T2,…,Tn)表示MFSet类型的集合S,每颗树Ti表示一个子集Si。 树中每个结点表示子集中的一个成员x。 令每个结点中包含一个指向其双亲的指针。 约定根结点兼作子集的名称。 int find_mfset(MFSet S, int i) // Find操作 { if (i1 || iS.n) return -1; for (j=i;S.nodes[j].parent0;j=S.node[j].parent) ; return j; } Status merge_mfset(MFSet S,int i,int j) // merge操作 { if (i1 || iS.n || j1 || jS.n) return ERROR; S.node[i].parent=j; //将一棵树的根指向另一棵树的根 return OK; } 时间复杂度分别为O(d)和O(1),d为树的深度 极端情况: 改进方法? MFSet类型实现的改进 改进思想: Merge时,总是将成员少的子集根结点指向含成员多的子集的根。 为此要相应地修改存储结构:令根结点的parent域存储子集中所含成员数目的负值。 可以将find_mfset的复杂度降到O(log2n) Status mix_mfset(MFSet S, int i, int j) { if (i1 || iS.n || j1 || jS.n) return ERROR; if (S.nodes[i].parentS.nodes[j].parent) { S.nodes[j].parent += S.nodes[i].parent; S.nodes[i].parent = j; }else{ S.nodes[i].parent += S.nodes[j].parent; S.nodes[j].parent = i; } return OK; } MFSet类型实现的改进 进一步的改进:Find时压缩路径 当所查元素不在第二层时,将所有从根到该元素路径上的元素都变成根结点的孩子 第6章 树和二叉树 树的应用 树与等价问题 哈夫曼树与哈夫曼编码 哈夫曼树 路径长度:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径, 路径上的分支数目称做路径长度。 树的路径长度:从树根到每一结点的路径长度之和。 结点的权和带权路径长度:给树的每个结点赋予一个具有某种实际意义的实数,我们称该实数为这
您可能关注的文档
- [高等教育]第2章-1教学设计理论基础概述.ppt
- [高等教育]第2章vbjichu.ppt
- [高等教育]第2章 第4节 动力装置 民航概论.ppt
- [高等教育]第2讲 市场营销管理哲学.ppt
- [高等教育]第3章 建筑安全与防雷接地.ppt
- [高等教育]第3章3 80x86的指令系统和寻址方式2323 位操作类指令.ppt
- [高等教育]第3讲 货币的时间价值基本原理及运用.pdf
- [高等教育]第3章 计算机硬件系统.ppt
- [高等教育]第3讲总账管理系统初始设置.ppt
- [高等教育]第4章 CRM软件系统.ppt
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
最近下载
- Zkteco中控智慧万傲瑞达V6000_2.0.0用户手册(停车CS岗亭端).pdf
- 2023-2024学年江苏省淮安市清江浦区三校八年级(上)期中数学试卷.doc VIP
- 要拿我当一挺机关枪使用.docx
- 母婴三病培训.pptx VIP
- 管理信息系统题目_带答案.doc
- 《汽车侧面气囊和帘式气囊模块性能要求GBT+38795-2020》详细解读.pdf
- 初中班主任工作经验交流精美PPT课件.ppt VIP
- 探放水工考试卷及答案 .docx
- 【申论】公务员考试辅导·笔试系统讲义(2025国考版).docx
- 2023-2024学年江苏省淮安市盱眙县八年级(上)期中检测英语试卷(附答案详解).pdf VIP
文档评论(0)