首页 > 编程语言 >算法学习笔记(25): 矩阵树定理

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

时间:2023-06-16 19:11:26浏览次数:39  
标签:25 sum 矩阵 外向 算法 无向 prod 定理

矩阵树定理

本文不作为教学向文章。

比较好的文章参考:

对于无向图

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

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

\[\sum_{T} \prod_{e \in T} w_e \]

求行列式的矩阵为 \(D - A\),也就是度数矩阵 \(D\) 减去邻接矩阵 \(A\)。

其中 \(A_{i, j} = \sum w(i, j)\),也就是 \(i \to j\) 的边的边权之和(允许重边)。

其中 \(D_{i, i} = \sum_j w(i, j)\),也就是所有通向 \(i\) 的边的边权之和。

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

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


[SDOI2014]重建 - 洛谷 中,求的是 \(\sum_T \prod_{e \in T} p_e \prod_{e \not\in T} (1 - p_e)\)。

我们可以轻易的把 \(\prod_{e \not\in T} (1 - p_e)\) 它变为 \(\cfrac {\prod_e (1 - p_e)}{\prod_{e \in T} (1 - p_e)}\)。

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

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


对于有向图

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

只是注意两个点:

  • 内向树和外向树

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

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

此时 \(D\) 需要有变化:\(D_{i, i} = \sum_j w(i, j)\) 就是根向外指,是外向树。如果为 \(\sum_j w(j, i)\) 则是内向树。

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

标签:25,sum,矩阵,外向,算法,无向,prod,定理
From: https://www.cnblogs.com/jeefy/p/17486347.html

相关文章

  • fload算法的一个小细节
    今天在写题目的时,对的思路但是一直卡了一个点,后来经过查找原来是fload算法忽略的一个小细节,以前从来还没有注意到这个小细节,现在把这个细节记录下来这是原本的代码 for(inti=1;i<=n;i++){ for(intj=1;j<=n;j++){ for(intk=1;k<=n;k++){ if(i==j)continue; dis......
  • AtCoder Beginner Contest 253 Ex We Love Forest
    洛谷传送门AtCoder传送门没做出来。考虑求出方案数后除以\(m^i\)求出概率。设\(U=\{1,2,...,n\}\)。因为题目限制了加几条边,不妨设\(f_{i,S}\)为,加了\(i\)条边,\(S\)形成森林且\(U\setminusS\)没有边的方案数。转移枚举子集\(T\),钦定\(T\)为树,设\(T\)......
  • 代码随想录算法训练营第九天| 232.用栈实现队列 225. 用队列实现栈
    232.用栈实现队列注意:1,构造函数不需要2,需要有两个成员变量inout代码:1classMyQueue{2public:3stack<int>in;4stack<int>out;5MyQueue(){67}89voidpush(intx){10in.push(x);11}1213intpop(){1......
  • 粮油质量追溯系统源码,基于物联网技术、RFID技术和RSA、PGP加密算法开发的粮油质量追溯
    基于物联网技术、RFID技术和RSA、PGP加密算法开发的粮油质量追溯系统粮油安全关系千千万万消费者的健康问题。近年来,许多食品行业安全事故频频涌现,成为社会关注焦点。粮油生产加工质量管控防伪溯源系统为粮油企业提供从生产、加工、销售等各环节的完整记录,切实消除粮油安全隐患,降低......
  • 算法练习-day9
    栈和队列232.用栈实现队列题意:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)实现MyQueue类:voidpush(intx):将元素x推到队列的末尾intpop():从队列的开头移除并返回元素intpeek():返回队列开头的元素booleanempty():如果......
  • 深度学习实践篇[17]:模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、Ti
    深度学习实践篇[17]:模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、TinyBERT1.模型压缩概述1.2模型压缩原有理论上来说,深度神经网络模型越深,非线性程度也就越大,相应的对现实问题的表达能力越强,但相应的代价是,训练成本和模型大小的增加。同时,在部署时,大模型预测......
  • AtCoder Beginner Contest 251 G Intersection of Polygons
    洛谷传送门AtCoder传送门经典结论,一个点\(P(x,y)\)在一个凸多边形内部\(S=\{(x_i,y_i)\}\)的充要条件是\(\foralli\in[1,n],(x_{i+1}-x_i,y_{i+1}-y_i)\times(x-x_i,y-y_i)\ge0\),其中\(S\)的点按照逆时针排列。然后我们运用叉积的一个性质......
  • k均值聚类算法_异常数据检测
    k均值聚类_异常检测先来张图,快速理解正常数据应该分布在两个簇中异常数据,距离两个簇都很远fromsklearn.clusterimportKMeansfromscipy.spatial.distanceimportcdistimportnumpyasnpimportmatplotlib.pyplotaspltif__name__=='__main__':#正常......
  • 代码随想录算法训练营第八天| 28. 实现 strStr() 459.重复的子字符串
    28.实现strStr()  难点:1,制作KMP算法2,next数组要求的是,找到的下标:0/s[i]==s[j]才可以跳出来代码:1vector<int>getNextList(stringneedle)2{3vector<int>next(needle.size());4intj=0;5next[0]=0;67for(inti=1;i......
  • 学不会的高精度算法
    前言在洛谷水题的时候发现本蒟蒻是连高精度都不会的蒟蒻中的蒟蒻,所以想要浅浅学习一下什么是高精度算法高精度算法(HighAccuracyAlgorithm)是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我......