[学习笔记] Matrix tree定理

前言

为了回归算法本身,为了搞懂算法,我参考了不同博客,并将他们做出整合和补充:

  • https://www.luogu.com.cn/blog/tanrui-2960967961/matrix-tree-ding-li-ji-ji-ying-yong#
  • https://blog.csdn.net/a_crazy_czy/article/details/72971868
  • https://www.cnblogs.com/zj75211/p/8039443.html
  • https://www.cnblogs.com/lishuyu2003/p/12093947.html

本文将分成 3 3 3个部分:行列式的性质,定理的证明,定理的应用和扩展。标记的即为暂时不懂的地方,会渐渐完善

UPD 2020/9/27:增加了一些证明,修改了一些错误之处

行列式的性质

d e t ( A ) = ∑ p ( − 1 ) r ( p ) × A 1 , p 1 × . . . . . . × A n , p n det(A)=\sum_{p}(-1)^{r(p)}\times A_{1,p_1}\times ......\times A_{n,p_n} det(A)=p(1)r(p)×A1,p1×......×An,pn

性质1:互换矩阵的两行(列),行列式变号

可以看如下示例(盗个图)
在这里插入图片描述

对于后面乘积相同的两项,我们只用考虑前面系数变化的情况,即行列式的变化情况。

此处引出一个结论,对于一个排列,交换其中两个元素,行列式变化为奇数:在这里插入图片描述

那么后面的乘积不改变,而前面的系数是一定要变号的,所以行列式变号。

性质2:如果有两行完全相同,行列式为0

交换这两行,得到的矩阵相同,行列式不变,但由 ( 1 ) (1) (1)得行列式变号,所以行列式一定为 0 0 0

性质3 如果矩阵的某一行(列)中的所有元素都乘以同一个数k,新行列式的值等于原行列式的值乘上数k

提公因数即可

类似地,如果矩阵的某一行(列)中的所有元素都有一个公因子k,则可以把这个公因子k提到行列式求和式的外面。

性质4 如果矩阵有两行(列)成比例(比例系数k),则行列式的值为 0

先把这个比例系数提出去,然后可以运用性质2

性质5 如果把矩阵的某一行(列)加上另一行(列)的k倍,则行列式的值不变

考虑行列式的计算,我们把它拆成两部分,分别是原来的部分和新加的部分(因为每一行只会选一个,看做特殊的分配率),新加的部分一定满足性质4,加上的部分行列式为 0 0 0,所以行列式不变。

优化行列式求法

综上,我们可以把矩阵消成上三角矩阵,求对角线乘积即为行列式的值,时间复杂度 O ( n 3 ) O(n^3) O(n3)

标记1:如果要求的矩阵不允许出现实数,且需要取模,可以看看给出的博客,我不会。

Matrix Tree定理的证明

内容

Kirchhoff \text{Kirchhoff} Kirchhoff 矩阵是指的对于一个图构造出来的一个矩阵,具体定义为度数矩阵减去邻接矩阵,度数矩阵指:
A i , j = { d e g i i = j 0 o t h e r w i s e A_{i,j}=\begin{cases}deg_i&i=j\\0&otherwise\\\end{cases} Ai,j={ degi0i=jotherwise

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值