学习笔记矩阵树定理(Matrix-Tree)
Posted 繁凡さん
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记矩阵树定理(Matrix-Tree)相关的知识,希望对你有一定的参考价值。
整理的算法模板合集: ACM模板
实际上是一个全新的精炼模板整合计划
目录
一、矩阵树定理
对于无向图 G G G
定义 G G G 的度数矩阵 D D D 满足:
d i j = { deg i i = j 0 i ≠ j d_{i j}=\\left\\{\\begin{array}{rl}\\operatorname{deg}_{i} & i=j \\\\0 & i \\neq j\\end{array}\\right. dij={degi0i=ji=j
即:矩阵
D
D
D 是除了对角线以外各个点值都为
0
0
0 的矩阵,D[i][i]
表示
i
i
i 号点的度数。
定义 G G G 的邻接矩阵 C C C 满足:
c i j = { 0 i = j adj i j i ≠ j c_{i j}=\\left\\{\\begin{array}{rl}0 & i=j \\\\\\text{adj}_{i j} & i \\neq j\\end{array}\\right. cij={0adjiji=ji=j
即:矩阵
C
C
C 记录两点之间的度数,C[i][j]
表示
i
i
i 号点与
j
j
j 号点之间的边数
定义 G G G 的基尔霍夫矩阵 L ( G ) = D − C L(G)=D-C L(G)=D−C, 则图 G G G 的生成树数量是 L ( G ) L(G) L(G) 的任意一个代数余子式。
矩阵树定理完整证明(包括下面的常用定理证明):https://www.luogu.com.cn/blog/juruodewo/solution-p6178
二、常用定理
定理 1(矩阵树定理,无向图行列式形式) 对于任意的 i i i,都有
t ( G ) = det L ( G ) ( 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n ) t(G) = \\det L(G)\\binom{1,2,\\cdots,i-1,i+1,\\cdots,n}{1,2,\\cdots,i-1,i+1,\\cdots,n} t(G)=detL(G)(1,2,⋯,i−1,i+1,⋯,n1,2,⋯,i−1,i+1,⋯,n)
其中记号 L ( G ) ( 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n ) \\displaystyle L(G)\\binom{1,2,\\cdots,i-1,i+1,\\cdots,n}{1,2,\\cdots,i-1,i+1,\\cdots,n} L(G)(1,2,⋯,i−1,i+1,⋯,n1,2,⋯,i−1,i+1,⋯,n) 表示矩阵 L ( G ) L(G) L(G) 的第 1 , ⋯ , i − 1 , i + 1 , ⋯ , n 1,\\cdots,i-1,i+1,\\cdots,n 1,⋯,i−1,i+1,⋯,n 行与第 1 , ⋯ , i − 1 , i + 1 , ⋯ , n 1,\\cdots,i-1,i+1,\\cdots,n 1,⋯,i−1,i+1,⋯,n 列构成的子矩阵。也就是说,无向图的 Laplace 矩阵具有这样的性质,它的所有 n − 1 n-1 n−1 阶主子式都相等。
定理 2(矩阵树定理,无向图特征值形式) 设 λ 1 , λ 2 , ⋯ , λ n − 1 \\lambda_1, \\lambda_2, \\cdots, \\lambda_{n-1} λ1,λ2,⋯,λn−1 为 L ( G ) L(G) L(G) 的 n − 1 n - 1 n−1 个非零特征值,那么有
t ( G ) = 1 n λ 1 λ 2 ⋯ λ n − 1 t(G) = \\frac{1}{n}\\lambda_1\\lambda_2\\cdots\\lambda_{n-1} t(G)=n1λ1λ2⋯λn−1
定理 3(矩阵树定理,有向图根向形式) 对于任意的 k k k,都有
t r o o t ( G , k ) = det L o u t ( G ) ( 1 , 2 , ⋯ , k − 1 , k + 1 , ⋯ , n 1 , 2 , ⋯ , k − 1 , k + 1 , ⋯ , n ) t^{root}(G,k) = \\det L^{out}(G)\\binom{1,2,\\cdots,k-1,k+1,\\cdots,n}{1,2,\\cdots,k-1,k+1,\\cdots,n} troot(G,k)=detLout(G)(1,2,⋯,k−1,k+1,⋯,n1,2,⋯,k−1,k+1,⋯,n)
因此如果要统计一张图所有的根向树形图,只要枚举所有的根 k k k 并对 t r o o t ( G , k ) t^{root}(G,k) troot(G,k) 求和即可。
定理 4(矩阵树定理,有向图叶向形式) 对于任意的 k k k,都有
t l e a f ( G , k ) = det L i n ( G ) ( 1 , 2 , ⋯ , k − 1 , k + 1 , ⋯ , n 1 , 2 , ⋯ , k − 1 , k + 1 , ⋯ , n ) t^{leaf}(G,k) = \\det L^{in}(G)\\binom{1,2,\\cdots,k-1,k+1,\\cdots,n}{1,2,\\cdots,k-1,k+1,\\cdots,n} tleaf(G,k)=detLin(G)(1,2,⋯,k−1,k+1,⋯,n1,2,⋯Matrix-Tree 定理(基尔霍夫矩阵树定理)