Matrix-Tree 定理

引入

此算法可以解决图上生成树计数问题。

值得注意的是,矩阵树定理不能用于存在自环的图

定义

\(G\) 是一个图。

记邻接矩阵 \(A(G)_{i,j} = \#e(i,j), \#e(i,j)\)

\(G\) 是无向图

\(D(G)\) 表示其度数矩阵,\(D(G)\) 满足 \(D(G)_{i,i}\) 表示第 \(i\) 点的度数,\(D(G)_{i,j} = 0(i \ne j)\)

定义基尔霍夫矩阵 \(L(G)\) 为:

\[L = D(G) - A(G) \]

记图 \(G\) 的生成树个数为 \(t(G)\)

\(G\) 是有向图

\(D(G)^{in}\) 表示入度矩阵,\(D(G)^{in}_{i,i}\) 表示点 \(i\) 的入度,\(D(G)^{in}_{i,j} = 0(i \ne j)\);记 \(D(G)^{out}\) 表示出度矩阵,\(D(G)^{out}_{i,i}\) 表示点 \(i\) 的出度,\(D(G)^{out}_{i,j} = 0(i \ne j)\)
表示 \(i\)\(j\) 相连的边数。

相似的,定义基尔霍夫矩阵 \(L(G)\)

不同的是,有向图存在入度和出度基尔霍夫矩阵。

入度基尔霍夫矩阵定义为:\(L^{in}(G) = D(G)^{in} - A(G)\)
出度基尔霍夫矩阵定义为:\(L^{out}(G) = D(G)^{out} - A(G)\)

记图 \(G\) 的以 \(i\) 为根的叶向(外向)生成树个数为 \(t^{leaf}(G,i)\)
记图 \(G\) 的以 \(i\) 为根的根乡(内向)生成树个数为 \(t^{root}(G,i)\)

定理

定理1

对于一个无向图,它的生成树个数为基尔霍夫矩阵的 \(k-1\) 阶主子式。

定理2

\(\lambda_1,\lambda_2,\cdots,\lambda_n-1\) 为无向图 \(G\)\(L(G)\)\(n-1\) 个非零特征值,那么有:\(t(G) = \frac{1}{n} \prod\limits_{i = 1}^{n-1} \lambda_i\)

定理3

对于一个有向图 \(G\),有:

\(t^{root}(G,i) = L^{in}(G)\) 除去第 \(i\) 行第 \(i\) 列的主子式。

定理4

对于一个有向图 \(G\),有:

\(t^{leaf}(G,i) = L^{out}(G)\) 除去第 \(i\) 行第 \(i\) 列的主子式。

BEST 定理

定理5

对于一个欧拉图 \(G\),记它的欧拉回路总数 \(ec(G)\)

有:

\[ec(G) = t^{root}(G,k) \prod\limits_{u\in G} (\text{deg}(u) - 1) ! \]

注意,因为 \(G\) 是一个欧拉图,因此对于每个节点的 \(t^{root}(G,i)\) 相等且每个点的入度等于出度。

证明

不会。

拓展

若一个图有边权,求其所有最小生成树边权积的和,只需要将矩阵中所有元素乘上对应边权即可。

posted @ 2024-06-05 17:30  Z_drj  阅读(12)  评论(0编辑  收藏  举报