对于无向图,定义度数矩阵满足:
对于有向图,定义为图的入度矩阵,为图的出度矩阵,同样有:
定义的邻接矩阵满足:
其中表示点与点之间的边数。
定义的基尔霍夫矩阵(又称矩阵)满足:
记无向图的生成树数量为,有向图根向生成树数量为,有向图叶向生成树数量为
1.无向图矩阵树定理:
其中即去掉第行和第列的矩阵。
2.有向图矩阵树定理:
3.BEST定理:
设有向欧拉图的欧拉回路数量为,则有
设以为起点的欧拉回路数量为,则有
当边有边权时,把边权当做重边即可。
参考矩阵树定理及其无向图形式证明
定义图的关联矩阵为一个大小为的矩阵并满足:
定义图的减关联矩阵为关联矩阵去掉最后一行后的大小为的矩阵。
定义图的子减关联矩阵为选出中的(n-1)列构成的子集。
引理1:
证明:
当不为边的端点时,贡献为0;
当时,,贡献为1,总贡献即为
当时,,贡献为-1,总贡献即为
引理2:
若构成的边集不是生成树,,否则
证明:若没有构成生成树,那么至少存在一个简单环。首先,对于中处于简单环对应的行,恰好有两列非0,而对于简单环对应的列,恰好存在两个元素为1和-1。
要证明,就需要证明列线性相关。我们考虑依次合并所有列。我们拿行消列,那么和抵消了,只剩为1/-1。以此类推,合并到列时,消完后只剩为1/-1。最后合并到第列时,已经和第相等了,这就证明了列线性相关,也就说明了。
引理3:定理
其中是一个的矩阵,是一个的矩阵,是一个的矩阵,满足,是集合的一个大小为子集,表示中保留行得到的的矩阵,表示中保留列得到的矩阵。
设是两个长度为的排列,那么等式左边等于:
再因为与的奇偶性相同可得:
等式右边有:
又因为,所以:
设是一个从1~m中选个数的可重排列,那么就有:
我们发现,如果中存在两个相同元素,那么对于和交换后的,他们会抵消,因此我们可以只用关心是无重排列的情况,即先枚举一个大小为的子集,再枚举排列,那么有:
枚举,可得:
证毕。
最后是证明为什么去掉基尔霍夫矩阵最后一行最后一列的是对的(其他情况同理)。
由引理1可得:,再由引理3可知,再由引理2可知,若边集构成生成树,则贡献为,若不构成生成树则贡献为0,因此就是生成树数量。
1.【模板】Matrix-Tree 定理
题意:求一个图(可能有向有可能无向)的生成树权值和,权值定义为边权的乘积。
思路:模板题,只是要求边权乘积,把边权当成重边就可以了。
2.[JSOI2008]最小生成树计数/[JSOI2010] 巨额奖金
题意:求一个图的最小生成树数量。
思路:首先我们要观察到最小生成树的两个性质:一是对于所有最小生成树,权值相同的边数量相等 , 二是只连接权值的边时,所有最小生成树的连通性相同。有了这两个性质就很简单了。首先,我们假设现在要处理权值为的边,那么就把已经连上了边权的边的连通块缩起来,然后对新图加入权值为的边,求出生成树数量,最后根据乘法原理将每一种在最小生成树上出现过的权值的贡献乘起来即可。
3.[省选联考 2020 A 卷] 作业题
题意:对于无向图的一棵生成树,定义的权值为,其中为边权,求所有生成树的权值和。
思路:考虑莫反:
因此我们枚举,去掉原图中边权不是的倍数的边建成一张新图,然后就只需求。但是常规的矩阵树定理只能求边权乘积,那怎么求边权和呢?容易( 其实不容易 )想到把边权换作,那么求出乘积后的项的系数就是原先的边权和,并且我们在计算时只用保留常数项和一次项即可。
__EOF__
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】