矩阵树定理证明

基尔霍夫矩阵

前置知识:行列式和矩阵相关。

首先对于任意矩阵,若出现行或列的线性相关那么行列值即为\(0\),由行列式定义显然

定义对于无向图\(G(V,E)\)的关联矩阵\(B\)

\(u_i\in V,v_j\in V,e_k=(u_i,v_j)\in E\),有\(B_{ik}=1,B_{jk}=-1\)\(B_{ik}=-1,B_{jk}=1\)

定义\(B^T\)\(B\)的转置矩阵\(B^T_{ij}=B_{ji}\),观察他们两个的乘积:

\[BB^T_{ij}=\sum_{k=1}^nB_{ik}B^T_{kj}=\sum_{k=1}^nB_{ik}B^T_{jk} \]

\(B\)的第\(i\)行和\(B^T\)的第\(j\)行的点积。

同时发现如果\(i=j\)\(BB^T_{ij}=\deg_i\),如果\(i\neq j\),若有\((u_i,v_j)\in E\),则\(BB^T_{ij}=-1\),若无\((u_i,v_j)\in E\),则\(BB^T_{ij}=0\)

\(BB^T\)称为图的基尔霍夫矩阵。

注意到图的基尔霍夫矩阵\(C\)也恰好为其度数矩阵\(D\)减去其邻接矩阵\(A\)

0

由转置\(\det\)相等得行列等价,因交换\(i,j\)行或列的元产生\(2(j-i)-3\)次相邻交换,即交换行列一定会变号

其他等价于矩阵。

行列式的值为高消变成上三角然后算主对角线积

对于一个由4个\(k,k\)行列式\(a,0,c,b\)构成的大行列式\(D(2\times 2)\)\(D_1\)=\(\det(a_{i,j})\)\(D_2=\det({b_{i,j}})\),有

\(\det(D)=\det(D_1)\det(D_2)\)

证明:对\(a,b\)高消变成下三角\(p,q\),发现\(\det(D)=\prod_i^kp_i\prod_i^kq_i=\det(D_1)\det(D_2)\)

对于一个\(n\)阶行列式,如果其中第\(i\)行除了\(a_{i,j}\)外均为\(0\),那么这个行列式等于其代数余子式与\(a_{i,j}\)的乘积

证明:进行\(i-1+j-1\)次变换后为\((1,1)\)元,然后高消即为\((-1)^{i+j}A_{i,j}\times a_{i,j}\)

矩阵树定理

定义:对于一个无向图G,它的生成树个数等于其基尔霍夫矩阵矩阵\(C\)任何一个\(n-1\)阶主子式的行列式的绝对值。

余子式\(C_{i,j}\)定义为删除第\(i\)行与第\(j\)列剩下的元素构成的行列式

代数余子式\(A_{i,j}\)\((-1)^{i+j}\det(C_{i,j})\)

主子式定义为,对于任意一个\(i\),将其第\(i\)行与第\(i\)列同时删除得到的新矩阵命名为\(C_i\),也就是余子式的限制强了一些。

基尔霍夫矩阵\(C\)有如下性质

1 \(\det(C)=0\)

证明:因为是度数矩阵-邻接矩阵,所以行的和是0,即线性相关。

2 如果图是不连通的,则其任意\(n-1\)阶主子式为\(0\)

证明:考虑重变号后主对角线上处于同一个连通分量的点连续,那么对于一个大小为\(k\)的连通分量\(x\)每行仅有连续的\(k\)个元不为\(0\),因为对于一个连通图的\(C\)为0,整个行列式的值为多个行列式值的积,因此为\(0\)

3 关于树:

A:若图G是一个树,那么其\(C\)的任意主子式是1

B:若图G是一个树,那么其\(C\)\((1,1)+1\)之后得到\(C'\)

\(\det(C')=1\)

C:若图G是一个树,那么其\(C\)\((1,1)+1\)之后得到\(C',\)对于其主子式\(C_1,\det=1\)

对于证明有一个良好的手段,将树重标号,使得对于一个点\(i\),其子树内点的编号是连续的[l,r](对于主对角线上连续的一段是一个子树),然后钦点\(1\)为根。

如果B是对的,那么明显A是对的并且C也是对的。

接下来证明,如果C正确,那么B也正确。如果B正确,那么C也正确。

假设C正确。考虑证B正确,可以得到三个都正确

首先选出来的东西不能是0,这是一定的,所以对于任意一行的选择只有是相对的根节点或者[l,r]。第一行明显有两种选择,一种是选择(1,1),因为假设C正确,考虑行列式的定义,贡献是根的度数+1;如果是选择(1,i),那么一定之后会有一行选择(j,1),并且这个点j一定会和根节点有直接的边相连,因为对于一个子树的根j来说只有1和他自己能选j这一列且j这一列是必须选的,所以如果选了(1,j),一定要选(j,1)

如果选了(1,i)和(i,1),因为两者都是-1且造成一个逆序对,中间的逆序对个数一定是偶数因此一个i的贡献是-1,因为i有根的度数个,所以(1,1)+1之后行列式为1,所以B正确。

Binet-Cauchy定理

两个矩阵A和B,A是\(n*m\)的,

而B是\(m*n\)的,那么\(\det(AB)=\)

(1).0 当n>m

(2).\(\det(A)\det(B)\),当n=m

(3).\(\sum_{1\leq k_1< k_2\leq ...<k_n\leq s} \det(A)(12...n;k_1k_2...k_n)\det(B)(k_1k_2...k_n;12...n)\)

接下来考虑任意主子式的行列式套进去是什么,定义B是关联矩阵

\(\vert C_i\vert = \vert B_i^TB_i\vert=\sum_{\vert s\vert=n-1}\vert B_{i_{s_*}}^TB_{i_{*s}}\vert=\sum_{\vert s\vert=n-1}\vert B_{i_{*s}}\vert^2\)

实际上就是原图选了\(n-1\)条边之后基尔霍夫矩阵行列式的余子式

因为不连通和成环均为0,所以只剩下树的为1的贡献,即无根有标号生成树个数

别忘了是无根的

但是实际上算的时候是边权积,所以算出来的生成树是边权积的和

举例

考虑完全图的n个点的有标号无根树计数,

考虑去掉1的主子式,然后第一行加上其余行变成全1,然后用第一行去加其余行,那么除了主对角线上是1,n,n...,n以外其余均为0,

那么就是\(n^{n-2}\)

posted @ 2019-11-04 10:21  ComeIntoCalm  阅读(...)  评论(...编辑  收藏