矩阵树定理

1|0矩阵树定理

对于无向图G,定义度数矩阵D满足:

D(i,j)={degii=j0ij

对于有向图G,定义Din为图G的入度矩阵,Dout为图G的出度矩阵,同样有:

Din(i,j)={inii=j0ij

Dout(i,j)={outii=j0ij

定义G的邻接矩阵A满足:

A(i,j)={0i=jadji,jij

其中adji,j表示点i与点j之间的边数。

定义G的基尔霍夫Kirchhoff矩阵(又称Laplace矩阵)L满足:

K(G)=D(G)A(G)

记无向图G的生成树数量为t(G),有向图根向生成树数量为troot(G,u),有向图叶向生成树数量为tleaf(G,u)

1|1定理

1.无向图矩阵树定理:

i[i,n]t(G)=detK(G)(1,2,i1,i+1,n1,2,i1,i+1,n)

其中K(G)(1,2,i1,i+1,n1,2,i1,i+1,n)即去掉第i行和第i列的矩阵。

2.有向图矩阵树定理:

i[i,n]troot(G)=detKout(G)(1,2,i1,i+1,n1,2,i1,i+1,n)

i[i,n]tleaf(G)=detKin(G)(1,2,i1,i+1,n1,2,i1,i+1,n)

3.BEST定理:
设有向欧拉图G的欧拉回路数量为ec(G),则有

ec(G)=troot(G,i)uV(degu1)!

设以k为起点的欧拉回路数量为ec(G,k),则有

ec(G,k)=troot(G,k)degkuV(degu1)!

当边有边权时,把边权当做重边即可。

1|2证明

参考矩阵树定理及其无向图形式证明

定义图G的关联矩阵M(G)为一个大小为n×m的矩阵并满足:

M(G)={1iistheendofedgej1iisthestartofedgej0otherwise

定义图G的减关联矩阵M0(G)为关联矩阵M(G)去掉最后一行后的大小为(n1)×m的矩阵。

定义图G的子减关联矩阵M0(G)[S]为选出M0(G)中的(n-1)列构成的子集S

引理1:

M×MT=K

证明:

M×MT(i,j)=k=1mM(i,k)×MT(k,j)=k=1mM(i,k)×M(j,k)

i,j不为边k的端点时,贡献为0;

i=j时,M(i,k)=M(j,k),贡献为1,总贡献即为degi

ij时,M(i,k)=M(j,k),贡献为-1,总贡献即为A(i,j)

引理2:

S构成的边集不是生成树,detM0[S]=0,否则detM0[S]=1/1

证明:若S没有构成生成树,那么至少存在一个简单环C(ei1,ei2eik)。首先,对于M0[S]中处于简单环对应的行,恰好有两列非0,而对于简单环对应的列,恰好存在两个元素为1和-1。

要证明det=0,就需要证明i1,i2,ik列线性相关。我们考虑依次合并所有列。我们拿i1行消i2列,那么e1ve2u抵消了,只剩e1u,e2v为1/-1。以此类推,合并到ij(jk)列时,消完后只剩e1u,ejv为1/-1。最后合并到第k1列时,已经和第ik相等了,这就证明了i1,i2,ik列线性相关,也就说明了detM0[S]=0

引理3:Binet-Cauchy定理

Sdet(AS)×det(BS)=det(C)

其中A是一个m×n的矩阵,B是一个n×m的矩阵,C是一个n×n的矩阵,满足C=B×AS是集合{1,2,m}的一个大小为n子集,AS表示A中保留S行得到的n×n的矩阵,BS表示B中保留S列得到的矩阵。

P,Q是两个长度为n的排列,那么等式左边等于:

S(P(1)λ(P)iASi,Pi)(Q(1)λ(Q)iBi,SQi)

=S(P(1)λ(P)iASi,Pi)(Q(1)λ(Q1)iBQQi1,SQi)

=S(P(1)λ(P)iASi,Pi)(Q(1)λ(Q1)iBQi1,Si)

=S(P(1)λ(P)iASi,Pi)(Q(1)λ(Q)iBQi,Si)

再因为λ(PQ)λ(P)+λ(Q)的奇偶性相同可得:

=SPQ(1)λ(P)+λ(Q)iASi,PiBQi,Si

等式右边有:

det(C)=P(1)λ(P)iCi,Pi

又因为C(i,j)=k=1mB(i,k)A(k,j),所以:

det(C)=P(1)λ(P)i(k=1mB(i,k)×A(k,Pi))

R是一个从1~m中选n个数的可重排列,那么就有:

=P(1)λ(P)Ri=1nBi,RiARi,Pi

我们发现,如果R中存在两个相同元素Ri=Rj,那么对于P和交换Pi,Pj后的P,他们会抵消,因此我们可以只用关心R是无重排列的情况,即先枚举一个大小为S的子集,再枚举排列,那么有:

=SQP(1)λ(P)iBi,SQiASQi,Pi

=SQP(1)λ(P)iBQi,SiASi,PQi

枚举P=PQ,可得:

=SQP(1)λ(P)+λ(Q)iBQi,SiASi,Pi

=SPQ(1)λ(P)+λ(Q)iASi,PiBQi,Si

证毕。

最后是证明为什么去掉基尔霍夫矩阵最后一行最后一列的是对的(其他情况同理)。

由引理1可得:K0=M0×M0T,再由引理3可知detK0=SdetM0[S]detM0T[S]=Sdet2M0[S],再由引理2可知,若边集S构成生成树,则贡献为(±1)2=1,若不构成生成树则贡献为0,因此detK0就是生成树数量。

1|3例题

1.【模板】Matrix-Tree 定理

题意:求一个图(可能有向有可能无向)的生成树权值和,权值定义为边权的乘积。

思路:模板题,只是要求边权乘积,把边权当成重边就可以了。

2.[JSOI2008]最小生成树计数/[JSOI2010] 巨额奖金

题意:求一个图的最小生成树数量。

思路:首先我们要观察到最小生成树的两个性质:一是对于所有最小生成树,权值相同的边数量相等 , 二是只连接权值w的边时,所有最小生成树的连通性相同。有了这两个性质就很简单了。首先,我们假设现在要处理权值为w的边,那么就把已经连上了边权<w的边的连通块缩起来,然后对新图加入权值为w的边,求出生成树数量,最后根据乘法原理将每一种在最小生成树上出现过的权值的贡献乘起来即可。

3.[省选联考 2020 A 卷] 作业题

题意:对于无向图G的一棵生成树T,定义T的权值为(i=1n1wei)×gcd(we1,we2,wen1),其中w为边权,求所有生成树的权值和。

思路:考虑莫反:

T(i=1n1wei)×gcd(we1,we2,wen1)

=Ti=1n1weid|we1,d|we2d|wen1φ(d)

因此我们枚举d,去掉原图中边权不是d的倍数的边建成一张新图,然后就只需求Ti=1n1wei。但是常规的矩阵树定理只能求边权乘积,那怎么求边权和呢?容易( 其实不容易 )想到把边权换作1+weix,那么求出乘积后的x1项的系数就是原先的边权和,并且我们在计算时只用保留常数项和一次项即可。


__EOF__

本文作者Xttttr
本文链接https://www.cnblogs.com/Xttttr/p/17246141.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Xttttr  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示