zoukankan      html  css  js  c++  java
  • 矩阵树定理证明

    基尔霍夫矩阵

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

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

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

    (u_iin V,v_jin 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 eq 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 imes 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_iprod_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} imes 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_{1leq k_1< k_2leq ...<k_nleq s} det(A)(12...n;k_1k_2...k_n)det(B)(k_1k_2...k_n;12...n))

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

    (vert C_ivert = vert B_i^TB_ivert=sum_{vert svert=n-1}vert B_{i_{s_*}}^TB_{i_{*s}}vert=sum_{vert svert=n-1}vert B_{i_{*s}}vert^2)

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

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

    别忘了是无根的

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

    举例

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

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

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

  • 相关阅读:
    暑假学习
    暑假学习
    暑假学习
    暑假学习
    暑假学习
    经验教训+总结
    NT 时刻
    联赛模拟测试 17
    联赛模拟测试 16
    联赛模拟测试 15
  • 原文地址:https://www.cnblogs.com/cjc030205/p/11790737.html
Copyright © 2011-2022 走看看