矩阵树定理学习笔记

用来求和一个图的生成树个数相关的算法,时间复杂度 O(n3)

你要会求一个矩阵的行列式,这是 和行列式有关的前置知识

定理阐述

对于无向图

定义度数矩阵 Di,j=[i=j]degi,其中 degi 表示 i 的度数。

定义邻接矩阵为 Ei,j 为边 (i,j) 的个数。

定义 Kirchhoff 矩阵为 L=DE,则把 L 去掉第 i 行和第 i 列(i 是这棵树的根,因为是无向图,所以随意),这个无向图的生成树个数为剩下矩阵的行列式。

对于内向生成树

定义度数矩阵 Di,j=[i=j]degi,其中 degi 表示 i 的出度。

定义邻接矩阵为 Ei,j 为边 (i,j) 的个数。

定义 Kirchhoff 矩阵为 L=DE,则把 L 去掉第 i 行和第 i 列(i 是这棵树的根),这个无向图的生成树个数为剩下矩阵的行列式。

对于外向生成树

定义度数矩阵 Di,j=[i=j]degi,其中 degi 表示 i 的如度。

定义邻接矩阵为 Ei,j 为边 (i,j) 的个数。

定义 Kirchhoff 矩阵为 L=DE,则把 L 去掉第 i 行和第 i 列(i 是这棵树的根),这个无向图的生成树个数为剩下矩阵的行列式。

利用行列式性质的证明

只证明无向图的情况,对于内向生成树和外向生成树的情况是类似的。

行列式:det(A)=p1,2n(1)π(p)i=1nai,pi

钦定父亲,也就是行列式里枚举的排列,后面的连乘数值上这种情况的方案数,当 pi=i 时表示点 i 可以随便选父亲,因此有度数种情况。

如果出现了环,假设长度为 k,那么这个环对 (1)π(p) 的影响是 (1)k1 的。但由于 Kirchhoff 矩阵为 L=DE,边权乘了 1,所以它实际上对系数的影响是 (1)2k1=1

一个环对系数的影响是 1,可以看作容斥系数,所以行列式的值就是生成树的个数。

BEST 定理

对于一个有向欧拉图,不同的欧拉回路个数是所有点入度减一的阶乘的乘积,乘以内向生成树的个数。

posted @   fydj  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示