首页 > 其他分享 >矩阵树定理学习笔记

矩阵树定理学习笔记

时间:2024-05-29 21:22:00浏览次数:21  
标签:text 定理 det 笔记 节点 矩阵 aligned sum

矩阵树定理学习笔记

真的,我这辈子都没有想过行列式还能用到这种地方。

定义

图的关联矩阵

对于一张有 \(n\) 个点、\(m\) 条边的图(对于无向图,可以随便定义边的方向,因为相反的边只需要将对应列乘以 \(-1\) 即可),我们定义其关联矩阵 \(M\) 满足:

\[M_{i,j}=\left\{\begin{matrix}1&e_j是节点i的入边\\-1&e_j是节点i的出边\\0&\text{otherwise}\end{matrix}\right. \]

大小是 \(n\times m\) 的。

基尔霍夫矩阵

一张图的基尔霍夫矩阵 \(L\) 定义为:

\[L_{i,j}=\left\{\begin{matrix}\text{deg}(i)&i=j\\-\text{cnt}(i,j)&i\ne j\end{matrix}\right. \]

其中 \(\text{deg}(i)\) 表示节点 \(i\) 的度数(既包含入度,也包含出度),\(\text{cnt}(i,j)\) 表示节点 \(i,j\) 之间连边的条数。更具体的,对于一张图的度数矩阵 \(D\) 和邻接矩阵 \(A\),则 \(L=D-A\),由此我们就可以在 \(O(m)\) 的时间内直接求解矩阵 \(L\)。

关于矩阵 \(L\) 还有一个性质:\(L=MM^T\)。

证明:

\[\begin{aligned}L_{i,i}&=\sum_{k=1}^{m}M_{i,k}M^T_{k,i}\\&=\sum_{k=1}^{m}M_{i,k}^2\\&=\text{deg}(i)\end{aligned}, \begin{aligned}L_{i,j}&=\sum_{k=1}^{m}M_{i,k}M^T_{k,j}\\&=\sum_{k=1}^{m}M_{i,k}M_{j,k}\\&=-\text{cnt}(i,j)\end{aligned} \]

当 \(M_{i,k}\) 有值时,就会给 \(L_{i,i}\) 增加贡献,显然这样的点有 \(\text{deg}(i)\) 个,贡献为 \(\text{deg}(i)\)。

当 \(M_{i,k},M_{j,k}\) 均有值时,就会给 \(L_{i,j}\) 增加贡献,显然两者一个为 \(1\),一个为 \(-1\),所以总共献为 \(-\text{cnt}(i,j)\)。

定理

关联矩阵与图性质的关系

选出一棵树的过程本质上就是选出 \(n-1\) 条边,那么我们从这 \(m\) 列中取出 \(n-1\) 列作为选边,并判断这样的选边是否合适。令选边集合为 \(S\) 时得到的新矩阵为 \(M[S]\),大小显然是 \(n\times(n-1)\) 的。但这样的矩阵不如方阵好研究,因此不如去掉一行。可以证明,去掉一行后整个矩阵维护的信息不会缺失(因为每一列只有两个位置可能有值,并且相加为 \(0\)),那么不妨将这样的矩阵称做 \(M_0[S]\)。考虑什么样的情况能够使得这样的方阵合法,当选出的方案中有环时,那么矩阵 \(M[S]\) 所表示的向量组一定是线性相关的,那么 \(M_0[S]\) 所表示的向量组一定是线性相关的,所以有 \(\text{det}(M_0[S])=0\)。相反的,对于合法的选点,\(\text{det}(M_0[S])=\pm1\)。考虑对于一个未被去除的叶子节点(一棵树至少有两个叶子节点,因此一定有未被去除的节点),显然这一行只有一个非零元素,用这一行进行消元,那么一定有当前行和列均只有一个非零元素,不妨将这一行和这一列忽略,考虑剩下的方阵,显然这样相当于忽略了一条边,那么一定会有新的叶子节点。那么消元后的方阵一定每一行和每一列均只有一个非零元素,那么行列式就是它们的乘积或者乘积的相反数,不难看出值仅可能为 \(\pm 1\)。

柯西-比内定理

如果 \(A\) 是 \(n\times m\) 的矩阵,\(B\) 是 \(m\times n\) 的矩阵,那么:

\[\text{det}(AB)=\sum_{S\subseteq\{1,2,\cdots,m\}\wedge |S|=n}\text{det}(A[S])\text{det}(B[S]) \]

矩阵树定理

令去除掉第 \(i\) 行第 \(i\) 列的矩阵 \(L\) 为 \(L_0\),去掉第 \(i\) 行的矩阵为 \(M_0\)。因为 \(L=MM^T\),所以 \(L_0=M_0M_0^T\)。那么根据柯西-比内定理可得:

\[\begin{aligned}\text{det}(L_0)&=\text{det}(M_0M_0^T)\\&=\sum_{S\subseteq\{1,2,\cdots,m\}\wedge|S|=n-1}\text{det}(M_0[S])\text{det}(M_0^T[S])\\&=\sum_{S\subseteq\{1,2,\cdots,m\}\wedge|S|=n-1}\text{det}(M_0[S])^2\end{aligned} \]

根据刚才推导的内容,\(S\) 显然是一种选边方案,而 \(\text{det}(M_0[S])^2\) 是否为 \(1\) 取决于选边方案是否构成一棵树,如果是一棵树,那么答案就被统计,反之则不统计。那么 \(\text{det}(L_0)\) 的含义即为生成树的个数。 显然 \(L_0\) 能够快速求解,而求行列式的复杂度是 \(O(n^3)\) 的,因此求解生成数个数的复杂度为 \(O(n^3)\)​。

关于有向图的拓展

因为有向图被恶意规定了方向,因此不能像往常一样建图,不然会导致边的关系紊乱(因为不管指向哪边都一样)。因此我们应当重新定义矩阵:

\[L_{i,j}=\left\{\begin{matrix}\text{deg}_\text{in}(i)&i=j\\-\text{cnt}(i\to j)&i\ne j\end{matrix}\right. \]

其中 \(\text{deg}_\text{in}(i)\) 表示 \(i\) 节点的入度。

更特别的,对于有向图来说,推导的过程实际上是有问题的,因为有向树分为外向树和内向树。外向树指的是所有的边由父亲指向儿子,而内向树则是所有的边由儿子指向父亲,不管哪一种,都有明显的根。因此如果随便去除某一行,那么可能导致当前方阵没有叶子节点,那么推导便失败了。因此,我们需要求以哪一个节点为根的有向树,便需要去掉哪一行。

然而此时的 \(L\ne MM^T\),因此我们需要重新找到两个矩阵使它们的乘积等于 \(L\)。

考虑到 \(\text{det}(M_0[S])\) 其实保证了当边的形状是树形的时候的值,从而保证了统计的正确性。但有向树不仅要求边的形状,同时要求的边的方向,我们考虑通过另一个矩阵来维护这一点。我们首先考虑外向树的性质:除根节点外,每个节点有且仅有一个入边,也就是说,叶子结点的那一行有且仅有一个元素 \(1\),那么边为树形时 \(\text{det}(M_0[S])=1\)。我们只需要让矩阵 \(D\) 满足当且仅当每个除根节点外的点有且仅有一个入边时 \(\text{det}(D_0[S])=1\) 成立即可。

不难看出,矩阵 \(D\) 满足:

\[D_{i,j}=\left\{\begin{matrix}1&e_j为i的入边\\0&\text{otherwise}\end{matrix}\right. \]

并且此时 \(L=MD^T\),并且 \(L=D-A\)(\(D\) 为度数矩阵)​​,因此可以求解。

证明

\[\begin{aligned}L_{i,i}&=\sum_{k=1}^{m}M_{i,k}D^T_{k,i}\\&=\sum_{k=1}^{m}M_{i,k}D_{i,k}\\&=\text{deg}_\text{in}(i)\end{aligned}, \begin{aligned}L_{i,j}&=\sum_{k=1}^{m}M_{i,k}D^T_{k,j}\\&=\sum_{k=1}^{m}M_{i,k}D_{j,k}\\&=-\text{cnt}(i\to j)\end{aligned} \]

对于内向树来说,将所有边调转方向即可得到外向树,因此反向建边后求解外向树的个数即可。

标签:text,定理,det,笔记,节点,矩阵,aligned,sum
From: https://www.cnblogs.com/DycBlog/p/18221105

相关文章

  • 04-Excel基础操作-学习笔记
    制作下拉列表应用场景:限制B列数据,只能输入现金、转账、支票具体操作:选中B列——数据选项卡——数据工具——数据验证——弹出界面如下图所示——点击设置——在允许栏下拉选择序列——在来源栏中填入依次“填入现金、转账、支票”,并用英文状态的逗号隔开——点击确定操作......
  • 【论文笔记】机器遗忘:错误标签方法
    错误标签方法来自论文:Machine Unlearning:ASurvey中总结的方法。通过给遗忘样本提供随机的错误标签,混淆模型对样本的理解,从而无法在模型中保留任何正确的信息,以达到机器遗忘的目的。这里总结了以下论文中的方法:[1]LauraGraves,VineelNagisetty,andVijayGanesh.Am......
  • 【Windows】笔记本电池用到40%左右的时候突然断电。
    目前可能的原因:电源设置问题,三个电池水平设置错误导致到BIOS错乱?一开始我老是以为是笔记本电池问题,换了新的电池也还是到36-37%附近就断电。由于一开始我设置的是水平低>关键电池电量水平>保留电池电量电脑经常到40%附近的时候(大概36-37%,具体不定)就直接电脑断电了。具体日志......
  • QGIS开发笔记(三):Windows安装版二次开发环境搭建(下):将QGis融入QtDemo,添加QGis并加载tif遥
    前言  使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车、无人船、无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇:上半部分:主要是安装好后,使用QtCreator可以使用QGIs的apps下的Qt使用对应的编译器编译不带qgis的空工程。下半部分:在上半......
  • 2024_5_29 狄尔沃斯定理(偏序集)
    偏序集中的反链是其元素两两不可比的子集,而链是其元素两两可比的子集。链分解是将偏序集中的元素划分为若干无交的链。狄尔沃斯定理指出,有限偏序集合中,包含元素最多反链的元素数等于包含链数最少的链分解的链数,这个量被定义为该偏序集的宽度。对于任意有限偏序集,其最大反链中元素......
  • 机器学习入门笔记_基本概念
    本文介绍机器学习中一些基本的概念和分类目录有监督学习回归分类无监督学习聚类降维强化学习机器学习适合的领域有监督学习是一种通过训练数据集来预测目标变量的方法,其中每个训练样本都有一个已知的标签或输出值。有监督学习的特点是“有x有y”。有监督学......
  • 打靶笔记w1r3s.v1.0
    打靶笔记w1r3s.v1.0nmap扫描与分析主机发现nmap-sn192.168.218.0/24历史版本为-sP(已经被放弃)n不进行端口扫描192.168.218.155创建文件夹保存端口信息指定最低1万速率扫描所有端口nmap-sT--min-rate10000-p-192.168.218.155nmapscan/ports-sSSYN扫描是快......
  • R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用
    目录R语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到C盘用户目录下的问题,以及一些其他需要注意的点软件版本及环境遇到的问题描述问题的分析和探究最终的解决方案折中方案根治方案其他在安装过程中需要注意的问题R语言入门学习笔记:软件安装踩坑记......
  • 关于希尔算法的学习笔记
    希尔算法的简介希尔算法是插入算法的升级版,D.L.Shell于1959提出,是一种减少增量算法,提出的过程为作者发现插入算法的时间复杂度会随着数组的有序性上升而下降,所以采用分组的算法,使各个组内变得有序,提升整体的有序性,从而减少插入算法的时间.希尔算法的原理比如说我......
  • 深度学习笔记: 详解处理类别不平衡
    欢迎收藏Star我的MachineLearningBlog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star,有问题可以随时与我交流,谢谢大家!处理类别不平衡在欺诈检测、点击预测或垃圾邮件检测等机器学习用例中,通常会遇到标签不平衡的问题。根据具体用例,可......