1第十六章树主要内容无向树及其性质生成树根树及其应用216.1无向树及其性质定义16.1(1)无向树——连通无回路的无向图(2)平凡树——平凡图(3)森林——至少由两个连通分支(每个都是树)组成(4)树叶——1度顶点(5)分支点——度数2的顶点3无向树的等价定义定理16.1设G=V,E是n阶m条边的无向图,则下面各命题是等价的:(1)G是树(2)G中任意两个顶点之间存在惟一的路径.(3)G中无回路且m=n1.(4)G是连通的且m=n1.(5)G是连通的且G中任何边均为桥.(6)G中没有回路,但在任何两个不同的顶点之间加一条新边,在所得图中得到惟一的一个含新边的圈.4(3)(4).只需证明G连通.用反证法.否则G有s(s2)个连通分支都是小树.于是有mi=ni1,,这与m=n1矛盾.证明思路(2)(3).若G中有回路,则回路上任意两点之间的路径不惟一.对n用归纳法证明m=n1.n=1正确.设nk时对,证n=k+1时也对:取G中边e,Ge有且仅有两个连通分支G1,G2(为什么?).nik,由归纳假设得mi=ni1,i=1,2.于是,m=m1+m2+1=n1+n22+1=n1.)2(11ssnsnmmsiisii(1)(2).关键一步是,若路径不惟一必有回路.5(4)(5).只需证明G中每条边都是桥.为此只需证明命题“G是n阶m条边的无向连通图,则mn1”.命题的证明:对n归纳.eE,Ge只有n2条边,由命题可知Ge不连通,故e为桥.证明思路(5)(6).由(5)易知G为树,由(1)(2)知,u,vV(uv),u到v有惟一路径,加新边(u,v)得惟一的一个圈.(6)(1).只需证明G连通,这是显然的.6)(2)()1(2xnxvdni由上式解出x2.定理16.2设T是n阶非平凡的无向树,则T中至少有两片树叶.无向树的性质证设T有x片树叶,由握手定理及定理16.1可知,7例题例1已知无向树T中有1个3度顶点,2个2度顶点,其余顶点全是树叶,试求树叶数,并画出满足要求的非同构的无向树.解解本题用树的性质m=n1,握手定理.设有x片树叶,于是n=1+2+x=3+x,2m=2(n1)=2(2+x)=13+22+x解出x=3,故T有3片树叶.T的度数列应为1,1,1,2,2,3,易知3度顶点与1个2度顶点相邻与和2个2度顶点均相邻是非同构的,因而有2棵非同构的无向树T1,T2,如图所示.8例2已知无向树T有5片树叶,2度与3度顶点各1个,其余顶点的度数均为4,求T的阶数n,并画出满足要求的所有非同构的无向树.例题解设T的阶数为n,则边数为n1,4度顶点的个数为n7.由握手定理得2m=2(n1)=51+21+31+4(n7)解出n=8,4度顶点为1个.9T的度数列为1,1,1,1,1,2,3,4,共有3棵非同构的无向树,如图所示.例题10不一定连通,也不一定不含回路,如图所示T定义16.2设G为无向图(1)G的树——T是G的子图并且是树(2)G的生成树——T是G的生成子图并且是树(3)生成树T的树枝——T中的边(4)生成树T的弦——不在T中的边(5)生成树T的余树——全体弦组成的集合的导出子图T16.2生成树11推论2的边数为mn+1.T推论3为G的生成树T的余树,C为G中任意一个圈,则C与一定有公共边.证否则,C中的边全在T中,这与T为树矛盾.TT定理16.3无向图G具有生成树当且仅当G连通.生成树存在条件推论1G为n阶m条边的无向连通图,则mn1.证必要性显然.充分性用破圈法(注意:在圈上删除任何一条边,不破坏连通性)12基本回路系统定理16.4设T为G的生成树,e为T的任意一条弦,则Te中含一个只有一条弦其余边均为T的树枝的圈.不同的弦对应的圈也不同.证设e=(u,v),在T中u到v有惟一路径,则e为所求的圈.定义16.3设T是n阶m条边的无向连通图G的一棵生成树,设e1,e2,…,emn+1为T的弦.设Cr为T添加弦er产生的只含弦er、其余边均为树枝的圈.称Cr为G的对应树T的弦er的基本回路或基本圈,r=1,2,…,mn+1.并称{C1,C2,…,Cmn+1}为G对应T的基本回路系统,称mn+1为G的圈秩,记作(G).求基本回路的算法:设弦e=(u,v),先求T中u到v的路径uv,再并上弦e,即得对应e的基本回路.13基本割集的存在定理16.5设T是连通图G的一棵生成树,e为T的树枝,则G中存在只含树枝e,其余边都是弦的割集,且不同的树枝对应的割集也不同.证由定理16.1可知,e是T的桥,因而Te有两个连通分支T1和T2,令Se={e|eE(G)且e的两个端点分别属于V(T1)和V(T2)},由构造显然可知Se为G的割集,eSe且Se中除e外都是弦,所以Se为所求.显然不同的树枝对应的割集不同.14定义16.4设T是n阶连通图G的一棵生成树,e1,e2,…,en1为T的树枝,Si是G的只含树枝ei的割集,则称Si为G的对应于生成树T由树枝ei生成的基本割集,i=1,2,…,n1.并称{S1,S2,…,Sn1}为G对应T的基本割集系统,称n1为G的割集秩,记作(G).基本割集与基本割集系统求基本割集的算法设e为生成树T的树枝,Te为两棵小树T1与T2,令Se={e|eE(G)且e的两个端点分别属于T1与T2}则Se为e对应的基本割集.15解弦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}.例3图5实线边所示为生成树,求基本回路系统与基本割集系统实例16最小生成树定义16.5T是G=V,E,W的生成树(1)W(T)——T各边权之和(2)最小生成树——G的所有生成树中权最小的求最小生成树的一个算法避圈法(Kruskal)设G=V,E,W,将G中非环边按权从小到大排序:e1,e2,…,em.(1)取e1在T中(2)查e2,若e2与e1不构成回路,取e2也在T中,否则弃e2.(3)再查e3,…,直到得到生成树为止.17例4求图的一棵最小生成树.所求最小生成树如图所示,W(T)=38.实例1816.3根树及其应用定义16.6T是有向树(基图为无向树)(1)T为根树——T中一个顶点入度为0,其余的入度均为1.(2)树根——入度为0的顶点(3)树叶——入度为1,出度为0的顶点(4)内点——入度为1,出度不为0的顶点(5)分支点——树根与内点的总称(6)顶点v的层数——从树根到v的通路长度(7)树高——T中层数最大顶点的层数(8)平凡根树——平凡图19根树实例根树的画法——树根放上方,省去所有有向边上的箭头20家族树与根子树定义16.7T为非平凡根树(1)祖先与后代(2)父亲与儿子(3)兄弟定义16.8设v为根树T中任意一顶点,称v及其后代的导出子图为以v为根的根子树.215.根树的分类(1)T为有序根树——同层上顶点标定次序的根树(2)分类①r叉树——每个分支点至多有r个儿子②r叉有序树——r树是有序的③r叉正则树——每个分支点恰有r个儿子④r叉正则有序树⑤r叉完全正则树——树叶层数相同的r叉正则树⑥r叉完全正则有序树22定义16.9设2叉树T有t片树叶v1,v2,…,vt,权分别为w1,w2,…,wt,称为T的权,其中l(vi)是vi的层数.在所有有t片树叶,带权w1,w2,…,wt的2叉树中,权最小的2叉树称为最优2叉树.)()(1itiivlwtW最优二叉树求最优树的算法——Huffman算法给定实数w1,w2,…,wt,且w1w2…wt.(1)连接权为w1,w2的两片树叶,得一个分支点,其权为w1+w2.(2)在w1+w2,w3,…,wt中选出两个最小的权,连接它们对应的顶点(不一定是树叶),得新分支点及所带的权.(3)重复(2),直到形成t1个分支点,t片树叶为止.23例5求带权为1,1,2,3,4,5的最优树.解题过程由图9给出,W(T)=3824最佳前缀码定义16.10设1,2,…,n-1,n是长度为n的符号串(1)前缀——1,12,…,12…n1(2)前缀码——{1,2,…,m}中任何两个元素互不为前缀(3)二元前缀码——i(i=1,2,…,m)中只出现两个符号,如0与1.如何产生二元前缀码?定理16.6一棵2叉树产生一个二元前缀码.推论一棵正则2叉树产生惟一的前缀码(按左子树标0,右子树标1)25图所示二叉树产生的前缀码为{00,10,11,011,0100,0101}26用Huffman算法产生最佳前缀码例6在通信中,八进制数字出现的频率如下:0:25%1:20%2:15%3:10%4:10%5:10%6:5%7:5%求传输它们的最佳前缀码,并求传输10n(n2)个按上述比例出现的八进制数字需要多少个二进制数字?若用等长的(长为3)的码字传输需要多少个二进制数字?27解用100个八进制数字中各数字出现的个数,即以100乘各频率为权,并将各权由小到大排列,得w1=5,w2=5,w3=10,w4=10,w5=10,w6=15,w7=20,w8=25.用此权产生的最优树如图所示.求最佳前缀码01-----011-----1001-----2100-----3101-----40001-----500000-----600001-----7W(T)=285,传10n(n2)个用二进制数字需2.8510n个,用等长码需310n个数字.28波兰符号法与逆波兰符号法行遍或周游根树T——对T的每个顶点访问且仅访问一次.对2叉有序正则树的周游方式:①中序行遍法——次序为:左子树、根、右子树②前序行遍法——次序为:根、左子树、右子树③后序行遍法——次序为:左子树、右子树、根对图所示根树按中序、前序、后序行遍法访问结果分别为:ba(fdg)ce,ab(c(dfg)e),b((fgd)ec)a29用2叉有序正则树存放算式存放规则最高层次运算放在树根后依次将运算符放在根子树的根上数放在树叶上规定:被除数、被减数放在左子树树叶上算式((b+(c+d))a)((ef)(g+h)(ij))存放在图所示2叉树上.30波兰符号法波兰符号法按前序行遍法访问存放算式的2叉有序正则树,其结果不加括号,规定每个运算符号与其后面紧邻两个数进行运算,运算结果正确.称此算法为波兰符号法或前缀符号法.对上图的访问结果为b+cdaef+ghij逆波兰符号法按后序行遍法访问,规定每个运算符与前面紧邻两数运算,称为逆波兰符号法或后缀符号法.对上图的访问结果为bcd++aefgh+ij31第十六章习题课主要内容无向树及其性质生成树、最小生成树、基本回路系统、基本割集系统根树及其分类、最优树、最佳前缀码、波兰符号法、逆波兰符号法基本要求深刻理解无向树的定义及性质熟练地求解无向树准确地求出给定带权连通图的最小生成树深刻理解基本回路、基本割集的概念,并会计算理解根树及其分类等概念会画n阶(n较小)非同构的无向树及根树(1n6)熟练掌握求最优树及最佳前缀码的方法掌握波兰符号法与逆波兰符号法32为树叶数ttnnkii2kiitnm21tnivdtnmkiiniikii212)(22222)2(3kiinit(2)(3)从而解出练习11.无向树T有ni个i度顶点,i=2,3,…,k,其余顶点全是树叶,求T的树叶数.解用树的性质:边数m=n1(n为阶数),及握手定理.(1)332.设n阶非平凡的无向树T中,(T)k,k1.证明T至少有k片树叶.证反证法.否则,T至多有s片树叶,