矩阵树定理
给定带权无向图
G G G ,求出
∑ T ∏ e ∈ T w e \sum_T\prod_{e \in T}w_e ∑ T ∏ e ∈ T w e 的值。
定义
定义
[ n ] = { 1 , 2 , 3 , ⋯ , n } [n] = \{1, 2, 3, \cdots, n\} [ n ] = { 1 , 2 , 3 , ⋯ , n }
对于无向图,定义
D ( G ) D(G) D ( G ) 为其度数矩阵,有:
D ( G ) i j = { deg i i = j 0 i ≠ j D(G)_{ij} = \left\{\begin{matrix} \deg_i & i = j \\ 0 & i \ne j \end{matrix}\right. D ( G ) ij = { deg i 0 i = j i = j .
对于有向图,定义
D in ( G ) D^{\text{in}}(G) D in ( G ) 和
D out ( G ) D^{\text{out}}(G) D out ( G ) 分别表示其入度矩阵和出度矩阵,有:
D in ( G ) i j = { deg i in i = j 0 i ≠ j , D out ( G ) i j = { deg i out i = j 0 i ≠ j D^{\text{in}}(G)_{ij} = \left\{\begin{matrix} \deg^{\text{in}}_i & i = j \\ 0 & i \ne j \end{matrix}\right., D^{\text{out}}(G)_{ij} = \left\{\begin{matrix} \deg^{\text{out}}_i & i = j \\ 0 & i \ne j \end{matrix}\right. D in ( G ) ij = { deg i in 0 i = j i = j , D out ( G ) ij = { deg i out 0 i = j i = j .
定义
A ( G ) A(G) A ( G ) 为图的邻接矩阵。
A ( G ) i j A(G)_{ij} A ( G ) ij 表示
i i i 连向
j j j 的边的数量。
定义无向图的 Laplace 矩阵
L L L 为
L ( G ) = D ( G ) − A ( G ) L(G) = D(G) - A(G) L ( G ) = D ( G ) − A ( G ) 。有向图的情况可以类似的定义
L in L^{\text{in}} L in 和
L out L^{\text{out}} L out .
定义图
G G G 以
u u u 为根的根向树和叶向树的数量分别为
t root ( G , u ) t^{\text{root}}(G, u) t root ( G , u ) 和
t leaf ( G , u ) t^{\text{leaf}}(G, u) t leaf ( G , u ) 。
定义矩阵
A A A 的子矩阵
A S , T A_{S, T} A S , T 为选取
i ∈ S i \in S i ∈ S ,
j ∈ T j \in T j ∈ T 构成的元素。
定义有向图
G G G 的关联矩阵为
M ( G ) M(G) M ( G ) (无向图可以随便定方向),有
M in ( G ) i j = { w ( e j ) i is the starting point of edge j 0 otherwise. , M out ( G ) i j = { w ( e j ) i is the end of edge j 0 otherwise. M^{\text{in}}(G)_{ij} = \left\{\begin{matrix} \sqrt{w(e_j)} & \text{i is the starting point of edge j} \\ 0 & \text{otherwise.} \end{matrix}\right., M^{\text{out}}(G)_{ij} = \left\{\begin{matrix} \sqrt{w(e_j)} & \text{i is the end of edge j} \\ 0 & \text{otherwise.} \end{matrix}\right. M in ( G ) ij = { w ( e j ) 0 i is the starting point of edge j otherwise. , M out ( G ) ij = { w ( e j ) 0 i is the end of edge j otherwise. ,令
M ( G ) = M in ( G ) − M out ( G ) M(G) = M^{\text{in}}(G) - M^{\text{out}}(G) M ( G ) = M in ( G ) − M out ( G ) 。
不难发现
D in = M in ⋅ ( M in ) T , D out = M out ⋅ ( M out ) T , A ( G ) = M in ⋅ ( M out ) T . D^{\text{in}} = M^{\text{in}} \cdot (M^{\text{in}})^T, D^{\text{out}} = M^{\text{out}}\cdot (M^{\text{out}})^T, A(G) = M^{\text{in}} \cdot (M^{\text{out}})^T. D in = M in ⋅ ( M in ) T , D out = M out ⋅ ( M out ) T , A ( G ) = M in ⋅ ( M out ) T .
进而有
L in ( G ) = M in ⋅ ( M in − M out ) T , L out ( G ) = ( M out − M in ) ⋅ ( M out ) T . L^{\text{in}}(G) = M^{\text{in}} \cdot (M^{\text{in}} - M^{\text{out}})^T, L^{\text{out}}(G) = (M^{\text{out}} - M^{\text{in}}) \cdot (M^{\text{out}})^T. L in ( G ) = M in ⋅ ( M in − M out ) T , L out ( G ) = ( M out − M in ) ⋅ ( M out ) T .
对于无向图有
L ( G ) = M ⋅ M T L(G) = M \cdot M^T L ( G ) = M ⋅ M T
定理
对于无向图 G G G 和任意的 k k k ,有 t ( G ) = det L ( G ) [ n ] ∖ { k } , [ n ] ∖ { k } t(G) = \det L(G)_{[n] \setminus \{k\}, [n] \setminus \{k\}} t ( G ) = det L ( G ) [ n ] ∖ { k } , [ n ] ∖ { k }
对于有向图 G G G 和根 u u u ,有 t root ( G ) = det L out ( G ) [ n ] ∖ { u } , [ n ] ∖ { u } t^{\text{root}}(G) = \det L^{\text{out}}(G)_{[n] \setminus \{u\}, [n] \setminus \{u\}} t root ( G ) = det L out ( G ) [ n ] ∖ { u } , [ n ] ∖ { u } ,t leaf ( G ) = det L in ( G ) [ n ] ∖ { u } , [ n ] ∖ { u } t^{\text{leaf}}(G) = \det L^{\text{in}}(G)_{[n] \setminus \{u\}, [n] \setminus \{u\}} t leaf ( G ) = det L in ( G ) [ n ] ∖ { u } , [ n ] ∖ { u }
证明
引理 1(Cauthy-Binet):
对于
n × m n \times m n × m 的矩阵
A A A 和
m × n m \times n m × n 的矩阵
B B B ,有
det ( A B ) = ∑ S ⊆ { 1 , 2 , ⋯ , m } ∧ ∣ S ∣ = n det A [ n ] , S ⋅ det B S , [ n ] \det(AB) = \sum\limits_{S \subseteq \{1, 2, \cdots, m\} \land |S| = n}\det A_{[n], S} \cdot \det B_{S, [n]} det ( A B ) = S ⊆ { 1 , 2 , ⋯ , m } ∧ ∣ S ∣ = n ∑ det A [ n ] , S ⋅ det B S , [ n ]
如果
n > m n > m n > m ,则必有
det ( A B ) = 0 \det(AB) = 0 det ( A B ) = 0 。
证明咕了。
引理 2:
对于图
G G G 的子图
( V ′ , E ′ ) (V', E') ( V ′ , E ′ ) ,若
∣ E ′ ∣ ≤ ∣ V ′ ∣ |E'| \le |V'| ∣ E ′ ∣ ≤ ∣ V ′ ∣ ,则子图
T T T 是一棵以
V ∖ V ′ V \setminus V' V ∖ V ′ 为根的根向生成树当且仅当
det ( M V ′ , E ′ out ) det ( M V ′ , E ′ out − M V ′ , E ′ in ) ≠ 0 \det(M_{V', E'}^{\text{out}}) \det(M_{V', E'}^{\text{out}} - M_{V', E'}^{\text{in}}) \ne 0 det ( M V ′ , E ′ out ) det ( M V ′ , E ′ out − M V ′ , E ′ in ) = 0
且该式的值在不为
0 0 0 时,恰好为
∏ e ∈ E ′ w e \prod_{e \in E'} w_e ∏ e ∈ E ′ w e 。
证明:
记
w ( T ) = ∏ e ∈ T w e w(T) = \prod_{e \in T} w_e w ( T ) = ∏ e ∈ T w e 。先把行列式中每行的
w e \sqrt{w_e} w e 提出来,最后的答案再乘上一个
w ( E ′ ) w(E') w ( E ′ ) 就行了。
先考虑第一个行列式。如果
M V ′ , E ′ out M_{V', E'}^{\text{out}} M V ′ , E ′ out 存在某行全是
0 0 0 (该点集中存在点没有在边集中出现),那么
det ( M V ′ , E ′ out ) \det(M_{V', E'}^{\text{out}}) det ( M V ′ , E ′ out ) 就是
0 0 0 。然后又由于每条边只有一个出点,所以每行恰好有一个
1 1 1 。所以这个式子保证了就有
∣ V ′ ∣ = ∣ E ′ ∣ |V'| = |E'| ∣ V ′ ∣ = ∣ E ′ ∣ ,但是没有保证
T T T 是一棵根向生成树。
现在考虑第二个行列式:
M V ′ , E ′ out − M V ′ , E ′ in M_{V', E'}^{\text{out}} - M_{V', E'}^{\text{in}} M V ′ , E ′ out − M V ′ , E ′ in 。这个矩阵中每行只有一个
1 1 1 ,零个或一个
− 1 -1 − 1 。若
T T T 中存在环,这些边为
e 1 → e 2 → ⋯ → e m e_1 \to e_2 \to \cdots \to e_m e 1 → e 2 → ⋯ → e m 。则行列式会长成形如这样的东西:
[ 0 1 0 0 − 1 0 0 0 ⋯ 1 0 0 0 0 − 1 0 0 ⋯ 0 0 − 1 0 0 1 0 0 ⋯ 0 0 1 0 0 0 0 − 1 ⋯ 0 − 1 0 0 0 0 0 1 ⋯ − 1 0 0 0 1 0 0 0 ⋯ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ] \begin{bmatrix}
0 & 1 & 0 & 0 & -1 & 0 & 0 & 0 & \cdots \\
1 & 0 & 0 & 0 & 0 & -1 & 0 & 0 & \cdots \\
0 & 0 & -1 & 0 & 0 & 1 & 0 & 0 & \cdots \\
0 & 0 & 1 & 0 & 0 & 0 & 0 & -1 & \cdots \\
0 & -1 & 0 & 0 & 0 & 0 & 0 & 1 & \cdots \\
-1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & \cdots \\
\vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \ddots \\
\end{bmatrix} 0 1 0 0 0 − 1 ⋮ 1 0 0 0 − 1 0 ⋮ 0 0 − 1 1 0 0 ⋮ 0 0 0 0 0 0 ⋮ − 1 0 0 0 0 1 ⋮ 0 − 1 1 0 0 0 ⋮ 0 0 0 0 0 0 ⋮ 0 0 0 − 1 1 0 ⋮ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋱
记从第
i i i 行的
− 1 -1 − 1 处进入点
i i i ,
+ 1 +1 + 1 处离开点
i i i 。回顾消元求解行列式的过程,最后一定会消出一行
0 0 0 。不存在环,那么就可以从叶子处开始消(叶子的那一行有且仅有一个
1 1 1 ,其余的都是
0 0 0 ),可以把它的父亲所在行的
− 1 -1 − 1 消掉。最后消出来的结果其实就是
det ( M V ′ , E ′ out ) \det(M_{V', E'}^{\text{out}}) det ( M V ′ , E ′ out ) 。
所以当且仅当
T T T 是一棵以
V ∖ V ′ V \setminus V' V ∖ V ′ 为根的根向生成树时
det ( M V ′ , E ′ out ) det ( M V ′ , E ′ out − M V ′ , E ′ in ) = det ( M V ′ , E ′ out ) 2 = w ( T ) ≠ 0 \det(M_{V', E'}^{\text{out}}) \det(M_{V', E'}^{\text{out}} - M_{V', E'}^{\text{in}}) = \det(M_{V', E'}^{\text{out}})^2 = w(T) \ne 0 det ( M V ′ , E ′ out ) det ( M V ′ , E ′ out − M V ′ , E ′ in ) = det ( M V ′ , E ′ out ) 2 = w ( T ) = 0 。
根据刚刚的证明,有更通用的结论:
∑ T ∈ τ ( G , u ) ∏ e ∈ T w e = det L out ( G ) [ n ] ∖ { u } , [ n ] ∖ { u } \sum\limits_{T \in \tau(G, u)} \prod_{e \in T} w_e = \det L^{\text{out}}(G)_{[n]\setminus \{u\}, [n] \setminus \{u\}} T ∈ τ ( G , u ) ∑ e ∈ T ∏ w e = det L out ( G ) [ n ] ∖ { u } , [ n ] ∖ { u }
这里的
τ ( G , u ) \tau(G, u) τ ( G , u ) 表示图
G G G 以
u u u 为根的根向生成树集合。
时间复杂度是求行列式的
O ( n 3 ) \mathcal{O}(n^3) O ( n 3 ) 。
例题先咕了。