算法学习笔记(25): 矩阵树定理
1.算法学习笔记(∞):杂项2.算法学习笔记(1): 欧几里得算法及其扩展3.算法学习笔记(2): 欧拉定理与逆元4.算法学习笔记(3): 倍增5.算法学习笔记(3.1): ST算法6.算法学习笔记(4): 并查集及其优化7.算法学习笔记(5): 最近公共祖先(LCA)8.算法学习笔记(6): 树链剖分9.算法学习笔记(7): 二分图10.算法学习笔记(8): 网络流11.算法学习笔记(8.0): 网络流前置知识12.算法学习笔记(8.1): 网络最大流算法 EK, Dinic, ISAP13.算法学习笔记(8.2): 上下界网络流14.算法学习笔记(8.3): 网络最大流 - 模型篇15.算法学习笔记(9): 中国剩余定理(CRT)以及其扩展(EXCRT)16.算法学习笔记(10): BSGS算法及其扩展算法17.算法学习笔记(11): 原根18.算法学习笔记(12): 线性基19.算法学习笔记(13): Manacher算法20.算法学习笔记(14): 字符串哈希21.算法学习笔记(15): Trie(字典树)22.算法学习笔记(16): 组合数学基础23.算法学习笔记(17): 快速傅里叶变换(FFT)24.算法学习笔记(18): 平衡树(一)25.算法学习笔记(19): 树上启发式合并(DSU on tree)26.算法学习笔记(20): AC自动机27.算法学习笔记(21): 平衡树(二)28.算法学习笔记(22): 逆序对与原序列29.算法学习笔记(23): 马尔可夫链中的期望问题30.算法学习笔记(24): 狄利克雷卷积和莫比乌斯反演
31.算法学习笔记(25): 矩阵树定理
32.算法学习笔记(26): 计算几何33.算法学习笔记(27): 后缀结构34.算法学习笔记(28): 筛法35.算法学习笔记(29):分块36.算法学习笔记(30):Kruskal 重构树37.算法学习笔记(31): 李超线段树38.算法学习笔记(32): 分治39.算法学习笔记(33): 格路径与计数40.算法学习笔记(34): 矩阵乘法与线段树标记41.算法学习笔记(35): CMD Tree42.算法学习笔记(36): 期望中的停时43.算法学习笔记(37): 点分治,边分治小记44.算法学习笔记(38): 矩阵45.算法学习笔记(39): 2-SAT46.算法学习笔记(40): 具体数学47.算法学习笔记(41): 朴素多项式算法48.算法学习笔记(42): 颜色段均摊49.算法学习笔记(43): 可持久化线段树 - 区间加!50.算法学习笔记(44): 二维问题小计51.算法学习笔记(45): 快速沃尔什变换 FWT52.算法学习笔记(46): 离散余弦变换(DCT)矩阵树定理
本文不作为教学向文章。
比较好的文章参考:
对于无向图
无向图中应该是矩阵树定理的常用场景。
无向图的矩阵树定理讲的是:
求行列式的矩阵为 ,也就是度数矩阵 减去邻接矩阵 。
其中 ,也就是 的边的边权之和(允许重边)。
其中 ,也就是所有通向 的边的边权之和。
这好像在无向图中也适用。
如果我们需要计数的话,就把边权设为 即可。
在 [SDOI2014]重建 - 洛谷 中,求的是 。
我们可以轻易的把 它变为 。
剩下的就简单了。于是余下的是建矩阵的问题。
根据上面所说,也很简单了。
对于有向图
的定义与上面类似。
只是注意两个点:
-
内向树和外向树
-
根
在求 的时候需要删掉一行,删掉的那一行作为的是根!
内向树和外向树?内向即是指向根的方向,外向即是根向外指。
此时 需要有变化: 就是根向外指,是外向树。如果为 则是内向树。
无向图中随意,因为无论外向还是内向结果都是一样的。
拓展 - 求和
生成树求和,具体来说就是求 。
稍微扩展一下,求 。
首先观察到 ,整理一下得到:。后面这部分很像 EGF,所以对于每一个边建立其边权的 EGF,得到最终的答案为 。
后面这个部分很像矩阵树定理,于是套用高斯消元的板子,只是其元素变成了 而已。
如果存在一个多项式没有逆,这是不可以的,根据矩阵树定理,如果一个图联通,那么其行列式不为 ,也就是这个矩阵存在逆。而对于没有逆的多项式,其满足 ,但是对于常系数来说,其与正常的矩阵树是一样的,所以一定存在一个 的多项式,其一定有逆。
但是如果图不连通……其结果为 即可。
于是对于求和的问题,就可以 的求解了,对于一般的问题可以 的完成,其中 是给多项式乘法和求逆的。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?