\(~\)
做 P4455 [CQOI2018]社交网络 的时候,因为没看出外向树直接发呆了,然后发现不太会证明矩阵树定理,其实 zhouxj 讲过,但是因为太复杂了,以及考场现推的几率很小,于是默认跳过这个证明了,但是刚好发现了 比较简洁的证明,于是加了点自己的理解就有这篇感性理解文章。
如果想学习理性证明,推荐看 基尔霍夫定理_VFleaKing 的博客-CSDN 博客,博主只会感性理解。
博主写本文的时候可能会太困而脑抽,于是如果有些地方写错了,欢迎与我联系。
考虑排列 \(P = (p_1, p_2, \dots p_n)\),那么考虑将 \((1, 2, \dots, n)\) 每次交换两个数,最后生成 \(P\),显然所有交换方案的次数在 \(\bmod ~2\) 意义下都是一样的,同时和逆序对奇偶性相同。
如果 \(P\) 写成置换环形式,整个图成了一个大环,那么所有交换方案的次数和环长 - 1 相同。
考虑最小交换次数即可。
对于一个排列 \(P = (p_1, p_2, \dots, p_n)\),新建一个有向图,其中 \(i\) 向 \(p_i\) 连边,那么整个图的环的个数的奇偶性和 $n - $ 逆序对个数的奇偶性相同。
求和即可。
接下来,我们考虑无向图的生成树可以怎么算。
注意每个节点的父亲是唯一的,于是我们可以先钦定一个根,然后每个节点选一条边确定一个父亲,但是会有形成环的出现,于是我们可以考虑容斥,钦定若干节点会形成环,其他节点可以乱选,将最后的方案乘上 \((-1)^{环个数}\) 即可。
看到 \((-1)^{环个数}\),我们可以想到行列式,首先我们写下整个图的邻接矩阵(注意此时在矩阵中 \(mat_{i, i} = 0\)),钦定一个根,删去有关的行和列,然后就可以求一下行列式,就给每个点确定父亲了,因为行列式自带 \((-1)^{逆序对}\) 的系数,那么我们可以将整个邻接矩阵的所有系数取反,于是就是 \((-1)^{n - 逆序对}\) 的系数了,也就是 \((-1)^{环个数}\) 了。
于是我们已经实现了钦定所有的点都必须被环包含的情况。
现在,我们还要钦定若干节点乱选,于是我们可以将矩阵的对角线赋值上其度数,然后就是乱选了。
于是就是矩阵树定理的形式了。同时可以发现矩阵树定理的本质就是对环进行容斥。
上面进一步可以拓展到有向图上面,同时也可以方便感性理解背诵外向树生成树矩阵树定理是入度矩阵。
以外向树为例:
进而我们可以感性理解了外向树矩阵树定理用的是入度矩阵了。
如果我们要求的是无向图的生成森林呢?
有两种办法:
于是我们惊喜地发现,两个写法唯一的不同就是删了一个点有关行列还是没删(,但是好像都是对的(
才不会告诉你是写最小生成树计数的时候惊喜地发现的一个地方
可能是数据水了导致都 AC 了,如果有问题欢迎练习博主。