Matrix-Tree 定理 BEST 定理

news/2024/11/13 2:13:54/文章来源:https://www.cnblogs.com/notears/p/18540728

矩阵树定理

  • 感谢这篇文章对我更深层次理解矩阵树定理的帮助。

预备知识

行列式

图的关联矩阵

对于一张无向图 \(G=(V,E)\),定义其关联矩阵 \(M\) 为(在此我们给边暂定方向,一条边 \(e\) 的入点和出点分别为 \(\text{in}(e)\)\(\text{out}(e)\)):

\[M_{i,j}=\begin{cases}1&V_i=\text{out}(E_j)\\-1&V_i=\text{in}(E_j)\\0&\text{otherwise.}\end{cases} \]

Laplacian Matrix

定义 \(\text{cnt}(u,v)\) 表示无向图中边 \((u,v)\) 的数量,则图 \(G=(V,E)\) 的 Laplacian Matrix \(L\)

\[L_{i,j}=\begin{cases}\text{deg}(V_i)&i=j\\-\text{cnt}(V_i,V_j)&i\not=j\end{cases} \]

即为图的度数矩阵 \(D\) 减去图的邻接矩阵 \(E\)

其中有等式 \(L=MM^T\),可以分讨 \(i=j\)\(i\not= j\) 的关系来证明。

Cauchy-Binet Formula

\(C_{n\times n}=A_{n\times m}B_{m\times n}\)\(A[S]\) 表示选出 \(A\) 所有 \(\in S\) 的列构成的矩阵,\(B[S]\) 表示选出 \(B\) 所有 \(\in S\) 的行构成的矩阵,则有:

\[\det(C)=\sum\limits_{S\subset\{1,\cdots,m\},|S|=n}\det(A[S])\det(B[S]) \]

下面矩阵 \(A\) 中选出所有 \(\in S\) 的行 / 列构成的矩阵行列式统写为 \(\det(A[S])\),因为 \(\det(A)=\det(A^T)\)

证明略,详细可看 sys 博客。

无向图的 Matrix-Tree 定理

\(L_0\) 为无向图的 Laplacian Matrix 去掉第 \(k\) 行第 \(k\) 列(\(k\) 任意),则无向图的生成树个数为 \(\det(L_0)\)

证明

\(M_0\) 表示 \(L_0\) 对应的关联矩阵,则:

\[\begin{aligned}\det(L_0)&=\sum\limits_{S\subset\{1,\cdots,m\},|S|=n-1}\det(M_0[S])\det(M_0^T[S])\\&=\sum\limits_{S\subset\{1,\cdots,m\},|S|=n-1}\det(M_0[S])^2\end{aligned} \]

观察从 \(M_0\) 中选 \(\in S\) 的列向量构成的矩阵,相当于从 \(m\) 条边里面选 \(n-1\) 条边,且如果出现环矩阵应该是不满秩的,此时 \(\det(M_0[S])^2=0\),否则我们可以类似高斯消元从叶子到根把矩阵消成每行每列只有一个元素,且为 \(-1/1\),此时 \(\det(M_0[S])^2=1\)

这里还有另一种简洁证法,不多阐述。

有向图的 Matrix-Tree 定理

\(D_{\text{in}}\)\(D_{\text{out}}\) 分别为图 \(G\) 的入度矩阵和出度矩阵,对应 \(E_{\text{in}} / L_{\text{in}}\)\(E_{\text{out}} / L_{\text{out}}\),则:

  • \(r\) 为根的叶向树个数为 \(L_{\text{in}}\) 去掉第 \(r\) 行第 \(r\) 列后的行列式。
  • \(r\) 为根的根向树个数为 \(L_{\text{out}}\) 去掉第 \(r\) 行第 \(r\) 列后的行列式。

证明比较相似,分别证明 \(L_{\text{in}}=MD_{\text{in}}^T\),然后 \(\det(M)\) 限制树无环,\(\det(D_{\text{in}})\) 限制除 \(r\) 恰好都有一条入边,\(\text{out}\) 同理。

带权图的 Matrix-Tree 定理

把权值看成重边即可。

BEST 定理

令一个有向图 \(G=(V,E)\) 的根向生成树为 \(\mathcal T_{\text{out}}(G)\),则若此图为欧拉图,则 \(s\) 出发并从 \(s\) 结束的欧拉回路条数为 \(d\mathcal T_{\text{out}}(G)\prod\limits_{u\in V}(\text{deg}(u)-1)\)。其中当循环同构算一种方案时,\(d=1\),否则 \(d=\text{deg}(s)\)

证明

以下证明基于 \(d=\text{deg}(s)\)

式子的意思即为我们在原图中钦定每个点最后走的边作为根向树(除了 \(s\)),其他的边任意排列,我们只要证明这两者是双射关系。

  • 根向树对应欧拉回路

考虑这样的走法:从根节点开始按顺序走,只有当前节点 \(u\) 除了 \((u,fa_u)\) 的边都被走过了,再走这条边。

考虑是否能保证每条边都被走过。

如果走到 \(u\not = rt\) 走不下去了,根据欧拉图定义,这种情况不可能存在。

如果走到 \(u=rt\) 走不下去了,则存在一条内向树边未走,则这条边到根的所有边都未走,根据欧拉图定义可以退出根节点有至少一条出边未走,矛盾。

  • 欧拉回路对应根向树

我们提出欧拉路中每个点最后走的出边(除了 \(s\)),一定是根向树。如果出现了环,说明一个点绕了一圈,但是走不出去了,不满足欧拉回路的性质。

故双射关系得证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832038.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

System

System 类常见的成员方法:图1System 是一个工具类, 提供了一些与系统相关的方法. public static void exit(int status) // 终止当前运行的 Java 虚拟机status 是一个状态码, 有两种情况, 第一种情况是等于 0, 表示当前虚拟机是正常停止的. 第二种情况是非零, 一般是写 1, 表示…

Java中的 Exception 和 Error 有什么区别

Java中的 Exception 和 Error 有什么区别Exception 和 Error 都是 Throwable 类的子类(在Java代码中只有继承了 Throwable 类的实例才可以被 throw 或者被 catch)它们表示在程序运行时发生的异常或错误情况。 总结来看: Exception 表示可以被处理的程序异常,Error 表示系统…

数据采集与融合技术实验课程作业三

数据采集与融合技术实验课程作业三作业所属课程 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology作业链接 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology/homework/13287gitee码云代码位置 https://gitee.com/wang-qi…

HTTPS ppt素材

本来的主题是介绍一下我之前做的搜索与推荐的业务,但9月份开始我主要开始承担一些医那块的业务测试,就想做点别的分享,但换成医的业务介绍,想了想我目前对医的了解程度,实在没勇气拿出来分享,所以就换了这个主题。 这个主题其实也是早有预谋,一个初衷是想对某一个通用性…

jvm 堆内存

堆、方法区、直接内存,多个线程之间是共享的。 ------------ 堆内存是会溢出的。 堆内存默认最大是7G

CdnCheck工具

前言:CdnCheck工具实现,记录下我这边实现的几个点 参考文章:https://github.com/projectdiscovery/cdncheck 参考文章:https://github.com/YouChenJun/CheckCdn 参考文章:https://github.com/zu1k/nali 参考文章:https://github.com/u9sky/cdn-cname-domain/blob/main/cd…

考研打卡(14)

开局(14) 开始时间 2024-11-11 20:21:43 结束时间 2024-11-11 22:00:55今天考研数学的资料到了数据结构设一组初始记录关键字序列为(50,40,95,20,15,70,60,45), 则以增量d=4的一趟希尔排序结束后前4条记录关键字为_____(中国地质大学2017年) A 40,50,20,95 B 15,40,6…

说明与笔记导航(咕咕咕)

对使用这些笔记的同学想说的话,以及更新进度。为什么写这么多B东西? 其一呢是帮助我自己,边写笔记边梳理知识;其二呢是帮助各位义父义母考试成功。 更新进度与内容说明 11.11:本周工作日需突击学习python,有限体积N-S方程推导已写完。 目前进度:3009 建模:数值方法写完…

运用Windows API进行编程

目录运用Windows API进行编程实验环境窗口创建基本流程基本代码流程1、头文件和库2、全局变量和函数3、入口主函数4、注册窗口类函数5、创建和显示窗口函数6、窗口过程函数运行结果实验小结 运用Windows API进行编程 运行Windows应用程序在桌面显示Windows窗口。窗口内背景色为…

Windows API窗口绘图程序设计

目录Windows API窗口绘图程序设计1、窗口过程函数2、WM_LBUTTONDOWN:处理鼠标左键按下的消息鼠标消息相关知识点基本鼠标消息双击消息附带信息滚轮消息附带信息:3、WM_PAINT:处理窗口重绘的消息窗口绘图相关知识点窗口绘图基本流程开始绘画绘制封闭图形(能使用画刷填充的图形…

Matlab常用的图像属性

线型、标记和颜色 线型、标记和颜色,指定为包含符号的字符串或字符向量。符号可以按任意顺序显示。不需要同时指定所有三个特征(线型、标记和颜色)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB …

jvm Java虚拟机栈——栈内存溢出

----------- ---------------------- -----------------