矩阵树定理
- 感谢这篇文章对我更深层次理解矩阵树定理的帮助。
预备知识
行列式
图的关联矩阵
对于一张无向图 \(G=(V,E)\),定义其关联矩阵 \(M\) 为(在此我们给边暂定方向,一条边 \(e\) 的入点和出点分别为 \(\text{in}(e)\) 和 \(\text{out}(e)\)):
Laplacian Matrix
定义 \(\text{cnt}(u,v)\) 表示无向图中边 \((u,v)\) 的数量,则图 \(G=(V,E)\) 的 Laplacian Matrix \(L\) 为
即为图的度数矩阵 \(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\) 的行构成的矩阵,则有:
下面矩阵 \(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\) 对应的关联矩阵,则:
观察从 \(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\)),一定是根向树。如果出现了环,说明一个点绕了一圈,但是走不出去了,不满足欧拉回路的性质。
故双射关系得证。