简单入门一下矩阵树Matrix-Tree定理。(本篇目不涉及矩阵树相关证实)html
一些定义与定理优化
基尔霍夫Kirchhoff矩阵 K =度数矩阵 D - 邻接矩阵 Aspa
基尔霍夫Kirchhoff矩阵的具体构造htm
$D[i][j]=0\;{(i}\neq{j)}$,$D[i][i]=i号点的度数$blog
${A[i][i]=0}\;{,}\;{A[i][j]=A[j][i]=i,j之间的边数}$get
行列式det(K)求法it
行列式的性质入门
这个须要简单说明一下。方法
考虑对于原矩阵 K,咱们能够获得其行列式的求和式:im
${det(K)=}\sum_{P}^{ }\;{(}{(-1)}^{\tau{(P)}}\times{K}_{1,p1}\times{K}_{2,p2}\times{K}_{3,p3}\times\cdots\times{K}_{N,pN}{)}$
若交换某两行的位置后获得了 K' 矩阵,若写出其行列式的求和式,不难发现,若是不看符号位的变化,只看每个乘积项,那么这两个的矩阵的行列式的求和式是彻底相同的。咱们把相同的乘积项移到对应的位置,如图示:
可是很显然,两个矩阵的这一项对应的排列 P 和 P' 不一样:
P :1 2 4 3
P':3 2 4 1
那这个符号位的变化是什么呢?
从例子看得出来,τ(P) = 1 ,符号位为 –1;τ(P')=4,符号位为 1。
那是否是都是这样的呢?
即原来是 -1,如今就是 1;即原来是 1,如今就是 -1?逆序对变化量为奇数?
答案是确定的,证实以下:
由此可知,逆序对数的变化量为奇数,即两个det()求和式的对应的每一项的符号位都相反,因此互换矩阵的两行(列),行列式变号。
(有了这个性质,下面的就比较简单了。)
证实,由性质.1可知:由于交换这两行,获得的矩阵和原来相同,可是又要变号,则行列式的值只能为 0。
这个的证实就是把那个求和式的每一项都提出一个公因子k就行了。
证实:也是把其中一行提出一个公因数k,那么剩下的det( )求和式所表明的矩阵中存在一行或一列彻底相同,则值为 0。
证实:能够从求和式子的每一项的那一行的那个元素下手,
把det( )求和式拆成两个 det( )求和式:
det1( )与原矩阵的行列式求法相同
det2( )所表明的矩阵中有两行成比例,比例系数为k,值为0 。
因此相比原来的行列式,值不变。
优化行列式的求法
注意到了么,是一个上三角矩阵(左下半部分的元素值为 0)。
其行列式的值为对角线的乘积,(同理下三角矩阵)
由于只有 P = 1 2 3 4 时,乘积项中才没有 0出现。
若是要求的矩阵不容许出现实数,且须要取模。
则采用展转相除的高斯消元法。时间复杂度多一个 O(logN)