$Matrix-Tree$

矩阵的行列式

  这个东西看了好久才明白 _ (:з」∠)_ 时间不够可以直接跳到第六段。

  看到这种新定义,第一反应还是去翻百度百科:

  

  但是这个讲解真的让人很迷惑...关键就是第二段的开头,突然出现了“n阶行列式”这么一个词,我到现在也没有明白...在这个地方好像就是“n阶矩阵”的意思?而且它还出现了奥妙重重的递归计算,导致完全看不懂行列式到底是个什么东西。

  点开一个叫做“余子式”的词条,里面有这么一句话:

  “行列式的阶越低越容易计算,于是很自然地提出,能否把高阶行列式转换为低阶行列式来计算。”

​  这才像话嘛,虽然没有说行列式是什么,但是至少说明了为什么一上来就是一通递归。后来又看了一些资料,发现行列式的关键是“式”,而不能将它简单地认为是一个数,否则很难理解。首先二维矩阵的行列式相当于叉积,三维矩阵的行列式也有几何意义,就是一个平行六面体的体积。所以说了这么多还是不知道行列式是什么啊

​  ${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}{)}$

  然后找到这么一个式子,也是算行列式的,这里面 $P$ 是一个$1-n$ 的排列, $\tau{(P)}$ 表示排列 $P$ 的逆序对数目。

  其实上面那些都没什么用处,毕竟最后我也没弄明白...其实学这些关键还是要用,所以跳过证明,直接看结论:

  1.交换矩阵的两行或两列,行列式变号;
  2.如果矩阵有两行或两列完全相同,行列式为0;
  3.将矩阵某行或某列的所有元素同乘以k后,行列式的值也乘以k;
  4.将矩阵的某一行/列加上另一行/列的k倍,行列式的值不变;

  有了这些结论,事情就变得非常简单。将矩阵用高斯消元消成一个上三角矩阵,发现一个有趣的性质:

  上三角矩阵的行列式是对角线的乘积;

  这里要用到的是最复杂的那个行列式,当且仅当 $P$ 为 $1$ $2$ $3$ $4$ $...$ 时,连乘的那些项中才会没有 $0$ ,所以就可以很简单的求出行列式的值了。可喜可贺!

$Matrix-Tree$

  别忘了今天的主题是什么呀...

  首先看一个新概念:$Kirchhoff$ 矩阵;为了理解它,还要复习两个比较简单的旧概念:

    度数矩阵:一个 $N \times N$ 的矩阵,其中 $D[i][i]$=$i$ 的度数;

    邻接矩阵:一个 $N \times N$ 的矩阵,其中 $A[i][j]$=$i,j$ 间的边数;

    $Kirchhoff$ 矩阵:$K=D-A$

  事情突然变得简单起来....先求出$Kirchhoff$ 矩阵,任意删掉一行一列,再求行列式,就是生成树的个数啦!是不是非常神奇呢?复杂度 $O(n^3)$。

  对于用这种方法求出来的值,我们还可以有另一种理解方式:

  $\sum_T\prod_{e \in T} \omega_e$

  这个式子的意思是,枚举每棵可能存在的生成树,将边的存在性相乘,如果每条边都存在,也就是一棵生成树,答案就加一。有了这个式子,就可以扩展出一些有趣的东西来了。

随机推荐

  1. Maven教程2(Eclipse配置及maven项目)

    Maven教程1(介绍安装和配置) Eclipse中配置maven 1.Eclipse中默认集成的有Maven 可以使用默认的,本地仓库在当前用户下的.m2文件夹下. 2.配置我们自己安装的maven ...

  2. 初步掌握node的路由控制

    1.1.2:node.js的路由控制 1.运行原理 在1.1.1节中,提到过app.js中app.get("/",routes.index)可以用以下代码取代: app.get(& ...

  3. Vim——回顾整理

    一.命令练习(一) hjkl(左下上右) 保存到某路径 :saveas 路径 w 到下一个单词的开头 e 到下一个单词的结尾 % 括号匹配移动(),{},[] 0 到行头 $ 到行头 gU字母变大写 ...

  4. c# 封装Dapper操作类

    using Dapper; using DapperExtensions; using System.Collections.Generic; using System.Configuration; ...

  5. 时间戳转日期 mysql以及sql server 用法

    一.mysql UNIX时间戳转换为日期函数:FROM_UNIXTIME() eg:select FROM_UNIXTIME(1156219870) 结果会输出 2006-08-22 12:11:10 ...

  6. Web前端基础——jQuery(一)

    前几天回老家呆了几天,几乎没有怎么学习新的知识,这期间一直有断断续续的看<Java编程思想>,还刷了一些前沿消息,也算没闲着.今天开始学习jQuery啦,继续前进. 在网上查了,买了这本书 ...

  7. JDK源码解析之Java SPI机制

    1. spi 是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件. 系统设计的各个抽象,往往 ...

  8. MySQL and Sql Server:Getting metadata using sql script (SQL-92 standard)

    MySQL: use sakila; -- show fields from table_name; -- show keys from table_name; SELECT `REFERENCED_ ...

  9. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp

    文件链接 Karp在1977年的论文,讲述了一种\(O(nm)\)的算法,用来求有向强连通图中最小平均权值回路(具体问题请参照这里) 本人翻译(有删改): 首先任取一个节点 \(s\) ,定义 \(F ...

  10. onSaveInstanceState场景

    需要注意的是, onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据的. 比如用户按下BACK键退出activity时, 用户显然想要关闭这个acti ...