【笔记】图论:图的计数相关定理

归类为线性代数、图论。证明都是神仙,特别是名字带“理”的,不证了。

矩阵树定理

矩阵树定理(Matrix Tree)被用来计数无向图或有向图的生成树个数。前置条件:图中没有自环。

经典

一个无向无权图,取出它的邻接矩阵 \(A\),度数矩阵 \(D\)(意思是 \(D[i][i]\) 是点 \(i\) 连接的边的条数,其他地方是零)。

则基尔霍夫(Kirchhoff)矩阵为:\(K=D-A\)

随意选择 \(k\),去掉 \(K\) 中的第 \(k\) 行和第 \(k\) 列,得到 \(K'\),则 \(\operatorname{det}(K')\) 为原图的生成树数量。

证明

\(K_{ij}\) 表示 \(K\) 删掉第 \(i\) 行第 \(j\) 列的矩阵,然后下标改成集合 \(K_{S,T}\) 就是只保留集合 \(S\) 中的行和集合 \(T\) 中的列。

我们需要一个 \(n\)\(m\) 列矩阵 \(E\)\(E\) 的第 \(i\) 列都表示一条边 \((u, v)\)\(E[i][u]=1, E[i][v]=-1\),钦定 \(u<v\)

引理:\(K=E\times E^T\)。考虑 \(K[i][i]\)\(\sum_{j}E[i][j]\times E[i][j]\) 意义相同。\(K[i][j]\)\(\sum_k E[i][k]E[j][k]\) 意义相同(都是负数)。

然后记 \(B=E_{11}\),有 Cauchy–Binet 定理是说(\([n]=\{1, 2, 3, \cdots, n\}\)

\[|K_{11}|=|B|\times |B^T|=\sum_{|S|=n-1, S\subseteq[m-1]}|B_{[n-1],S}|\times|B^T_{S, [n-1]}|=\sum_{|S|=n-1, S\subseteq[m-1]}|B_{[n-1],S}|^2. \]

\(S\) 里面有 \(n-1\) 条边,就是我们的一个生成树了。

如果 \(S\) 里面有环,则将环边取出,惊奇的发现这些列加起来 \(=0\),线性相关,行列式为 \(0\)。否则,\(S\) 没有环,发现它的选法就是儿子选父亲,是唯一的,所以就是 \(1\)

按照负数的位置排列成上三角矩阵,就是对角线上想要全部是负数。如果 \(S\) 中有环,会有主元消失,行列式为 \(0\);否则,行列式选法是唯一的,行列式是 \(\pm1\)

证毕。

扩展

对于无向图,如果说边有边权,然后对所有生成树的边权之积求和,我们看作是有边权条重边(默认边权为正),邻接矩阵 \(A[i][j]\) 就变为 \(i\to j\) 有多少条边,度数矩阵 \(D[i][i]\) 就变成点 \(i\) 的边权之和。证明就是将证明中的 \(E\) 的数字改成 \(\pm\sqrt w\) 这样的。

有向图生成树分两种情况:

  • 根向树,这种生成树的每条边都从儿子指向父亲。(部分说法是内向树)
  • 外向树,这种生成树的每条边都从父亲指向儿子。

处理方法如下:邻接矩阵不变,度数矩阵含义换一下。

  • 根向树的度数矩阵是每个点的出度
  • 外向树的度数矩阵是每个点的入度

另外有向图还有根的问题,这里的结论是:去掉哪一行、哪一列,根就是谁。

另一类:边权求和

求所有生成树的边权之和之和。

第一种做法是枚举边,先算一遍有这条边的生成树有多少个,再算一遍没有这条边的生成树有多少个,两个相减得到经过这条边的生成树个数,然后乘上它自己的边权。

第二种做法是,将每条边的边权,原来是 \(w\),现在改成 \(wx+1\) 这个二项式,最后取行列式的一次项系数。
因为注意到乘法:

\[(ax+c)(bx+d)\equiv(ad+bc)x+cd\pmod{x^2}. \]

就是说乘起来之后系数的变化是加。
而且这个二项式的除法很容易:

\[(ax+1)^{-1}\equiv ax-1\pmod {x^2}. \]

除法的另一种:

\[\frac{ax+c}{bx+d}=\frac{(ax+c)(bx-d)}{b^2x^2-d^2}=\frac{abx^2+(bc-ad)x-cd}{b^2x^2-d^2}. \]

这个除法很烦,我们对 \(x^2\) 取模,那么就

\[\frac{ax+c}{bx+d}=\frac{c}{d}-\frac{bc-ad}{d^2}x. \]

加减法和普通多项式一样了。这样就能一次算出所有。注意这里必须是直接除,不能辗转相除。

有一说一,这样将乘法转化为加法的技巧,除了 \([x^1](ax+1)(bx+1)\) 还有 \(\ln e^xe^y\)。不要忘了。

BEST 定理

BEST 定理,值得注意的是 BEST 分别是四个人的名字而不是“最好的”,用于对有向图欧拉回路计数。可以数出互不循环同构的欧拉回路条数。
前置条件注意:必须存在欧拉回路(\(inn_i=out_i\)),必须有至少一条边,必须连通。

它的形式为:有向图 \(G\) 的欧拉回路条数为

\[T\prod_{x\in V}(deg_x-1)! \]

其中 \(T\) 是任意一点为根的根向生成树个数,可以证明任意一个答案都相同。由于出度等于入度,因此这里的 \(deg_x\) 是入度和出度随便取一个。

大致证明:相当于这棵根向树上,你钦定了每个点最后一次经过时走到了它的父亲。

如果题目钦定了起点 \(s\),这里注意答案要乘上 \(deg_s\),因为对于一个欧拉回路,\(s\) 在里面的出现次数明显是 \(deg_s\)。因为它们循环同构了,所以我们强行不让它循环同构,从 \(deg_s\)\(s\) 里面选一个作为欧拉回路开始。
如果题目的(重)边是不区分的,这时又要注意,BEST 定理算出来的边是有区分的,我们除一下重边条数的阶乘即可。
如果题目是无向图,需要钦定一下边的方向。

LGV 引理

LGV 引理,用于计算:在有向无环图上不相交路径的数量/权值和。

具体地,设起点们 \(A=\{a_1,a_2,\cdots,a_n\}\),终点们 \(B=\{b_1,b_2,\cdots,b_n\}\)。然后当然有个 DAG。然后定义一条路径 \(P\) 的权值是边权之积 \(w(P)\)
定义:\(e(i,j)\) 表示 \(i\)\(j\) 的所有路径的权值,\(e(i,j)=\sum_{P:i\to j}w(P)\)
一组不相交路径 \(S=\{P_1,P_2,\cdots,P_n\}\),表示 \(P_i:A_i\to B_{\sigma(i)}\),这里的 \(\sigma(i)\) 是一个排列,一个 \(S\) 对应一个 \(\sigma\)(如果合法的话)。\(S\) 中的路径必须没有公共点。

LGV 引理的结论是:

\[\begin{vmatrix} e(A_1,B_1)&e(A_1,B_2)&\cdots&e(A_1,B_n)\\ e(A_2,B_1)&e(A_2,B_2)&\cdots&e(A_2,B_n)\\ \vdots&\vdots&\ddots&\vdots\\ e(A_n,B_1)&e(A_n,B_2)&\cdots&e(A_n,B_n) \end{vmatrix}=\sum_{S:A\to B}(-1)^{\operatorname{sgn}(\sigma(S))}\prod_{i=1}^n w(P_i). \]

这里的 \(S\) 必然是不相交路径,否则不算进去。\(\sigma(S)\),改个定义是 \(S\) 对应的排列 \(\sigma\)\(\operatorname{sgn}\) 是排列逆序对数,老朋友了。

如果有:“只要路径两两不相交,那么每个起点 \(A_i\) 只能到达和它对应的那个终点 \(B_i\)” 这一限制的话,那么就可以忽略掉公式中 \((-1)^{\operatorname{sgn}(\sigma(S))}\) 这一项了。因为此时任意一组不相交路径的方案,对应的排列 \(P\) 都是 \(1,2,3,⋯n\),也就是没有逆序对。但是如果没有上面那个限制,比如说 NOID1T2,第一层的第 \(i\) 个点最终不一定会走到最后一层的第 \(i\) 个点,那么就要考虑那个 \(-1\) 的次数带来的影响,这一题就是发现交点个数的奇偶性和最终起终点排列逆序对数的奇偶性相同,所以直接用 LGV 引理。——Luogu@AK_Dream

例题

洛谷题号吧,洛谷的模板题和题解还是很行的。

题解没有必要了,该讲的在上面都有。

posted @ 2023-07-21 19:29  caijianhong  阅读(21)  评论(0编辑  收藏  举报