生成树计数的MatrixTree定理

23 篇文章 0 订阅
4 篇文章 0 订阅

在省选级别的题目里面,我们会发现有一类生成树计数的题目。就是给定一个图 G={V,E} ,问这个图生成树有多少棵(节点和边都不同)。
这里我们可以用基尔霍夫矩阵做。我们定义一个图有度数矩阵 A ,有邻接矩阵B,其中 Aii 表示节点 i 的度数,其余为0,Bij=1表示有边(i,j),反之为 0 。那么基尔霍夫矩阵就是C=AB
这里先给出结论,生成树的数量就是将 C 任意扔掉第r行第 r 列强行当做行列式求出来的值。
怎么求行列式的值呢?强行展开O(n!)?我们有更简单的方法。考虑一个上三角形式的行列式,其的值就是对角线乘积,那么这和高斯消元过程很像,我们同时还有一个性质,就是行列式里面某一行乘常数加到其他行上行列式的值是不变的,所以可以直接高斯消元成上三角形式,然后乘起来,时间复杂度 O(n3)
证明可以参照原论文。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值