[学习笔记]生成树计数&矩阵树定理

问题描述:给定n阶无向图求其生成树个数。

引入:行列式
一个n*n的矩阵A的行列式det(A)或者|A|定义为:

pP(n)(1)f(p)Πni=1Ai,pi ∑ p ∈ P ( n ) ( − 1 ) f ( p ) Π i = 1 n A i , p i

其中P(n)表示长度为n的排列的集合,f(p)表示排列p的逆序对个数。
行列式具有以下性质:
1. |A|=|AT| | A | = | A T | ,即A的行列式等于其转置矩阵的行列式。
2. |AB|=|A||B|。
3. 将A任意两行交换得到B,则|B|=-|A|。
4. 将A任意一行同时乘上x得到B,则|B|=x|A|。
5. 将A任意一行乘上x再加到另一行上,行列式不变。
考虑一帮情况下如何求行列式,朴素的方法是枚举排列;但是根据上述性质,若能将矩阵消成只有对角线有值的情形,那么此时行列式的值等于对角线的乘积,这样纪录此时和原来的行列式的比值即可。特殊的,如果对角线上有0,那么行列式=0.
6. 每行每列和=0的矩阵行列式=0.由于高斯消元的时候该性质不变因而最终最后一行前n-1个数字=0,有一位和=0故最后一行全0,行列式=0.

矩阵树定理:
先讨论简单图。
定义度数矩阵D满足D(i,i)=(点i的度数),D(i,j)=0(对于 ij i ≠ j )。
定义邻接矩阵A满足若(i,j)间有连边则A(i,j)=1,否则A(i,j)=0。
定义霍尔基弗矩阵C=D-A,即C(i,i)=(点i的度数),D(i,j)=-1当且仅当i和j间有连边( ij i ≠ j )
定义一个矩阵A的余子式M(i,j)表示A去掉第i行第j列后的行列式。

矩阵树定理:基尔霍夫矩阵C的余子式M(i,i)的行列式( 1in 1 ≤ i ≤ n )就是图G的生成树数量。

首先一些性质:
1.|C|=0。易知C的每行每列之和均为0。
2.若图G不联通则C的余子式M(i,i)的行列式=0
对点重新编号使得联通的点在主对角线上连续,则同一个联通块对应一个霍尔基弗矩阵(这是因为除了联通块内部以外没有其余边),因此去掉任意第i行和第i列之后,除了i所在的联通块的霍尔基弗矩阵外还有其它的霍尔基弗矩阵,而M(i,i)等于所有这些行列式的积(这显然),因而得证。
3.若G是一颗树则|M(i,i)|=1.
后面证明好像很咯嗦,丢一个链接:传送门

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值