矩阵树定理学习笔记
矩阵树定理
问题:给定一张图,求生成树个数?
无向图
先考虑没有边权的情况。
定义邻接矩阵 $ A $ ,重边算多次,定义度数矩阵 $ D , D_{i,i} = deg (i) $ 。令 $ D \gets D - A $ 。
那么这张图的生成树个数为矩阵 $ D $ 去掉第\(k\)行和第\(k\)列后的行列式的值,$ k \in [1,n] $ ,得到的 \(n\) 个值是相等的,任取一个就好。
行列式
对于一个矩阵 \(H\) ,记 $ det(H) $ 为它的行列式。
其定义是:$ det(H) = \sum_{ P[1 \dots n] } (-1)^{\mu(P)} \prod_{i=1}^{n} H[i][P_i] $ ,其中 $ P[1 \dots n] $ 是一个排列, $ \mu(P) $ 表示其逆序对个数 。直接计算是 $ O(n\times n!) $ 的。
快速计算行列式,考虑如下性质:
- 交换两行或两列,行列式变为其相反数。
- 将一行或一列同时乘一个常数 \(k\) ,行列式乘 \(k\) 。
- 将一行加上另一行的\(k\)倍,行列式不变。
然后可以使用高斯消元求解。复杂度 $ O(n^3) $ 。
证明暂时不会。
再考虑加权。
发现加权等价于加重边,直接做。
有向图
\(A\) 仍然是邻接矩阵,但\(D\) 使情况而定,如果是内向树,$ D_{i,i} = outdeg (i) $ ;如果是外向树, $ D_{i,i} = indeg (i) $ 。
设 $ K_i $ 为 \(D\) 去掉第\(i\)行和第\(i\)列后的矩阵,则 $ det ( K_i ) $ 为以 \(i\) 为根的生成树个数。
例题
真模板。
枚举 $ 2^{n-1} $ 的状态,简单容斥套模板。
考虑每条路都不能通行作为基础概率,在此之上选择 $ n-1 $ 条边构成生成树,计算对概率的影响。

浙公网安备 33010602011771号