问题引入
基尔霍夫定理(基尔霍夫矩阵树定理)是用来解决这样一类问题:
给定一个 n 个点
m 条边的无向图,求出这个图的生成树的总数。
前置技能
基础的线性代数知识:行列式及其基本性质,矩阵,方阵的行列式及其基本性质。
Matrix-Tree Theorem
一些约定
在一开始的讨论中,我们先规定这幅图没有重边和自环。在介绍完这个定理之后,我会对该定理在一般图上的推广做简略介绍。
我们用 ai,j 表示矩阵的一个元素, Mi,j 表示矩阵的一个余子式, Ci,j 表示矩阵的一个代数余子式。
拉普拉斯矩阵
首先我们要引入图的拉普拉斯矩阵(Laplacian matrix)的概念。
无向图的拉普拉斯矩阵其实就是图的度数矩阵减去邻接矩阵:
Li,j=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪deg(vi),−1,0,if i=jif i≠j and vi is adjacent to vjotherwise
矩阵树定理
定理内容
根据矩阵树定理,无向图的生成树个数就等于这副图的拉普拉斯矩阵的任意一个代数余子式值。
定理证明
拉普拉斯矩阵的性质
首先给出拉普拉斯矩阵的两个性质:
- 定理1:拉普拉斯矩阵的任意一个代数余子式值都相同
- 证明:
- 首先可以发现,拉普拉斯矩阵的每一行、每一列的和都是 0
- 下面我们只证明同一行的两个代数余子式
Ci,j 和 Ci,k 是相同的。只需要把这个证明在同一列上推广一下即可以得出定理1。 - 考虑对 Ci,j 做矩阵的初等变换得到 Ci,k :首先我们把拉普拉斯矩阵第 k 列在余子式所在列乘上一个
−1 ,然后再把其它所有列乘上 −1 加到这一列上。因为拉普拉斯矩阵的每一行的和都是 0 ,可以发现,在经过上述过程之后,这一列就变成了拉普拉斯矩阵的第j 列。此时,矩阵的行列式要乘上一个 −1 。 - 接下来我们做 |j−k−1| 次对换把这一列换到它在 Ci,k 中的位置,此时行列式要乘上 (−1