浅谈矩阵树定理

1 作用:对于一张图求生成树数量 矩阵树定理可解决。

2 实现方式 A为邻接矩阵表示两点之间的连接关系 D为度数矩阵存放每个点的度数 根据矩阵的初等变换 基尔霍夫矩阵=D-A;

当然基尔霍夫矩阵就是拉普拉斯矩阵。

有如下几个性质:拉普拉斯矩阵的行列式为0.

拉普拉斯矩阵的任意一个余子式的行列式相等。

        不连通的无向图的拉普拉斯的任意一个余子式的行列式为0。

本人行列式都不知道是什么...(很弱的

其实行列式就是一个矩阵经过规定的计算方法从而得到的一个数字,有未知数的话其实就是一个多项式,本质上是一个数值。

一阶矩阵 1*1 二阶 2*2 三阶 3*3 以此类推。

一阶矩阵的行列式=就是这个数字?! 二阶矩阵行列式=a1*b2-a2*b1; 三阶矩阵=具体图像如下。

这个定义看起来已经相当的巧妙了,却让人不算是很好求得样子。

在此之前先介绍其几何意义 1 行列式就是行列式中的行或列向量所构成的超平面多面体的有向面积或有向体积。

2  在线性变换A下的图形面积或体积的伸缩因子。

看起来第一个还是很正常的我们具体阐述第一个意义。考虑二阶行列式的几何意义。

这个好像并不是很重要叉积即是 这个平行四边形面积。当然这个几何意义也不是很重要。

余子式 对于一个n阶矩阵A 去掉第i行第j列所形成的矩阵的行列式称为这个矩阵的余子式。表示为A i j

代数余子式 Mi j =(-1)i+j Ai j

有了这些知识 那么 拉普拉斯矩阵的几个性质都是很好解决的吧。

关于拉普拉斯矩阵的性质证明 在此忽略...

考虑对拉普拉斯矩阵A的一些改变 若存在E(x,y) 那么++Ax,x ++Ay,y --Ax.y --Ay,x

那么考虑 生成树的数量 == 这个矩阵的行列的行列式

现在到了如何快速求解行列式 也就是求出下发这个式子:

其中 sgn(s) 表示s这个排列之中的(-1)^逆序对数 如何生成这个si 看起来并不好求。

转换一个比较快速的求解方法 使用高斯消元 进行消元消成上三角矩阵,此时则有对角线上的值得乘积=行列式的值。

看的很蒙蔽对不对 其实 感性的理解相信你也已经懂了大致的做法,这部分内用 需要时间来不断沉淀。

求生成树的数量 那么 基尔霍夫矩阵也是很好列的,转换一下 高斯消元 然后求生成树数量即可。

注意 基尔霍夫矩阵是拉普拉斯矩阵的 余子式。

故我们先求出 拉普拉斯矩阵再把最后一行和最后一列消掉 最终 高斯消元。注:拉普拉斯任意一行和任意一列的余子式的行列式是相等的。

原文地址:https://www.cnblogs.com/chdy/p/11326439.html

时间: 2024-11-02 15:50:59

浅谈矩阵树定理的相关文章

矩阵树定理速证

凯莱公式: spanning_trees_num( G ) = spanning_trees_num( G - e ) + spanning_trees_num( G · e ) 矩阵树定理: G 相应的拉普拉斯矩阵(度矩阵 - 邻接矩阵)L( G )   删除随意一行一列得到的行列式的值det( L*( G ) ) 即生成树的个数,即spanning_trees_num( G ) = det( L*( G ) ) 证: 归纳如果 spanning_trees_num( G - e ) = de

[spoj104][Highways] (生成树计数+矩阵树定理+高斯消元)

In some countries building highways takes a lot of time... Maybe that's because there are many possiblities to construct a network of highways and engineers can't make up their minds which one to choose. Suppose we have a list of cities that can be c

CSU 1805 Three Capitals(矩阵树定理+Best定理)

http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1805 题意: A和B之间有a条边,A和G之间有b条边,B和G之间有c条边.现在从A点出发走遍所有的边,然后再回到A点,问一共有多少种方法. 思路: 16年湖南省赛题目,这道题目是求欧拉回路的个数,和生成树的计数有一定的联系. 首先给出神奇的Best定理,这是什么鬼定理,反正查不到什么有关该定理的文章... $ec(G)=t_s(G)\cdot deg(s)! \cdot \prod_{v\i

【BZOJ4031】[HEOI2015]小Z的房间 矩阵树定理

[BZOJ4031][HEOI2015]小Z的房间 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一些相邻房间的墙,使得所有房间能够互相到达.在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙).同时,你不希望在房子中有小偷的时候会很难抓,所以你希望任意两个房间之间都只有一条通路.现在,你希望统计一共有多少种可行的方案.

【bzoj2467】[中山市选2010]生成树 矩阵树定理

题目描述 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈上有公共的顶点.如图0所示是一个4-五角形圈. 现在给定一个n五角形圈,你的任务就是求出n五角形圈的不同生成树的数目.还记得什么是图的生成树吗?一个图的生成树是保留原图的所有顶点以及顶点的数目减去一这么多条边,从而生成的一棵树. 注意:在给定的n五角形圈中所有顶点均视为不同的顶点. 输入 输入包含多

【bzoj4894】天赋 矩阵树定理

题目描述 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的.也就是说,有一些天赋必须是要在学习了另一个天赋的条件下才能学习的.比如,要想学会"开炮",必须先学会"开枪".一项天赋可能有多个前置天赋,但只需习得其中一个就可以学习这一项天赋.上帝不想为难小明,于是小明天生就已经习得了1号天赋-----"打架".于是小明想知道学习完这n种天赋的方案数,答案对1

【整合】矩阵树定理模板

矩阵树定理求生成树计数模板. 原题是SPOJhighways 代码又长又丑- #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define MAXN 20 #define eps 1e-9 using namespace std; int A[MAXN][MAXN],D[MAXN][MAXN];//A是邻接矩阵D是

浅谈 trie树 及其实现

定义:又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构, 如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. 核心思想:是空间换时间.利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的. 三个基本性质: 1. 根结点不包含字符,除根结点外每一个结点都只包含一个字符. 2. 从根结点到某一结点,路径上经过的字符连接起来,为该结点对应的字符串. 3. 每个结点的所有子结点包含的字符都不相同. 优点:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比

走进矩阵树定理--「CodePlus 2017 12 月赛」白金元首与独舞

n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模.保证未确定的格子<=300. ...一脸懵逼地写了原本30实际20的暴力然后跪着啃了下论文 然而什么都没啃懂不如结论记下来: 首先矩阵行列式的定义:一个n*n的矩阵,行列式值为$\sum_{b是n的一个排列} \ \ \ \ \ ( (-1)^{b的逆序对数} \ \ \ \ \ * \prod_{i=1}^