【学习笔记】矩阵树定理

本人数学很菜,建议少看为妙。

基本思想:用线性代数的方法来对图计数

1.1 1.1 1.1 关联矩阵 M M M:表示图的矩阵,第 i i i列表示第 i i i条边。如果第 i i i条边的起点是 u u u,那么 M u , i = 1 M_{u,i}=1 Mu,i=1;如果第 i i i条边的终点是 u u u,那么 M u , i = − 1 M_{u,i}=-1 Mu,i=1,否则 M u , i = 0 M_{u,i}=0 Mu,i=0

注意到这个矩阵的列和都是 0 0 0,所以只要知道 n − 1 n-1 n1行,就能知道另外一行。因此删去某一行后剩下的矩阵的秩不变。

1.2 1.2 1.2 定理:对于一个无向连通图, rank ( M ) = n − 1 \text{rank}(M)=n-1 rank(M)=n1

这个还是比较容易看的。从列来看的话,将 n − 1 n-1 n1条边作为基底,那么任意一条 s → t s\to t st的路径都可以用若干边拼出来;从行来看的话,相当于任取 n − 1 n-1 n1个行向量,必定线性相关,可以反证法得到不连通的结论。

显然对于任意一个无向图,有 r a n k ( M ) = n − m rank(M)=n-m rank(M)=nm,其中 m m m表示连通块数目。

1.3 1.3 1.3 定理:如果一个无向连通图 G G G,有 n − 1 n-1 n1条边能形成原图当且仅当从 M ′ M' M种选出这些列拼成一个 n − 1 n-1 n1 n − 1 n-1 n1列的矩阵 A A A, ∣ A ∣ ≠ 0 |A|\ne 0 A=0。其中 M ′ M' M是删掉其中一行后的矩阵。

这个怎么看呢,相当于这 n × ( n − 1 ) n\times (n-1) n×(n1)的矩阵的 rank = n − 1 \text{rank}=n-1 rank=n1时这个图是联通的(因为有 n − 1 n-1 n1条边所以恰好是一颗生成树),又因为删除一行后秩不变,所以等价于这 ( n − 1 ) × ( n − 1 ) (n-1)\times (n-1) (n1)×(n1)的矩阵满秩,即 ∣ A ∣ ≠ 0 |A|\ne 0 A=0

1.4 1.4 1.4 ∣ A ∣ ≠ 0 |A|\ne 0 A=0,那么 ∣ A ∣ = ± 1 |A|=\pm1 A=±1

可以考虑把删掉的那一行看成根节点,然后把行按拓扑序排序(叶节点排在前面),同时让拓扑序排第 i i i行的点对应的那条边排在第 i i i列,那么构成了一个对角线全为 ± 1 \pm1 ±1的上三角矩阵,因此 ∣ A ∣ = ± 1 |A|=\pm 1 A=±1

1.5 1.5 1.5 定义无向图的邻接矩阵 G G G, G i , j G_{i,j} Gi,j表示 i i i j j j的边的权重/条数,且有 G i , j = G j , i G_{i,j}=G_{j,i} Gi,j=Gj,i 。定义无向图的拉普拉斯矩阵 L L L L = D − G L=D-G L=DG,其中 D D D是由每个点的度数组成的一个对角矩阵。

1.6 1.6 1.6 定理:对于一个无向图, M M T = L MM^T=L MMT=L

暴力展开即可。

1.7 1.7 1.7 定理:无向连通图生成树的个数等于 L L L的任意一个 n − 1 n-1 n1阶主子式的行列式。

记这个按 ( i , i ) (i,i) (i,i)展开的 n − 1 n-1 n1阶主子式为 L ′ L' L,其对应的 M ′ M' M表示将 M M M的第 i i i行删去后的矩阵,那么 L ′ = M ′ M ′ T L'=M'M'^T L=MMT,利用 binet-cauthy \text{binet-cauthy} binet-cauthy定理展开,就相当于从中选 n − 1 n-1 n1条边求矩阵行列式的平方,如果是一颗生成树那么算出来是 1 1 1否则是 0 0 0,求和就是生成树的个数。

计算行列式复杂度为 O ( n 3 ) O(n^3) O(n3)

推广1:树形图计数

考虑内向树的情形。

此时的关联矩阵 N N N为:如果第 i i i条边的起点是 u u u,那么 N u , i = 1 N_{u,i}=1 Nu,i=1,否则 N u , i = 0 N_{u,i}=0 Nu,i=0

此时删掉第 i i i行相当于求以 i i i为内向树根的生成树个数,套路类似的按拓扑序排序后依然能得到对角线全为 1 1 1的结论,因此直接给出结论: L = M N T = D − G L=MN^T=D-G L=MNT=DG,其中 D D D是每个点出度组成的一个对角矩阵, G i , j G_{i,j} Gi,j表示 i i i j j j的有向边数目。以 i i i为根的内向生成树的数目为将 L L L的第 i i i行第 i i i列删除后的行列式。

推广2: B E S T BEST BEST定理

定义两条欧拉回路不同当且仅当经过边的顺序不同,那么对于有向图 G G G,记 d s d_s ds表示从 s s s出发的出边数目, T s T_s Ts表示以 s s s为根的内向树数目,那么以 s s s为起点的欧拉回路数目为:

F ( s ) = T s d s ! ∏ u ≠ s ( d u − 1 ) ! F(s)=T_sd_s!\prod_{u\ne s}(d_u-1)! F(s)=Tsds!u=s(du1)!

怎么来看呢,其实可以把欧拉回路看成 d f s dfs dfs的过程,那么遍历完子树后自然会走回父节点,可以看出如果我们把除 s s s外的节点的出边任意排序的话,那么树边一定是最后遍历的那一条。并且以 u u u节点来看,无论过程中怎么走,最后一步都会退回到父亲节点,类比 d f s dfs dfs的过程,我们知道最终一定会在 s s s节点处停下来。

这么说的组合意义确实太抽象了,但是我也不知道纯数学是怎么推的啊?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值