那么,现在就可以进入正题了-------->矩阵树定理(Matrix Tree Theorem)
不知道矩阵行列式等线性代数知识的,请左转:点击打开链接
Part 1 Matrix Tree定理
引入几个概念:
一个图的邻接矩阵G:对于无向图的边(u,v),G[u][v]++,G[v][u]++
一个图的度数矩阵D:对于无向图的边(u,v),D[u][u]++,D[v][v]++;
而通过这两个矩阵就可以构造出图G的基尔霍夫矩阵:C=D-G.
Matrix Tree定理:将图G的基尔霍夫矩阵去掉第i行和第i列(i可以取任意值,可以证明所得到的结果相同),得到(n-1)*(n-1)的矩阵,
对这个矩阵进行行列式的值求解,abs(det(A))即为图G的生成树个数。
求解矩阵行列式的时候,计算常数k时为了避免精度丢失,可以通过计算逆元进行求解(不需要取模时,mod一个大质数即可).
下面给一道MatrixTree定理裸题: