$Matrix-Tree$定理-理论
$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$
这个式子的意思是,枚举每棵可能存在的生成树,将边的存在性相乘,如果每条边都存在,也就是一棵生成树,答案就加一。有了这个式子,就可以扩展出一些有趣的东西来了。
随机推荐
- Maven教程2(Eclipse配置及maven项目)
Maven教程1(介绍安装和配置) Eclipse中配置maven 1.Eclipse中默认集成的有Maven 可以使用默认的,本地仓库在当前用户下的.m2文件夹下. 2.配置我们自己安装的maven ...
- 初步掌握node的路由控制
1.1.2:node.js的路由控制 1.运行原理 在1.1.1节中,提到过app.js中app.get("/",routes.index)可以用以下代码取代: app.get(& ...
- Vim——回顾整理
一.命令练习(一) hjkl(左下上右) 保存到某路径 :saveas 路径 w 到下一个单词的开头 e 到下一个单词的结尾 % 括号匹配移动(),{},[] 0 到行头 $ 到行头 gU字母变大写 ...
- c# 封装Dapper操作类
using Dapper; using DapperExtensions; using System.Collections.Generic; using System.Configuration; ...
- 时间戳转日期 mysql以及sql server 用法
一.mysql UNIX时间戳转换为日期函数:FROM_UNIXTIME() eg:select FROM_UNIXTIME(1156219870) 结果会输出 2006-08-22 12:11:10 ...
- Web前端基础——jQuery(一)
前几天回老家呆了几天,几乎没有怎么学习新的知识,这期间一直有断断续续的看<Java编程思想>,还刷了一些前沿消息,也算没闲着.今天开始学习jQuery啦,继续前进. 在网上查了,买了这本书 ...
- JDK源码解析之Java SPI机制
1. spi 是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件. 系统设计的各个抽象,往往 ...
- 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_ ...
- The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp
文件链接 Karp在1977年的论文,讲述了一种\(O(nm)\)的算法,用来求有向强连通图中最小平均权值回路(具体问题请参照这里) 本人翻译(有删改): 首先任取一个节点 \(s\) ,定义 \(F ...
- onSaveInstanceState场景
需要注意的是, onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据的. 比如用户按下BACK键退出activity时, 用户显然想要关闭这个acti ...