算法学习笔记(25): 矩阵树定理

矩阵树定理

本文不作为教学向文章。

比较好的文章参考:

对于无向图

无向图中应该是矩阵树定理的常用场景。

无向图的矩阵树定理讲的是:

TeTwe

求行列式的矩阵为 DA,也就是度数矩阵 D 减去邻接矩阵 A

其中 Ai,j=w(i,j),也就是 ij 的边的边权之和(允许重边)。

其中 Di,i=jw(i,j),也就是所有通向 i 的边的边权之和。

这好像在无向图中也适用。

如果我们需要计数的话,就把边权设为 1 即可。


[SDOI2014]重建 - 洛谷 中,求的是 TeTpeeT(1pe)

我们可以轻易的把 eT(1pe) 它变为 e(1pe)eT(1pe)

剩下的就简单了。于是余下的是建矩阵的问题。

根据上面所说,也很简单了。


对于有向图

A,D 的定义与上面类似。

只是注意两个点:

  • 内向树和外向树

在求 det 的时候需要删掉一行,删掉的那一行作为的是根!

内向树和外向树?内向即是指向根的方向,外向即是根向外指。

此时 D 需要有变化:Di,i=jw(i,j) 就是根向外指,是外向树。如果为 jw(j,i) 则是内向树。

无向图中随意,因为无论外向还是内向结果都是一样的。


拓展 - 求和

生成树求和,具体来说就是求 TeTw(e)

稍微扩展一下,求 T(eTw(e))k

首先观察到 (wi)k=ai=kk!ai!wiai,整理一下得到:=k!ai=kwiaiai!。后面这部分很像 EGF,所以对于每一个边建立其边权的 EGF,得到最终的答案为 k![xk]TeTF(e)(e)

后面这个部分很像矩阵树定理,于是套用高斯消元的板子,只是其元素变成了 F(e) 而已。

如果存在一个多项式没有逆,这是不可以的,根据矩阵树定理,如果一个图联通,那么其行列式不为 0,也就是这个矩阵存在逆。而对于没有逆的多项式,其满足 [x0]F(x)=0,但是对于常系数来说,其与正常的矩阵树是一样的,所以一定存在一个 [x0]F(x)0 的多项式,其一定有逆。

但是如果图不连通……其结果为 0 即可。

于是对于求和的问题,就可以 O(22n3) 的求解了,对于一般的问题可以 O(n3k2) 的完成,其中 O(k2) 是给多项式乘法和求逆的。。

posted @   jeefy  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示