矩阵树定理
用处
计算无向图的生成树个数。
命题&简要证明
矩阵树定理:
给定一个有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=0无限大f(k)∗(−1)k
此时发现,如果一个环的代价是-1,那么在C的代价就将是
(
−
1
)
k
∗
f
(
k
)
(-1)^k*f(k)
(−1)k∗f(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]=n−1(i=j),
T
[
i
]
[
j
]
=
1
(
i
不
等
于
j
)
T[i][j]=1(i不等于j)
T[i][j]=1(i不等于j)
将T进行加减高斯消元,发现第一行加上剩下所有的行得到一个全是1的行
而此时将剩下的所有行加上第一行,最终就会得到一个对角线上分别是
1
,
n
,
n
,
n
,
…
…
1,n,n,n,……
1,n,n,n,……,其他都为0的矩阵
这个矩阵的行列式明显就是
n
n
−
2
n^{n-2}
nn−2
特殊用法
在矩阵中的每一个值其实是可以是多项式(证明如上)