树
树的概念
- 森林是无圈图
- 树是连通的无圈图
- 树和森林都是简单图,也都是二部图
- 树的一度点是树叶
树的性质
树的基本性质
-
定理1:G中任意两顶点间有且仅有一条路相连
- 证明:假设有两条路,则两条路的一部分必能构成圈
-
m=n-1
- 推论1:由k棵树组成的森林满足m=n-k
- 证明:数学归纳法,任意去一条边,则得到两个连通分支,分别得证
-
连通且无圈
-
在G中任意不相邻的两顶点间增加一条边,就得到唯一的一个圈
- 证明:由定理1,已经存在一条路,然后加一个边,则得到一个圈,并且是唯一的圈
-
推论2:每棵非平凡树至少有两片树叶
- 证明:反证,从度的角度来看,因为m=n-1,所以总度数为2m=2n-2,由于只有一个叶子,树的最小度大于1,所以总度数又可以表示成1+2*(n-1)=2n-1,总度数最小值>2n-2=总度数,矛盾,所以最少有2个树叶
-
定义:图G是非平凡的无向连通图,对于G中的每一条边e,G-e都不连通,称G为最小连通图
- 即,图G中每一条边都是割边
- 定理2:非平凡图G是树的充要条件是G为最小连通图
-
根据度序列判断树
-
正整数序列,d1>=d2>=...>=dn,且sum[d1...dn]=2(n-1),则为树
- 由m=n-1得来
-
树的中心
-
点v的离心率
-
- 即对点v,最远的距离就是离心率,其中的心可以理解成v,以自我为中心
- 离心率是点的属性
-
图的半径
-
- 所有顶点中,最小离心率
-
图的中心点
- 离心率等于半径的点
-
图的中心
- 中心点的集合
-
图的直径
- 所有顶点中,最大离心率
-
定理3:每棵树都有一个 由一个点或两个邻接的点组成的中心
生成树
图G的生成子图T是一棵树,则T是图G的一棵生成树(若T为森林,则是生成森林)
- G中生成树的边称为树枝
- G中非生成树的边称为弦
定理5:每个连通图至少包含一颗生成树
- 证明,如果本身无圈,则本身就是一棵树,如果本身有圈,则在保持连通性的情况下去掉一条圈,如此下去,就能得到连通的无圈图,即生成树
-
引申出一种求生成树的方法--破圈法
- 得到的生成树不唯一
生成树有多少个
-
凯莱递推计数法
- 凯莱定理 棵数
- G.e意为删掉e,并把两个e的两个端点合并。G-e就是单纯的删掉e
- 每次都分成删边和缩边,知道不能进行下去,用树状图来表示,最终的叶子数目就是图G生成树的数目
- 这个用矩阵树定理最简单,因为拉普拉斯矩阵好写
- 凯莱公式计算量大,不能具体指出每棵生成树,意义不是太大
-
矩阵树定理
-
拉普拉斯矩阵L
-
- 就是对角阵-邻接矩阵。对角阵的对角元素就是该节点的度
-
G的生成树的棵数为L的任意一个代数余子式的值
-
例题
- 因为是完全图,有对称性,所以每棵生成树的边数都是n-1,Kn的所有生成树的总边数为(n-1)n^(n-2),e这条边出现在生成树的次数就是总数/总边数,然后用总的生成树数目减去包含e的生成树的数目即可得到
- 还是矩阵树好证明
-
-
回路系统
-
基本回路
- T是连通图G的一颗生成树,由G的对应与T一条弦与T中树枝构成的唯一圈C,称为G关于T的一个基本圈(基本回路)
- 基本回路的数目是:对于G(n,m)其生成树的边数是n-1,则剩下m-(n-1)条弦,每加进一条弦,则有一个基本回路,所有一共有m-n+1个基本回路。它们称为G对应与T的基本回路组
-
回路空间
-
定理9:图G的两个不同的回路,它们的对称差是一个回路或是两个回路的并
- 对于证明,就是其中一点v在C1和C2中的度都是偶数,最终在对称差中的度也是偶数,顶点度数为偶数的连通图本身可以构成一个包含所有边的回路
-
定理10:设T是连通图G=(n,m)的一颗生成树,C1,C2...Cm-n+1是G对应于T的将基本回路组。定义1Gi=Gi,0Gi=∅,G1是G的回路,则G的回路组作成的集合对于该陈发和图的对称差运算来说作成属于F={0,1}上的m-n+1维向量空间。
- 证明的话,首先是线性无关,线性无关很简单,反证,存在一组不全为0的数使得····为空集,但是任意两个基本回路包含两条不同弦,所以只要有不为0的,就不可能对称差结果为空。其次是证明G的任意回路都可以由基本回路组线性表出。任意找一个回路B,将其分为弦们和树枝们。首先来表出弦们,因为每一个基本回路都有一个弦,所以可以用基本回路组来表出弦们,用B1来表示弦们,B1由基本回路组线性表出,可以证明,两个回路的对称差一定是回路(这句话是核心),所以B1是回路,B也是回路,B1和B做对称差只包含树枝,不是回路,但回路与回路的对称差应该也是回路,这显然矛盾
-
对于定理10,这样解读,图G的所有回路是一个空间(当然,回路包括基本回路,也大于基本回路),这个回路空间以图G以任意生成树T的所有基本回路Gi为基。基有多少个呢,m-n+1,所以回路空间是m-n+1维的。然后,如何用基来表示回路空间呢,对于每个基向量来说,要么系数为1要么为0,然后向量间的运算规则是对称差,用对称差来代替加法。
-
-
最小生成树
概念
- 生成树各边权值之和最小
这三个方法都是贪婪的,每一步都是局部最优,如果组合优化问题满足拟阵的结构,则可以贪婪得到最优解,如果不满足,则不可
Kruskal算法
- 算法过程:在保证不成圈的情况下一直选最小权重的边
- 定理1:由Kruskal算法得到的任何生成树一定是最小生成树
破圈法
- 算法过程:从图G的任意圈开始,去掉该圈中权值最大的一条边,称为破圈,不断破圈,知道图G中没有圈为止,最后剩下的G的子图就是G的最小生成树。
prim算法
- 算法过程:对于任意一个顶点u,选择与u关联的且权值最小的边作为最小生成树的第一条边e1,然后在剩下的边里,在与已经选取边只有一个公共端点的所有边中,选取权值最小的边,如此进行
根树
-
基本概念
- 有向树
- 入度
- 出度
- 点v的度=点v的入度+点v的出度
-
概念:一颗非平凡的有向树T,如果恰有一个顶点的入度为0,其余所有顶点的入度为1,则它是根树
- 入度为0的点是树根
- 出度为0的点为树叶
- 入度为1,出度大于等于1的点为内点
- 内点和树根统称分支点
-
根树的概念与性质
-
层数
- 点v到树根的距离
-
树高
- 所有顶点中最大的层数为树高
-
子根树
- 对于根树T,有点v及v的后代导出的子图,称为根树T对应点v的子根树
-
m元根树
- 对于根树T,每个分支点至多m个儿子
-
定理2:在完全m元根树T中,若树叶数为t,分支点数为i,则:(m-1)i = t-1
- 正面:由m = i+t-1和2m = t + m +(i-1)(m+1)可得
-
最优二元树
- 首先它是二元树,t片树叶,其次它要保证权值越小的叶子层数越大,权值越大的叶子层数越小,从而权值与层数的乘积最小
-
哈夫曼算法
- t个叶子节点,各有权值,从中选择出两个最小的,画出它俩共有的父亲节点,其父亲节点的权值为它俩的和,然后从叶子节点集合中删去它俩,加入它俩的爸,如此进行,直到集合中只剩一个点,从而哈弗曼树也画好了
- 总体的思想是,权值小的放在下面先画,然后用父亲节点代替二元组来和其他做比较