矩阵树定理复习与简要证明

矩阵树定理

用处

计算无向图的生成树个数。

命题&简要证明

矩阵树定理:
给定一个有n个点的图G的邻接矩阵A和度数矩阵B(就是 B [ i ] [ i ] B[i][i] B[i][i]表示i这个点的出度,其他位置均为0),记S为G的生成树个数。设T为B-A,记T划去第k行和第k列的矩阵为P(1<=k<=n)
求证: det ⁡ ( P ) = S \det(P)=S det(P)=S
证明:
我们使用容斥原理来证明这个定理
首先对于(i,i)位置上的点,我们在行列式中选择这个点相当于为这个点选择一个父亲。
我们将矩阵的行列式的排列取出,记作g。若 g [ i ] 不 等 于 i g[i]不等于i g[i]i,则将i向g[i]连一条边,并记作图C
引理:C中是由一个个环组成的,并且是都是简单环
证明:首先如果出现了一条边x->y,则意味着一定不会有p[y]=y,所以y也一定会有一条出边,最终一定会形成一个环。
有环非简单环就意味着有一个点至少有两个出边,这个当然是不可能的
所以我们就有图C是由一个个互不相交的环构成
我们就可以进行容斥了,设 f ( i ) 表 示 每 一 个 点 选 出 父 亲 来 以 后 至 少 存 在 i 个 环 的 方 案 数 f(i)表示每一个点选出父亲来以后至少存在i个环的方案数 f(i)i
于是有 S = Σ k = 0 无 限 大 f ( k ) ∗ ( − 1 ) k S=\Sigma_{k=0}^{无限大}f(k)*(-1)^k S=Σk=0f(k)(1)k
此时发现,如果一个环的代价是-1,那么在C的代价就将是 ( − 1 ) k ∗ f ( k ) (-1)^k*f(k) (1)kf(k)
所以我们只需要证明一个环的代价为什么会是-1
证明:我们将环放在一个矩阵中
考虑数学归纳法:我们知道当环的编号是1,2,3,4……n首尾相接的时候,他的代价一定是1(奇数的时候逆序对个数是偶数,否则反之)
我们只要证明交换两个点的编号后逆序对个数的奇偶性不发生变化
可以使用矩阵来证明,具体来讲就是交换i,j两行和i,j两列(每交换一次行列式的值就取反),发现行列式刚好不变,也就证明了逆序对个数的奇偶性并不会发生变化。
当然我们也可以用普通的方法进行证明,具体的比较简单,可以自行证明

特殊命题:求完全图G的生成树个数
证明:构造G的拉普拉斯矩阵T(即矩阵树定理中的B-A)
其实就是T就是 T [ i ] [ j ] = n − 1 ( i = j ) T[i][j]=n-1(i=j) T[i][j]=n1(i=j), T [ i ] [ j ] = 1 ( i 不 等 于 j ) T[i][j]=1(i不等于j) T[i][j]=1(ij)
将T进行加减高斯消元,发现第一行加上剩下所有的行得到一个全是1的行
而此时将剩下的所有行加上第一行,最终就会得到一个对角线上分别是 1 , n , n , n , … … 1,n,n,n,…… 1,n,n,n,,其他都为0的矩阵
这个矩阵的行列式明显就是 n n − 2 n^{n-2} nn2

特殊用法

在矩阵中的每一个值其实是可以是多项式(证明如上)

你可能感兴趣的:(基础算法,算法)