专栏文章

对环的个数进行容斥证明矩阵树定理

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min4oq3q
此快照首次捕获于
2025/12/01 20:31
3 个月前
此快照最后确认于
2025/12/01 20:31
3 个月前
查看原文
图论期中考试不允许提前交卷,没事干于是就想了想课堂上只介绍没证明的矩阵树定理怎么证明(当年打OI的时候把板子过了就没管了...),想到了一种纯粹从行列式每一项来考虑的证明方法,于是打算记录下来.当然这个方法早就有人想出来了,不想看我的证明的可以去看这两篇.
矩阵树(kirchhoff)定理:
G=(V,E)G=(V,E)是一个无自环的无向图.
定义度数矩阵D(G)D(G)
𝐷𝑖𝑖(𝐺)=degi,𝐷ij=0,𝑖𝑗𝐷_{𝑖𝑖}(𝐺)=deg_i,𝐷_{ij}=0,𝑖≠𝑗
A(G)A(G)表示邻接矩阵
定义Kirchhoff 矩阵LL
𝐿(𝐺)=𝐷(𝐺)𝐴(𝐺)𝐿(𝐺)=𝐷(𝐺)−𝐴(𝐺)
GG的所有生成树个数等于LL的任一n1n-1阶代数余子式
证明:
先考虑LL的代数余子式MiiM_{ii}
Mii=a(1)sgn(a)jiLjajM_{ii}=\sum_a(-1)^{sgn(a)}\prod_{j\not=i}L_{ja_j}
其中aa是一个没有ii的排列,sgn(a)sgn(a)表示aa逆序对的个数的奇偶性,偶数为11,奇数为1-1
Lj,ajL_{j,a_j}DjjD_{jj}Ajaj,ajjA_{ja_j},a_j\not=j分别写出来
Mii=a(1)sgn(a)aj=jDjjajj(1)AjajM_{ii}=\sum_a(-1)^{sgn(a)}\prod_{a_j=j}D_{jj}\prod_{a_j\not=j}(-1)A_{ja_j}
考虑(1)sgn(a)aj=jDjjajj(1)Ajaj(-1)^{sgn(a)}\prod_{a_j=j}D_{jj}\prod_{a_j\not=j}(-1)A_{ja_j}代表什么
DjjD_{jj}表示任选点jj相连的边,AjajA_{ja_j}表示选取(j,aj)(j,a_j)这条边
因为aa是一个排列,所以所有(j,aj)(j,a_j)相连会形成一个环(图论里称之为圈),而这些环正好对应这个排列
aj=jDjjajjAjaj\prod_{a_j=j}D_{jj}\prod_{a_j\not=j}A_{ja_j}于是代表选出一个至少包含有(j,aj)(j,a_j)这些边组成的环且E=V1|E|=|V|-1GG的子图的方案数
对于环上相邻三个(或两个)点(j,aj)(aj,aaj)(j,a_j)(a_j,a_{a_j}),在排列中交换aja_jaaja_{a_j}会使整个排列逆序对数量奇偶性反转,而环的大小减11
因此对于每个环,环的大小+1+1与该环代表的排列的逆序对个数奇偶性相同
因此(1)sgn(a)ajj(1)=(1)sgn((j,aj)相连形成的子图的环的个数)(-1)^{sgn(a)}\prod_{a_j\not=j}(-1)=(-1)^{sgn((j,a_j)相连形成的子图的环的个数)}
(1)sgn(a)aj=jDjjajj(1)Ajaj=(1)sgn((j,aj)相连形成的子图的环的个数)aj=jDjjajjAjaj(-1)^{sgn(a)}\prod_{a_j=j}D_{jj}\prod_{a_j\not=j}(-1)A_{ja_j}=(-1)^{sgn((j,a_j)相连形成的子图的环的个数)}\prod_{a_j=j}D_{jj}\prod_{a_j\not=j}A_{ja_j}
生成树个数就是环的个数为00E=V1|E|=|V|-1GG的子图的个数,行列式就是对于环个数的一个容斥
因此生成树个数等于MiiM_{ii}
现在考虑Mij,ijM_{ij},i\not=j
这表示一定选择边(i,j)(i,j)的情况下对于环的个数做容斥
证毕
根据这个方法,有向图的生成树定理也很快就能推出来,这里不再赘述

评论

0 条评论,欢迎与作者交流。

正在加载评论...