1 / 58

第 16 章 树

第 16 章 树. 树是一类结构较为简单的图,用途极为广泛。特别是二叉树。 学习时应很好的掌握一些概念和算法,诸如,树的充要条件,树的各种算法等等。. 学习要点. 无向树及生成树 无向树的定义 ( 包括等价定义 ) 无向树的性质 生成树 定义,由连通图构造最小生成树的克鲁斯克尔算法。 根树及其应用 有向树及根树的定义, 家族树,有序树, r 叉树的概念 最优二叉树的概念和哈夫曼算法,二叉树周游 本章中所谈回路均指简单回路或初级回路. 第十六章:树. 第一节:无向树及其性质. 无向树简称树,常用. 表示。.

Download Presentation

第 16 章 树

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第16章 树 树是一类结构较为简单的图,用途极为广泛。特别是二叉树。 学习时应很好的掌握一些概念和算法,诸如,树的充要条件,树的各种算法等等。

  2. 学习要点 • 无向树及生成树 • 无向树的定义 (包括等价定义) • 无向树的性质 • 生成树 • 定义,由连通图构造最小生成树的克鲁斯克尔算法。 • 根树及其应用 • 有向树及根树的定义, • 家族树,有序树,r叉树的概念 • 最优二叉树的概念和哈夫曼算法,二叉树周游 本章中所谈回路均指简单回路或初级回路

  3. 第十六章:树 第一节:无向树及其性质

  4. 无向树简称树,常用 表示。 ——连通分支数大于等于2,且每个连通 分支都是树的无向图。 无向树的定义 无向树 ——连通且不含回路的无向图。 平凡树 ——平凡图。 森林

  5. a d b c e f (4) (3) (2) (1) 例题 • 判断下面的图,是树,森林,还是平凡树?

  6. , , 定理:设 则以下命题等价: 树的等价定义 (1) G是连通且不含回路,即G是树 (2) G中每一对顶点间有且仅有一条路径。 (3)G无回路且m=n-1 (4)G连通且m=n-1 (5)G连通,且G中任何边均为桥。 (6)G无回路,但增加一边后得到且仅得一个圈

  7. (1) 树中顶点数与边数的关系: 证明: 设 为 阶非平凡树, 设 有 片树叶,则有 个顶点度数大于等 于2, 由握手定理, 又由(1) , ,代入上式,解得 至少2片叶。 即 树的性质 (2) 非平凡树至少2片树叶。

  8. 解:所要画的树有6个顶点,则边数为5,因此 6个顶点的度数之和为10,可以产生以下五种 度数序列: (1) 例题 画出所有的6个顶点的非同构的树。

  9. (2) (3) (4) (5)

  10. 一棵树有7片叶,3个3度顶点,其余都 是4度顶点,求4度顶点多少个? 解:设有 , 个4度顶点,则顶点数 边数 , 由握手定理, , 解得 , 例题 故这棵树有1个4度顶点。

  11. 例题 已知无向树T中有1个3度顶点,2个2度顶点,其余顶点全是树叶,试求树叶数,并画出满足要求的非同构的无向树. 解 解本题用树的性质m=n1,握手定理. 设有x片树叶,于是 n = 1+2+x = 3+x, 2m = 2(n1) = 2(2+x) = 13+22+x 解出x = 3,故T有3片树叶. T 的度数列应为 1, 1, 1, 2, 2, 3, 易知3度顶点与1个2度顶点相邻与和2个2度顶点均相邻是非同构的,因而有2棵非同构的无向树T1, T2,如图所示.

  12. 例题 已知无向树T有5片树叶,2度与3度顶点各1个,其余顶点的度数均为4,求T的阶数n,并画出满足要求的所有非同构的无向树. 解 设T的阶数为n, 则边数为n1,4度顶点的个数为n7. 由握手定理得 2m = 2(n1) = 51+21+31+4(n7) 解出n = 8,4度顶点为1个.

  13. 例题 T的度数列为1, 1, 1, 1, 1, 2, 3, 4,共有3棵非同构的无向树,如图所示.

  14. 例题 无向树 T 有ni个i 度顶点,i=2, 3, …,k,其余顶点全是树叶,求T 的树叶数. 解 用树的性质:边数 m=n1(n为阶数),及握手定理. (1) (2) (3) 从而解出

  15. 第十六章:树 第二节:生成树

  16. 生成树的定义 1、定义:设 是无向连通图, 是 的生成子图,若 是树,称 是 的生成树。 树枝 —— 在 中的边, 弦 —— 不在 中的边, 余树 —— 的所有的弦的集合的导出子图。

  17. 例题 上图中,(2)是(1)的生成树, (3)是(2)的余树。 (1) 生成树不唯一, 注意: (2) 余树不一定是树。

  18. 生成树存在条件 定理:无向图G具有生成树当且仅当G是连通图 证明: 必要性 显然  充分性,如果G无回路,则G本身就是它的生成树,如G有回路,则在回路上任取一条边并去掉后仍是连通的,如G仍有回路,则继续在该回路上去掉一条边,直到图中无回路为止,此时该图就是G的一棵生成树 ,求其生成树步骤。 已知连通图G

  19. 为连通图, , , (2) , 生成树的性质 (1) 至少有一棵生成树, (3) 设 是 的生成树, 是 的余树, 则 中有 条边。 (4) 设 是 的生成树, 是 的余树, C为G中任意一个圈,则E(T’) ∩E(C)不为空。

  20. 基本回路的存在 定理16.4设T为G的生成树,e为T的任意一条弦,则Te中 含一个只有一条弦其余边均为T的树枝的圈. 不同的弦对应的 圈也不同. 证 设e=(u,v),在T中u到v有惟一路径,则e为所求的圈.

  21. 基本回路系统 定义16.3设T是n阶m条边的无向连通图G的一棵生成树,设 e1, e2, …, emn+1为T 的弦. 设Cr为T 添加弦er 产生的只含弦 er、其余边均为树枝的圈. 称Cr为G的对应树T 的弦er的基本 回路或基本圈,r=1, 2, …, mn+1. 并称{C1, C2, …,Cmn+1}为 G对应T 的基本回路系统,称mn+1为G的圈秩,记作 (G). 求基本回路的算法:设弦e=(u,v),先求T中u到v的路径uv,再并上弦e,即得对应e的基本回路.

  22. 基本割集的存在 定理16.5设T是连通图G的一棵生成树,e为T的树枝,则G 中存在只含树枝e,其余边都是弦的割集,且不同的树枝对 应的割集也不同. 证 由定理16.1可知,e是T的桥,因而Te有两个连通分支T1 和T2,令 Se={e’ | e’E(G)且 e’ 的两个端点分别属于V(T1)和V(T2)}, 由构造显然可知Se为G的割集,eSe且Se中除e外都是弦, 所以Se为所求. 显然不同的树枝对应的割集不同.

  23. 基本割集与基本割集系统 定义16.4设T是n阶连通图G的一棵生成树,e1, e2, …, en1 为T 的树枝,Si是G的只含树枝ei的割集,则称Si为G的对应 于生成树T由树枝ei生成的基本割集,i=1, 2, …, n1. 并称 {S1,S2, …, Sn1}为G 对应T 的基本割集系统,称n1为G的割 集秩,记作(G). 求基本割集的算法: 设e为生成树T 的树枝,Te为两棵小树T1与T2,令 Se ={e | eE(G)且e的两个端点分别属于T1与T2} 则Se为e 对应的基本割集.

  24. 例题 下实线边所示为生成树,求基本回路系统与基本割集系统 解 弦e, f, g对应的基本回路分别为 Ce=ebc, Cf=fabc, Cg=gabcd, C={Ce, Cf, Cg}. 树枝a, b, c, d对应的基本割集分别为 Sa={a, f, g}, Sb={b, e, f, g}, Sc={c, e, fg}, Sd={d, g}, S={Sa, Sb, Sc, Sd}.

  25. 对于有向图或无向图 的每条边附加一个实数 ,则称 为边 上的权, 连同附加在 各边上的实数称为带权图,记为 。 , 定义:设无向连通带权图 是 的一棵生成树, 各边带权之和称为 的权, 记作 。 最小生成树 最小生成树 —— 各边权和最小的生成树。

  26. 阶无向连通带权图 中有 条 ,它们带的权分别为 , 边 不妨设 , (1) 取 中 (非环,若 )。 在 为环,则弃 Kruskal 避圈法 (2) 若 中,否则弃 不与在 中的边构成回路,取 在 ,再查 ,继续这一过程,直到形成树为止。

  27. 例题 求图的一棵最小生成树. 所求最小生成树如 图所示,W(T)=38.

  28. 求以下连通图的最小生成树 及 。 解: 例题

  29. 解:

  30. 求以下连通图的最小生成树 及 。 解: 例题

  31. 的最小生成树可能不唯一, 但 的不同最小生成树权的值一样。 解:

  32. 例题 • 设有6个城市v1,v2,…,v6,它们之间有输油管连通,其布置如图所示,Si(数字)中Si为边的编号,括号内数字为边的权,它是两城市间的距离,为了保卫油管不受破坏,在每段油管间派一连士兵看守,为保证每个城市石油的正常供应最少需多少连士兵看守?输油管道总长度越短,士兵越好防守。求他们看守管道的最短的总长度。

  33. 区别

  34. 第十六章:树 第三节:根树及其应用

  35. 根树的定义 定义16.6T是有向树(基图为无向树) (1) T 为根树——T 中一个顶点入度为0,其余的入度均为1. (2) 树根——入度为0的顶点 (3) 树叶——入度为1,出度为0的顶点 (4) 内点——入度为1,出度不为0的顶点 (5) 分支点——树根与内点的总称 (6) 顶点v的层数——从树根到v的通路长度 (7) 树高——T 中层数最大顶点的层数 (8) 平凡根树——平凡图

  36. 树叶(入度为1,出度为0) 树根(入度为0) 分支点 内点(入度为1, 出度大于0) 根树的定义 根树的顶点

  37. 根树实例 根树的画法——树根放上方,省去所有有向边上的箭头

  38. v1 v1 v2 v2 v4 v4 v3 v3 v7 v7 v8 v8 v5 v6 v5 v6 v10 v10 v9 v11 v9 v11 v12 v13 v12 v13 图中v1是树根, v2, v4, v7, v10是内点, v3, v5, v6, v8, v9, v11, v12 , v13是树叶。 习惯把有向树的根画在最上方,边的箭头全指向下,则可以省略全部箭头。上图树高为4。

  39. (1) (2) (3) 练习 画出基图为图所示无向树的所有非同构的根树 以a, b, c 或d为根的根树同构,选a为根,则根树如图(1); 以 e 与 g 为根的根树同构,取 g为根,则根树如图(2); 以 f 为根,如图(3) 所示.

  40. 家族树 定义16.7T 为非平凡根树 (1) 祖先与后代 (2) 父亲与儿子 (3) 兄弟 定义16.8设v为根树T中任意一顶点,称v及其后代的导出子 图为以v为根的根子树.

  41. 实例 v1 v2 v4 图中v1是v2的父亲, v2是v1的儿子, v2, v5, v6,构成的子图是T的子树且是真子树。 v1是v5的祖先,v5是v1的后代, v1有3个儿子分别是 v2, v3, v4,它们互为兄弟。 v3 v7 v8 v5 v6 v10 v9 v11 v12 v13

  42. 根树的分类 (1) T 为有序根树——同层上顶点标定次序的根树 (2) 分类 ① r 叉树——每个分支点至多有r 个儿子 ② r 叉有序树——r 树是有序的 ③ r 叉正则树——每个分支点恰有r 个儿子 ④ r 叉正则有序树 ⑤ r 叉完全正则树——树叶层数相同的r叉正则树 ⑥ r 叉完全正则有序树

  43. 实例  2叉有序完全正则树 2叉有序树 2叉有序正则树

  44. 最优二叉树 定义16.9设2叉树T 有t片树叶v1, v2, …, vt,权分别为w1, w2, …, wt,称 为T 的权,其中l(vi)是vi 的层数. 在所有有t片树叶,带权w1, w2, …, wt 的2叉树中,权最小的2叉树称为最优2叉树. 求最优树的算法—— Huffman算法 给定实数w1, w2, …, wt,且w1w2…wt. (1) 连接权为w1, w2的两片树叶,得一个分支点,其权为w1+w2. (2) 在w1+w2, w3, …, wt 中选出两个最小的权,连接它们对应的顶点(不一定是树叶),得新分支点及所带的权. (3) 重复(2),直到形成 t1个分支点,t片树叶为止.

  45. 的2叉树 下图中的树 都是带权1,3,4,5,6 求 , 。 解: 例题

  46. 例题 例 求带权为1, 1, 2, 3, 4, 5的最优树. 解题过程由图9给出,W(T)=38

  47. 求带权1,3,4,5,6的最优2叉树 及 。 其实 等于 的 各分支点的权之和,即 最优树是不唯一的,但 算法得到的树 一定是最优树。 例题 解:

  48. (2) (3) (4) (5) 有__个2度顶点, __个3度顶点, __个4度顶点。 有___片树叶。 例题 求带权为2,3,5,7,8,9的最优2叉树T 解:

  49. 最佳前缀码 最优2叉树的用途之一是求最佳前缀码。 在通讯中,我们常用0和1的符号串作为英文字母的传送信息,26个英文字母被使用的频率往往是不同的。为了使整个信息的长度尽可能短,自然希望用较短的符号串去表示使用频率高的英文字母,用较长的符号串表示使用频率低的英文字母。 为了使编码在使用中既快速又准确,可以用求最优2元树的Huffman算法解决这个问题。

  50. 前缀码 定义16.10设12…n-1n是长度为 n 的符号串 (1) 前缀——1, 12, …, 12…n1 (2) 前缀码——{1, 2, …, m}中任何两个元素互不为前缀 (3) 二元前缀码——i (i=1, 2, …, m) 中只出现两个符号,如0与1. 那么:{00, 01, 100, 1010, 1011, 11111} { abc, cba, bca, bac, acb, cab } {1, 00, 011, 01001, 01000 } 是前缀码吗?

More Related