背景:
好多东西没学。
勇士被快船惊天大逆转!!!
快船NBNBNB。
紧接着下午打球水杯被搞烂了.........
正题:
Part1Part1Part1行列式:
对于一个n∗nn*nn∗n的矩阵AAA。
设ppp枚举列的全排列,τ(p)τ(p)τ(p)表示排列ppp的逆序对的个数。
则其行列式为detA=∑p(−1)τ(p)∏i=1nai,pidet_A=\sum_p(-1)^{τ(p)}\prod_{i=1}^na_{i,p_i}detA=∑p(−1)τ(p)∏i=1nai,pi
那么这个东西有什么性质呢?
[1][1][1]:
交换行和列,则行列式结果的符号取反。
这很显然,因为逆序对的奇偶性刚刚好相反。
[2][2][2]:
两行或两列一样时,行列式结果为000。
这很显然,因为ppp全部枚举过了,且一定枚举到相同的序列,而iii又会枚举相等,所以成立。
[3][3][3]:
某一行或某一列乘上了kkk,最后的结果也会乘kkk。
这很显然,你考虑每一行或每一列的贡献,一个∏\prod∏有且仅会被枚举111次乘kkk的数,每一次乘kkk,因此你将这个kkk提取出∑\sum∑外面即可,那就是刚刚好乘kkk。
[4][4][4]:
某一行是另一行的kkk倍或某一列是另一列的kkk倍,最后的结果为000。
其实就是[2],[3][2],[3][2],[3]的结合体。你先提取出一个kkk,那么就会存在某两行或某两列相等,那么结果就为000了。
[5][5][5]:
某一行加上另一行的kkk倍或某一行列加上另一列的kkk倍,最后结果的不变。当某一行加上另一行的k倍时,行列式不变。
证明:可以从求和式子的每一项的那一行的那个元素下手,
把detdetdet求和式拆成两个detdetdet求和式(就是把被加上kkk倍的哪一行/列拆为原来的和新加的):
det1det_1det1与原矩阵的行列式求法相同;
det2det_2det2所代表的矩阵中有两行成比例,比例系数为kkk,值为000 (性质[4][4][4])。
所以相比原来的行列式,值不变。
至此,行列式就结束了。
Part2Part2Part2基尔霍夫矩阵&矩阵树定理:
不知道是不是基尔霍夫电流顶定律的那个人发明的?
这里的基尔霍夫矩阵可以用来求无向图生成树的个数。
对于一个无向图GGG,它的生成树个数等于其基尔霍夫矩阵任何一个N−1N-1N−1阶主子式的行列式的绝对值。
所谓的N−1N-1N−1阶主子式就是对于一个任意的一个rrr,将矩阵的第rrr行和第rrr列同时删去得到的新矩阵。
基尔霍夫矩阵的一种求法(矩阵树定理):基尔霍夫矩阵K=度数矩阵D−邻接矩阵A基尔霍夫矩阵K=度数矩阵D-邻接矩阵A基尔霍夫矩阵K=度数矩阵D−邻接矩阵A。
解释一下:
度数矩阵(i,i)(i,i)(i,i)表示iii这点的度,其余点均为0。
邻接矩阵(i,j)(i,j)(i,j)表示(i,j)(i,j)(i,j)连的边数;特别的,若i=ji=ji=j,则为000。
Part3Part3Part3快速求行列式:
首先对于这样一个矩阵:
注意到是一个上三角矩阵(左下的值为000,而右上有值)。
其行列式的值为对角线的乘积(同理下三角矩阵)。
因为只有ppp的排列为123412341234 时,∏\prod{}∏后才没有000出现,才对结果有贡献。
又因为性质[5][5][5],所以采用高斯消元的方法,把矩阵消为一个上三角矩阵后,然后求出对角线的积,便是该矩阵的行列式的值。
复杂度Θ(n3)\Theta(n^3)Θ(n3)。
Part4Part4Part4应用:
我们可以用上述方法求解基尔霍夫矩阵,就能解决一些问题:
[1][1][1]:
求无向图生成树的个数。
[2][2][2]:
内向树:树上的边是由儿子指向父亲;
外向树:树上的边是由父亲指向儿子。
若求内向生成树的个数,则Di,iD_{i,i}Di,i表示入度即可;
若求外向生成树的个数,则Di,iD_{i,i}Di,i表示出度即可。