第三章 树 树的有关定义.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文档。上传文档
查看更多
第三章 树 树的有关定义

假设各个字符在电文中出现的次数(或频率)为 wi ,其编码 长度为 li,电文中只有 n 种字符,则电文编码总长为: 叶子结点的权 从根到叶子的路径长度 设计电文总长最短的编码 设计哈夫曼树(以 n 种 字符出现的频率作权) 用哈夫曼树设计总长最短的二进制前缀编码 由哈夫曼树得到的二进制前缀码称为哈夫曼编码。 解: C B A D 0 0 0 1 1 1 编码: C:0 B:10 A:110 D:111 例:设 A, B, C, D 的频率(即权值)分别为 17%, 25%, 38%, 20%, 试设计哈夫曼编码(最佳前缀码)。 17 20 25 38 译码 从哈夫曼树根开始,对待译码电文逐位取码。若编码是“0”, 则向左走;若编码是“1”,则向右走,一旦到达叶子结点,则译出 一个字符;再重新从根出发,直到电文结束。 0 0 1 1 0 1 1 0 T ; A C S 电文为 “1101000” 译文只能是“CAT” 3.7 最短树 在赋权连通图中,计算该图总长最小的支撑树,即求最短树 两种算法 Kruskal算法 Prim算法 3.7.1 Kruskal算法 基本思想: 不断往T中加入当前的最短边e,如果此时会构成回路,那么它一定是这个回路中的最长边,删之。直至最后达到n-1条边为止。这时T中不包含任何回路,因此是树。 依据树的性质: 若T有n-1条边且无回路,则T是树 3.7.1 Kruskal算法 Kruskal算法的描述如下: T←Φ。 当|T| n – 1且E≠Φ时, begin e←E中最短边. E←E-e. 若T+e无回路,则T←T+e. end 若|T|n-1打印”非连通”, 否则输出最短树 Kruskal算法实例 1 2 4 3 5 6 6 1 6 5 5 5 6 3 4 2 图G 4 6 2 1 3 1 1 3 1 2 5 3 4 6 2 1 3 1 1 2 4 3 5 6 1 5 3 4 2 5 5 最短树 定理 3.7.1 T=(V, E’)是赋权连通图G=(V, E)的最短树, 当且仅当对任意的余树边e∈E-E’, 回路Ce(Ce?E’+e), 满足其边权w(e)≥w(a), a∈Ce(a≠e). 证明:必要性. 如果存在一条余树边e,满足w(e)w(a), a∈Ce, 则T?(a, e)得到新树T’比T更加短,与T是最短树矛盾. 1 2 4 3 5 6 1 5 3 4 2 5 1 2 4 3 5 6 6 1 6 5 5 5 6 3 4 2 图G T 3 最短树 充分性.即证明:设T=(V, E’)是G=(V, E)的一棵树,如果对任意的余树边e∈E-E’, 回路Ce(Ce?E’+e), 满足其边权w(e)≥w(a), a∈Ce(a≠e),那么T是最短树。 反证。若存在比T还短的树T’, 则T’-T≠?, 设e∈T’-T, 则T+e构成唯一回路Ce. 根据已知,对任意的T’关于T的余树边e∈T’-T, 它与回路Ce里的树枝边a(a≠e)相比都有w(e)≥w(a), 则有w(T’)≥w(T), 与假设矛盾. 注:因为T和T’都是G的生成树,所以结点数和边数都相同,分别是n和n-1。 最短树 定理 3.7.2 Kruskal算法的计算复杂性是 O(m+p*logm) 其中p是迭代次数. 3.7.2 Prim算法 Prim算法的基本思想是: 首先任选一结点v0构成集合U, 然后不断在V-U中选一条到U中某点(比如v)最短的边(u,v)进入树T, 并且U=U+v, 直到U=V 最短树 Prim算法的描述如下: t←v1, T←?, U←{t} While U≠V do begin W(t, u)=minv∈V-U{w(t, v)} T←T+e(t, u) U←U+u For v?V-U do

文档评论(0)

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

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

1亿VIP精品文档

相关文档