矩阵树定理
Kirchhoff 矩阵树定理(简称矩阵树定理)解决了一张图的生成树个数计数问题。
本篇记号声明
本篇中的图,无论无向还是有向,都允许重边,但是不允许自环。
无向图情况
设 是一个有 个顶点的无向图。定义度数矩阵 为:
设 为点 与点 相连的边数,并定义邻接矩阵 为:
定义 Laplace 矩阵(亦称 Kirchhoff 矩阵) 为:
记图 的所有生成树个数为 。
有向图情况
设 是一个有 个顶点的有向图。定义出度矩阵 为:
类似地定理入度矩阵
设 为点 指向点 的有向边数,并定义邻接矩阵 为:
定义出度 Laplace 矩阵 为:
类似地定义入度 Laplace 矩阵 。
记图 的以 为根的所有根向树形图个数为 。所谓根向树形图,是说这张图的基图是一棵树,所有的边全部指向父亲。
记图 的以 为根的所有叶向树形图个数为 。所谓叶向树形图,是说这张图的基图是一棵树,所有的边全部指向儿子。
定理叙述
矩阵树定理具有多种形式。其中用得较多的是定理 1、定理 3 与定理 4。
定理 1(矩阵树定理,无向图行列式形式) 对于任意的 ,都有
其中记号 表示矩阵 的第 行与第 列构成的子矩阵。也就是说,无向图的 Laplace 矩阵具有这样的性质,它的所有 阶主子式都相等。
定理 2(矩阵树定理,无向图特征值形式) 设 为 的 个非零特征值,那么有
定理 3(矩阵树定理,有向图根向形式) 对于任意的 ,都有
因此如果要统计一张图所有的根向树形图,只要枚举所有的根 并对 求和即可。
定理 4(矩阵树定理,有向图叶向形式) 对于任意的 ,都有
因此如果要统计一张图所有的叶向树形图,只要枚举所有的根 并对 求和即可。
BEST 定理
定理 5 (BEST 定理) 设 是有向欧拉图,那么 的不同欧拉回路总数 是
注意,对欧拉图 的任意两个节点 ,都有 ,且欧拉图 的所有节点的入度和出度相等。
例题
例题 1
HEOI2015: 小 Z 的房间,请参考https://www.lydsy.com/JudgeOnline/problem.php?id=4031
解 矩阵树定理的裸题。将每个空房间看作一个结点,根据输入的信息建图,得到 Laplace 矩阵后,任意删掉 L 的第 行第 列,求这个子式的行列式即可。求行列式的方法就是高斯消元成上三角阵然后算对角线积。另外本题需要在模 的整数子环 上进行高斯消元,采用辗转相除法即可。例题 2
FJOI2007: 轮状病毒。请参考https://www.lydsy.com/JudgeOnline/problem.php?id=1002
解 本题的解法很多,这里用矩阵树定理是最直接的解法。当输入为 时,容易写出其 阶的 Laplace 矩阵为:
求出它的 阶子式的行列式即可,剩下的只有高精度计算了。例题 2+
将例题 2 的数据加强,要求 ,但是答案对 1000007 取模。(本题求解需要一些线性代数知识)
解 推导递推式后利用矩阵快速幂即可求得。推导递推式的过程。警告:过程冗杂
注意到 删掉第 1 行第 1 列以后得到的矩阵很有规律,因此其实就是在求矩阵
的行列式。对 的行列式按第一列展开,得到
上述三个矩阵的行列式记为 。注意到 是三对角行列式,采用类似的展开的方法可以得到 具有递推公式 。类似地,采用展开的方法可以得到 ,以及 。将这些递推公式代入上式,得到
于是猜测 也是非齐次的二阶线性递推。采用待定系数法可以得到最终的递推公式为
改写成 后,采用矩阵快速幂即可求出答案。
例题 3
BZOJ3659: WHICH DREAMED IT
解 本题是 BEST 定理的直接应用,但是要注意,由于题目规定“两种完成任务的方式算作不同当且仅当使用钥匙的顺序不同”,对每个欧拉回路,1 号房间可以沿着任意一条出边出发,从而答案还要乘以 1 号房间的出度。
注释
根向树形图在一些地方被称为内向树形图,但因为计算内向树形图用的是出度,为了不引起 in 和 out 的混淆,所以采用了根向这一说法。
build本页面最近更新:,更新历史
edit发现错误?想一起完善? 在 GitHub 上编辑此页!
people本页面贡献者:
copyright本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用