矩阵树定理

矩阵树定理与生成树

1.矩阵树定理

矩阵树定理用矩阵刻画了一个图的生成树个数

\(G\) 是一个 \(n\) 个点 \(m\) 条边的无向图,定义矩阵:

\[L(G) = \begin{cases} deg_i, & \text{if } i = j \\ -E_{i,j} & \text{if } i \ne j \end{cases} \]

其中 \(deg_i\) 表示点 \(i\) 的度数, \(E_{i,j}\) 表示点 \(i\) 与点 \(j\) 之间的边数。

那么有图 \(G\) 的生成树个数为:

\[\det L(G)_{[n] \setminus \{k\}, [n] \setminus \{k\}} \]

1.1 证明

我们从组合角度出发,给出一个没有那么严谨的证明,使用Cauchy-Binet公式。

我们只说明 \(k = 1\) 时的情况,相信读者能够理解

定义矩阵 \(L_{m,n}\):对于第 \(i\) 列,设图中第 \(i\) 条边为 \((u_i, v_i)\),令 \(L_{u_i, i} = 1, L_{v_i, i} = -1\)。(读者或许会迷惑 \(u_i\)\(v_i\) 的顺序,事实上你看完证明会发现这无关紧要)

同时我们简记 \(\det L(G)_{[n] \setminus \{k\}, [n] \setminus \{k\}}\)\(A\),即 \(L(G)\) 的一个余子式。

于是有 \(L(G) = L * L^{\top}\),设 \(L\) 删去第一行后为 \(B\)

Cauchy-Binet公式:

\[\det(A) = \det(B^2) = \sum_{1 < k_1 < k_2 < \dots < k_{n-1} \le m} {B \begin{pmatrix} 1 & 2 & \dots & n \\ k_1 & k_2 & \dots & k_{n-1} \end{pmatrix} }^2 \]

我们下面说明:当 \(k_1, k_2, \dots, k_{n-1}\) 构成一棵生成树时此贡献为 \(1\),否则为 \(0\)

  • 反面,加入不是一颗树,那么则有环,且除环上的边外无别的边,我们单独考虑涉及的点与边。取出这个子矩阵,利用行列式的性质,把所有行加到第一行,使得第一行全部为零,于是整个就为 \(0\)

  • 正面,我们建出这棵树,每条边对应他下面那个点,而因为我们删去了 \(L\) 的第一行,所以所有与 \(1\) 相连的边就确定了,情况存在且唯一,平方后即为 \(1\)

就证完了。

2.1 理解

我们体会它,描绘一下它的证明过程。

我也真是醉了,网上基本找不到对带权矩阵树定理的描述。

关键在于我们取出 \(B\) 的一个子矩阵,倘若非生成树,那么结果必为 \(0\),可是,当他是生成树时,我们在求什么?

关键在于我们对于上面时,每条边设了一个 \(1\) 和一个 \(-1\),倘若改成别的数呢?

结论:对于每条边 $(i, j) 把 $ \(E_{i, j}\) 改成此边的边权,用矩阵树定理,就可以求:

\[\sum_{T} \prod_{e \in T} w(e) \]

前提:\(<W, +, \times>\) 构成一个环。

posted @ 2026-07-03 17:48  AC_protoss  阅读(2)  评论(0)    收藏  举报