关于矩阵树定理的一些证明
关于矩阵树定理的一些证明
在重新做今年联合省选的题目的时候发现对于矩阵树的本质了解得并不清楚
所以去研究了一下矩阵树应该要如何证明, 应该是对理解有一些帮助的
建议了解行列式定义式和行列式基本定理后再来食用
下文不再介绍行列式相关知识
定理
给定一个图 \(G\), 定义其基尔霍夫矩阵 \(L = D - A\), \(D\) 为该图的度数矩阵, \(A\) 为该图的邻接矩阵, 那么这张图的生成树个数即为 \(L\) 的任一代数余子式的值
关于基尔霍夫矩阵的一些性质
以下称基尔霍夫矩阵为 \(L\), 将 \(L\) 去掉第 \(i\) 行和第 \(i\) 列的子矩阵称为 \(M_i\)
性质1
\(|L| = 0\)
证明1
考虑到 \(L = D - A\), 所以 \(L\) 任意一行的元素的和都为 0 , 由行列式基本变换, 将所有列累加到第一列即可得到一个全 0 列, 也即 \(|L| = 0\)
性质2
\(L\) 任一代数余子式的值都相同
性质3
一个不连通图 \(G\) 的 \(L\) 及 \(M_i\) 的行列式为 0
证明3
不妨设该连通图的强连通分量分别为 \(G_1, G_2, G_3, \dots, G_k\), 我们可以将 \(L\) 变换为以下形式
其中 \(L_i\) 为 \(G_i\) 的基尔霍夫矩阵, 由性质1, \(\forall L_i, |L_i| = 0\)
又 \(k \geq 2\) , 所以任一子矩阵都会包含至少一个完整的 \(L_i\)
所以 \(|L|, |M_i|\) 均为 0
性质4
一棵树 \(G\) 的基尔霍夫矩阵的代数余子式的值为 1
证明4
考虑归纳证明
在这里认为一个空矩阵的代数余子式为 1
对于二阶基尔霍夫矩阵显然成立
不妨假设对于 \(i \in [1, n - 1]\) 阶矩阵性质4均成立, 下面证明对于 \(n\) 阶矩阵也成立
首先可将 \(M_i\) 看做是删去 \(i\) 点并在子图的基尔霍夫矩阵上将与 \(i\) 点有连边的点的度数加一所形成的新的矩阵
我们可以像证明3那样将一个联通块中的点都相邻地堆在对角线上
由于联通块之间没有连边, 我们可以像处理块状矩阵那样去处理对角线上的每一个小矩阵, 将其行列式的值乘起来即为 \(M_i\)
对于对角线上的某个小矩阵 \(L_i\), 它是由子图 \(G_i\) 的基尔霍夫矩阵上某一个点度数加一变换过来的
那么我们假设去掉了这个点所在的这一行和这一列的矩阵为 \(T_i\)
由上述假设, 容易得到 \(|T_i| = 1\)
我们再重新把这一行和这一列加回去
在原来的基尔霍夫矩阵中, 经过若干次初等变换之后, 这个在对角线上的元的值为 0
但是我们现在把他的值加了 1, 所以这个对角元变换后的值也会加 1
所以 \(|L_i| = 1\), 即 \(|M_i| = 1\)
前置定义
定义一个 \(n\) 个点 \(m\) 条边的图 \(G\) 的关联矩阵为 \(B\)
对于任意一条边 \(e_k = \{ u_k, v_k \}\), 有 \(B_{u_k, k} = 1, B_{v_k, k} = -1\)
易知 \(B\) 是一个大小为 \(n \times m\) 的矩阵
定义矩阵的转置 \(A^T\) , 满足 \(A^T_{i, j} = A_{j, i}\)
性质5
对于一个图 \(G\), 有 \(L = BB^T\)
证明5
考虑展开 \(L\) , 分 \(i = j\) 和 \(i \neq j\)
Binet-Cauchy定理
设 \(A\) 为一个大小为 \(n \times m\) 的矩阵, \(B\) 为一个大小为 \(m \times n\) 的矩阵, \(C\) 为一个大小为 $n \times n $ 的矩阵, 且 \(C = AB\)
有 \(|C| = \sum_{|S| = n}|A_S||B_S|\)
其中 \(S\) 是 \(\{1, 2, \dots, m\}\) 的一个非重子集, \(A_S\) 是 \(A\) 的列中只保留 \(S\) 中选出的那些列所构成的矩阵, \(B_S\) 是 \(B\) 的行中只保留 \(S\) 中选出的那些行所构成的矩阵
前置定理
定义 \(\lambda(P)\) 为排列 \(P\) 的逆序对数, 用小写 \(p_i\) 表达排列 \(P\) 中的第 \(i\) 个元素
定理1
设 \(P\) 为一个大小为 \(n\) 的排列, 定义 \(P'\) 为 \(P\) 的逆排列, 满足 \(P'_{p_i} = i\) , 则 \(\lambda(P)=\lambda(P')\)
证明1
考虑 \(P\) 中的一个逆序对 \((i, j)\) , 其在 \(P'\) 中仍为逆序对
考虑 \(P\) 中的一个顺序对 \((i, j)\) , 其在 \(P'\) 中仍为顺序对
定理2
设 \(P, Q\) 为大小为 \(n\) 的排列, 定义复合排列 \(O\), 满足 \(o_i=q_{p_i}\), 则 \(\lambda(P)+\lambda(Q)\) 与 \(\lambda(O)\) 同奇偶
证明2
考虑数对 \((i, j)\) 分析其在 \(P, Q\) 中是否为逆序对, 同时在 \(O\) 中是否为逆序对即可
定理3
交换排列 \(P\) 中任一两数, 排列的逆序对数变化一定是一个奇数
证明3
排列经典结论, 考虑交换两个位置, 两个位置中间的数如何改变贡献即可
证明
\(|C|=\sum_{|S|=n}|A_S||B_S|\), 先展开右边
定义排列 \(T\), 满足 \(\forall p_i = j, t_j = i\), 由定理1, 有 \(\lambda(P)=\lambda(T)\)
上述将 \(s_{p_i}\) 换成了 \(s_i\), 可以证明交换前后的结果是一样的, 这里不再赘述
定义排列 \(O\), 满足 \(o_i=q_{p_i}\), 由定理2, 有 \(\lambda(O)\) 与 \(\lambda(P)+\lambda(Q)\) 同奇偶
继续转化
接下来我们展开左边, 已知 \(C=AB\), 所以有
即, 我们需要证明
考虑等式右边那个式子的组合意义
相当于枚举排列 \(P\), 对于所有的大小为 \(n\) 的可重集合 \(T\), 满足 \(\forall i \in T, i \in [1, m]\), 再对于每个 \(i\), 把 \(A_{i, t_i}B_{t_i,p_i}\) 乘起来, 最后求和
不妨考虑集合 \(T\) 中的两个相同元素 \(t_x, t_y\), 设 \(\sigma=\sum_{i\neq x, i\neq y}A_{i,t_i}B_{t_i,p_i}\), 不妨设交换 \(p_x, p_y\) 后的排列为 \(P'\), 由定理3, 有 \(\lambda(P)\) 与 \(\lambda(P')\) 不同奇偶
又有
由于 \(\lambda(P)\) 与 \(\lambda(P')\) 不同奇偶, 所以和为 0
而对于任一有相同元素的可重集合 \(T\), 必然可以将不同的 \(P\) 分为两部分, 满足左边的任意一个 \(P\) 交换两个 在 \(T\) 中所对应的元素 的值 相同 的下标 得到的新排列在右边那个部分
所以可重集合的贡献是 0 , 那么我们就可以只算不可重集的贡献, 也就是左边那一部分
所以等号左边的值等于等号右边的值
矩阵树定理的证明
证完了上面那个定理, 我们就可以非常快速地证出矩阵树定理了
考虑 \(L\) 去掉了第 \(i\) 行和第 \(i\) 列得到的子矩阵 \(M_i\)
有
其中 \(B_i\) 为去掉了第 \(i\) 行的 \(B\), 那么对于右边那个东西, 我们如果把第 \(i\) 行重新加进去, 发现加了第 \(i\) 行后的这个 \(|B_{iS}||B^T_{iS}|\) 就是一个 \(n\) 个点 \(n - 1\) 条边的图 \(G\) 的基尔霍夫矩阵 \(L\) , 而原来没有加第 \(i\) 行的这个 \(|B_{iS}||B^T_{iS}|\) 其实就是 \(L\) 删去了第 \(i\) 行和第 \(i\) 列
我们由上面的性质4可以知道, 只有图 \(G\) 是一棵树的时候, 贡献为 1, 其余时候贡献均为 0
这也是为什么上面没有证明性质2的原因, 证完了矩阵树定理这个性质2也就得证了
至此, 我们大概是证完了矩阵树的基本内容
但其实矩阵树求的是所有树 树的边权之积 的和, 这个考虑构造基尔霍夫矩阵的时候直接改边权, 那么一棵树的基尔霍夫矩阵的代数余子式可以像上面一样证出来就是这棵树的边权和, 然后一路推下来就可以了
至于一些其他的式子, 可以考虑上述构造树的基尔霍夫矩阵的过程, 如果能够通过一些变化将树的基尔霍夫矩阵的代数余子式变成你想求的东西,那么接下来就可以直接用矩阵树定理来做了