矩阵树定理解决了一张图的生成树个数计数问题。

本篇记号声明

本篇中的图,无论无向还是有向,都允许重边,但是默认没有自环。

无向图情况

设 是一个有 个顶点的无向图。定义度数矩阵 为

设 为点 与点 相连的边数,并定义邻接矩阵 为

定义 Laplace 矩阵(亦称 Kirchhoff 矩阵) 为

记图 的所有生成树个数为 。

有向图情况

设 是一个有 个顶点的有向图。定义出度矩阵 为

类似地定义入度矩阵 。

设 为点 指向点 的有向边数,并定义邻接矩阵 为

定义出度 Laplace 矩阵 为

定义入度 Laplace 矩阵 为

记图 的以 为根的所有根向树形图个数为 。所谓根向树形图,是说这张图的基图是一棵树,所有的边全部指向父亲。

记图 的以 为根的所有叶向树形图个数为 。所谓叶向树形图,是说这张图的基图是一棵树,所有的边全部指向儿子。

定理叙述

矩阵树定理具有多种形式。

定义 ,矩阵 的子矩阵 为选取 的元素得到的子矩阵。

定理 1(矩阵树定理,无向图,行列式形式)

对于无向图 和任意的 ,都有

也就是说,无向图的 Laplace 矩阵所有 阶主子式都相等,且都等于图的生成树的个数。

推论 1(矩阵树定理,无向图,特征值形式)

设 为 的 个特征值,那么有

定理 2(矩阵树定理,有向图根向树,行列式形式)

对于有向图 和任意的 ,都有

也就是说,有向图的出度 Laplace 矩阵删去第 行第 列得到的主子式等于以 为根的根向树形图的个数。

因此如果要统计一张图所有的根向树形图,只要枚举所有的根 并对 求和即可。

定理 3(矩阵树定理,有向图叶向树,行列式形式)

对于有向图 和任意的 ,都有

也就是说,有向图的入度 Laplace 矩阵删去第 行第 列得到的主子式等于以 为根的叶向树形图的个数。

因此如果要统计一张图所有的叶向树形图,只要枚举所有的根 并对 求和即可。

注

根向树形图也被称为内向树形图,但因为计算内向树形图用的是出度,为了不引起 和 的混淆,所以采用了根向这一说法。

定理证明

观察上述定理形式极为相似,这里给出一种统一的证明方式,并且将之前的结论拓展到带权的图上。

证明的大致思路如下:

  • 首先,所有情形都可以转化为计数有向图上根向树形图的情形;
  • 利用矩阵语言给出选出的若干边可以构成根向树形图的充要条件;
  • 将选边的操作利用 Cauchy–Binet 公式和 Laplace 矩阵的行列式联系起来;
  • 最后,将行列式形式的结论转化为特征值形式的结论。

引理:Cauchy–Binet 公式

引理 1(Cauchy–Binet)

给定 的矩阵 和 的矩阵 ,则有

这里求和记号的含义是, 取遍所有 中大小为 的子集。如果 ,必然有 。

用关联矩阵刻画图的结构

对于有向图 ,顶点数为 ,边数为 ,且边 赋有边权 。由此,可以定义 阶出度关联矩阵

和 阶入度关联矩阵

它们每行都记录了一条边:出度关联矩阵 记录了边的起点,入度关联矩阵 记录了边的终点。

简单计算可知

进而有

前文的 Cauchy–Binet 公式表明,Laplace 矩阵的主子式其实是一系列子结构的和。每个子结构都反映了对应的子图的性质。

引理 2

对于 的一个子图 ,若它满足 ,则子图 是一个以 为根的根向森林,当且仅当对应的算式

不为零。而且,该式当不为零时,必然等于 ,记作 。

带权有向图的矩阵树定理

现在可以证明本文的主要结果。前文所述矩阵树定理均为该定理的特殊情形。

定理 4(矩阵树定理,带权有向图根向树,行列式形式)

对于任意的 ,都有

这里, 是 的以 为根的根向树形图的集合。

当 时,每个树的权值都是 ,则左侧就是所有树的计数,即 ,这就得到定理 2。类比上文,可以将结论直接推广于叶向树形图,这就得到定理 3。最后,要得到无向图上的生成树计数,可以应用如下推论。

推论 4(矩阵树定理,带权无向图,行列式形式)

对于无向图 和任意的 ,都有

这里, 是 的生成树的集合。这也说明, 的所有 阶主子式都相等。

特征值形式

仍然首先考虑有向图上的结论。

定理 5

对于有向图 ,定义多元多项式

这里, 是指以 为对角线元素的对角矩阵。那么,

就等于 的以 为根的根向森林的(带权的)计数。

将 代入所有的未知元,得到 Laplace 矩阵的特征多项式

引理 3

Laplace 矩阵 至少有一个特征值为零。

推论 5

对于有向图 ,所有由 棵树构成的根向森林的权值的总和等于系数

定义 - 生成森林 是图的一个生成子图,使得这个子图有 个连通分量且无环。

推论 6

记无向图 的 - 生成森林 的集合为 ,则

这里, 为森林 中每个连通分量的顶点数目的乘积。特别地,当 时,有 ,故而

应用

Cayley 公式

推论 7(Cayley)

大小为 的带标号的无根树有 个。

BEST 定理

前置知识:欧拉图

这一定理将有向欧拉图中欧拉回路的数目和该图的根向树形图的数目联系起来,从而解决了有向图中的欧拉回路的计数问题。注意,任意无向图中的欧拉回路的计数问题是 NP 完全的。

在实现该算法时,应当首先判定给定图是否是欧拉图,移除所有零度顶点,然后建图计算根向树形图的个数,并由 BEST 定理得到欧拉回路的计数。注意,如果所求欧拉回路个数要求以给定点作为起点,需要将答案再乘上该点出度,相当于枚举回路中首条边。

在证明 BEST 定理之前,需要知道如下结论。

性质(有向图具有欧拉回路的判定)

一个有向图具有欧拉回路,当且仅当非零度顶点是强连通的,且所有顶点的出度和入度相等。

对于欧拉图,因为出度和入度相等,可以将它们略去上标,记作 。BEST 定理可以叙述如下。

定理 6(BEST 定理)

设 是有向欧拉图, 为任意顶点,那么 的不同欧拉回路总数 是

这也说明,对欧拉图 的任意两个节点 ,都有 。

实现

根据图写出 Laplace 矩阵,删去一行一列,求所得矩阵的行列式即可。求行列式可以使用 Gauss–Jordan 消元法。

例如,一个正方形图的生成树个数

可以用 Gauss–Jordan 消元解决,时间复杂度为 。

例题

解 矩阵树定理的裸题。将每个空房间看作一个结点,根据输入的信息建图,得到 Laplace 矩阵后,任意删掉 的第 行第 列,求这个子式的行列式即可。求行列式的方法就是高斯消元成上三角阵然后算对角线积。另外本题需要在模 的整数子环 上进行高斯消元,采用辗转相除法即可。

解 本题的解法很多,这里用矩阵树定理是最直接的解法。当输入为 时,容易写出其 阶的 Laplace 矩阵为:

求出它的 阶子式的行列式即可,剩下的只有高精度计算了。

解 本题是 BEST 定理的直接应用,但是要注意,由于题目规定「两种完成任务的方式算作不同当且仅当使用钥匙的顺序不同」,对每个欧拉回路,1 号房间可以沿着任意一条出边出发,从而答案还要乘以 1 号房间的出度。

解 首先需要用莫比乌斯反演转化成计算所有生成树的边权和,因为与本文关系不大所以略去。

将行列式的项写成 ,最后答案是行列式的一次项系数,因为答案实际上是钦定一条边之后的生成树个数 这条边的边权之和,那么被乘上一次项系数的边就是被钦定的边。此时可以把高于一次的项忽略掉,复杂度 。

「北京省选集训 2019」生成树计数 是较为一般化的情况:计算生成树权值之和的 次方之和,用类似方法构造行列式的项即可,具体见洛谷题解。

例题 5: AGC051D C4

解 无向图欧拉回路计数是 NPC 问题,但这题的图较为简单,确定了 的边中从 指向 的有多少条,就可以确定其他三条边的定向方案,然后直接套用 BEST 定理就得到 的做法。

此文件夹下有0条笔记。