第二章:树
无向树
边加权属于P问题,点加权属于NP问题
-
等价定义:设 G = < V , E > G=<V,E> G=<V,E>是 n n n阶 m m m条边的简单无向图,则下面各命题是等价的:
- G G G是树且连通无圈
- G G G中任意两个顶点之间存在唯一的路径
- G G G中无圈且 m = n − 1 m=n-1 m=n−1
- G G G是连通的且 m = n − 1 m=n-1 m=n−1
- G G G是连通的且 G G G中任何边均为桥
- G G G中无圈,但在任何两个不相邻的顶点之间加一条新边,所得图中得到唯一的一个含新边的圈
-
推论:具有 k k k个分支的森林有 n − k n-k n−k条边,其中 n n n是 G G G的顶点数。
-
性质:设 T T T是 n n n阶非平凡的无向树,则 T T T中至少有两片树叶,即至少有两个一次顶点。
2 ( n − 1 ) = ∑ d ( v i ) ⩾ x + 2 ( n − x ) x ⩾ 2 2(n-1)=\sum d(v_i)\geqslant x+2(n-x)\\ x\geqslant2 2(n−1)=∑d(vi)⩾x+2(n−x)x⩾2
森林(树)的路分解
-
引理:每颗恰有两个一次顶点的树均是路。(反证法)
-
设 G G G是森林(树)且恰有 2 k 2k 2k个奇次顶点,则在 G G G中有 k k k条边不重和的路 P 1 , P 2 , … , P k P_1,P_2,\ldots,P_k P1,P2,…,Pk,使得 E ( G ) = E ( P 1 ) ∪ E ( P 2 ) ∪ ⋯ ∪ E ( P k ) E(G)=E(P_1)\cup E(P_2)\cup\cdots\cup E(P_k) E(G)=E(P1)∪E(P2)∪⋯∪E(Pk)。(数学归纳法)
-
设 T T T是 k k k阶树,若图 G G G是满足 δ ⩾ k − 1 \delta\geqslant k-1 δ⩾k−1的简单图,则 T T T同构于 G G G的某个子图。(数学归纳法)
树的度序列
- 设 S = { d 1 , d 2 , … , d n } S=\{d_1,d_2,\ldots,d_n\} S={d1,d2,…,dn}是 n n n个正整数序列,满足 d 1 ⩾ d 2 ⩾ ⋯ ⩾ d n , ∑ d i = 2 ( n − 1 ) d_1\geqslant d_2\geqslant \cdots\geqslant d_n,\sum d_i=2(n-1) d1⩾d2⩾⋯⩾dn,∑di=2(n−1),则存在一棵树 T T T,其度序列为 S S S。(数学归纳法)
树的中心
- 离心率: e ( v ) = max { d ( u , v ) ∣ u ∈ V ( G ) } e(v)=\max\{d(u,v)|u\in V(G)\} e(v)=max{d(u,v)∣u∈V(G)}
- 图的半径: r ( G ) = min { e ( v ) ∣ v ∈ V ( G ) } r(G)=\min\{e(v)|v\in V(G)\} r(G)=min{e(v)∣v∈V(G)}
- 图的直径:最大离心率
- 图的中心点:离心率等于半径的点
- 图的中心:中心点的集合
- 定理:每棵树的中心由一个点或两个相邻点组成。(数学归纳法)
生成树
- 设
G
G
G为无向图,
- T T T为 G G G的树—— T T T是 G G G的子图并且是树。
- T T T为 G G G的生成树—— T T T是 G G G的生成子图并且是树。
- e e e为 T T T的树枝——设 T T T为 G G G的生成树, ∀ e ∈ E ( G ) \forall e\in E(G) ∀e∈E(G),若 e ∈ E ( T ) e\in E(T) e∈E(T)。
- e e e为 T T T的弦——设 T T T为 G G G的生成树, ∀ e ∈ E ( G ) \forall e\in E(G) ∀e∈E(G),若 e ∉ E ( T ) e\notin E(T) e∈/E(T)。
- 生成树 T T T的余树——导出子图 G [ E ( G ) − E ( T ) ] G[E(G)-E(T)] G[E(G)−E(T)],记作 T ˉ \bar{T} Tˉ。
- 注意: T ˉ \bar{T} Tˉ不一定连通,也不一定不含回路。
- 定理:无向图 G G G具有生成树当且仅当 G G G连通。
- 例:连通图 G G G的无圈子图 T T T是 G G G的某个生成树的子图。
- 定理:设 T T T是无向连通图 G G G的一棵生成树, e e e为 T T T的任意一条弦,则 T ∪ { e } T\cup\{e\} T∪{e}中存在只含一条弦 e e e,其他边均为树枝的圈,而且不同的弦对应的圈不同。
割集
- 设无向图 G = < V , E > G=<V,E> G=<V,E>,若存在 E ′ ⊆ E E'\subseteq E E′⊆E,且 E ′ ≠ ∅ E'\neq\varnothing E′=∅,使得 ω ( G − E ′ ) > ω ( G ) \omega(G-E')>\omega(G) ω(G−E′)>ω(G),则称 E ′ E' E′是 G G G的边割集。若 E ′ E' E′是 G G G的边割集,且对于任意的 E ′ ′ ⊂ E ′ E''\subset E' E′′⊂E′,均有 ω ( G − E ′ ′ ) = ω ( G ) \omega(G-E'')=\omega(G) ω(G−E′′)=ω(G),则称 E ′ E' E′是 G G G的极小边割集。
- 设无向图 G = < V , E > G=<V,E> G=<V,E>,若存在 V ′ ⊆ V V'\subseteq V V′⊆V,且 V ′ ≠ ∅ V'\neq\varnothing V′=∅,使得 ω ( G − V ′ ) > ω ( G ) \omega(G-V')>\omega(G) ω(G−V′)>ω(G),则称 V ′ V' V′是 G G G的点割集。若 V ′ V' V′是 G G G的点割集,且对于任意的 V ′ ′ ⊂ V ′ V''\subset V' V′′⊂V′,均有 ω ( G − V ′ ′ ) = ω ( G ) \omega(G-V'')=\omega(G) ω(G−V′′)=ω(G),则称 V ′ V' V′是 G G G的极小点割集。
- 注意:如果 G G G是连通图, ( V 1 , V 2 ) (V_1,V_2) (V1,V2)是 V V V的划分,设 [ V 1 , V 2 ] [V_1,V_2] [V1,V2]表示从 V 1 V_1 V1中的点到 V 2 V_2 V2中的点的所有边,则 [ V 1 , V 2 ] [V_1,V_2] [V1,V2]是边割集。
- 定理:设 T T T是无向连通图 G G G的一棵生成树, e e e为 T T T的任意树枝,则 G G G中存在只含树枝 e e e其他边都是弦的割集,且不同树枝对应的割集不同。
生成树的计数
-
设 G G G是连通图, T , T ′ T,T' T,T′是 G G G的两个生成树,如 E ( T ) E(T) E(T)与 E ( T ′ ) E(T') E(T′)不同,就是两个不同的生成树,个数记为 τ ( G ) \tau(G) τ(G)。
-
Cayley定理:设 e e e是连通图 G G G的一条边,则有 τ ( G ) = τ ( G − e ) + τ ( G ∘ e ) \tau(G)=\tau(G-e)+\tau(G\circ e) τ(G)=τ(G−e)+τ(G∘e),收缩边。
τ ( K n ) = n n − 2 \tau(K_n)=n^{n-2} τ(Kn)=nn−2.
若 e e e为 K n K_n Kn的一条边,则 τ ( K n − e ) = ( n − 2 ) n n − 3 \tau(K_n-e)=(n-2)n^{n-3} τ(Kn−e)=(n−2)nn−3。
证明: K n K_n Kn所有生成树的总边数为 ( n − 1 ) n n − 2 (n-1)n^{n-2} (n−1)nn−2,每条边对应的生成树的棵数为 ( n − 1 ) n n − 2 1 2 n ( n − 1 ) = 2 n n − 3 \frac{(n-1)n^{n-2}}{\frac{1}{2}n(n-1)}=2n^{n-3} 21n(n−1)(n−1)nn−2=2nn−3,所以 K n − e K_n-e Kn−e对应的生成树的棵数为 τ ( K n − e ) = n n − 2 − 2 n n − 3 = ( n − 2 ) n n − 3 \tau(K_n-e)=n^{n-2}-2n^{n-3}=(n-2)n^{n-3} τ(Kn−e)=nn−2−2nn−3=(n−2)nn−3。
最小生成树
-
Kruskal算法
-
管梅谷破圈法
-
Prim算法
有序二元树
- 树的每边规定一个方向且使得任意的 v i ∈ V ( T ) v_i\in V(T) vi∈V(T),存在有向道路 P ( v 0 , v i ) P(v_0,v_i) P(v0,vi),则称 T T T的外向树, v 0 v_0 v0叫做根,反之则称为内向树。
- T T T为外向树,对任意的顶点 v ∈ V ( T ) v\in V(T) v∈V(T),都有 d + ( v ) ⩽ σ d^+(v)\leqslant\sigma d+(v)⩽σ,则称 T T T为 σ \sigma σ元树。
- 除叶子外,每顶点皆有 σ \sigma σ子时,称为典型 σ \sigma σ元树。
- 在 v 0 v_0 v0为根, v 1 , v 2 , … , v n v_1,v_2,\ldots,v_n v1,v2,…,vn为叶的有序二元树中,路径 P ( v 0 , v i ) ( i = 1 , 2 , … , n ) P(v_0,v_i)(i=1,2,\ldots,n) P(v0,vi)(i=1,2,…,n)的长度 l i l_i li叫做叶 v i v_i vi的码长。若 v i ( i = 1 , 2 , … , n ) v_i(i=1,2,\ldots,n) vi(i=1,2,…,n)代表的事物出现的概率为 p i , ∑ i = 1 n p i = 1 p_i,\sum_{i=1}^{n}p_i=1 pi,∑i=1npi=1,使得 m ( T ) = ∑ i = 1 n p i l i = m i n m(T)=\sum_{i=1}^{n}p_il_i=min m(T)=∑i=1npili=min的有序二元树 T T T叫做带权 p 1 , p 2 , … , p n p_1,p_2,\ldots,p_n p1,p2,…,pn的Huffman树,也叫做最优二叉树。Huffman树的前缀编码称为Huffman编码。
- Huffman算法
下一章请见:
图论 | 期末复习笔记 | (三)