题解 SP4420 【KPGRAPHS - Counting Graphs】

小粉兔

2020-06-03 02:03:09

题解

和 sys 聊天的时候他说审题解会审到很多有趣的题目,然后我让他推荐几题,他跟我说了这题。

然而目前好像没看到这题有题解,难道是他拒绝了?

我觉得这题也不会很有趣吧,就是中规中矩的图计数问题,纯理性愉悦内容,比赛基本不考的那种。

本着服务大众的理念,来普及一下这些简单的图计数。

进入正题,要计数三种图(简单有标号无向图):

  1. 连通图
  2. 欧拉图(即可以一笔画的图)
  3. 二分图

连通图

n 个点的连通图数量为 a_n,特别地,规定 a_0 = 0,令 \displaystyle \hat A = \mathbf{EGF}(a) = \sum_{i = 0}^{\infty} \frac{a_i}{i!} z^i,即 a 的指数型生成函数。

n 个点的图数量为 d_n,显然有 \displaystyle d_n = 2^{\binom{n}{2}}

根据图计数理论有 \displaystyle \hat A = \ln \mathbf{EGF}(d)

如果 \hat G = \ln \hat F,两边求导移项得 \hat F {\hat G}' = {\hat F}',比较系数后不难得到递推式。

欧拉图

n 个点的欧拉图数量为 b_n,特别地,规定 b_0 = 0,令 \displaystyle \hat B = \mathbf{EGF}(b) = \sum_{i = 0}^{\infty} \frac{b_i}{i!} z^i,即 b 的指数型生成函数。

n 个点的,每个点的度数都是偶数的图数量为 e_n,有 \displaystyle e_n = 2^{\binom{n - 1}{2}},特别地,规定 e_0 = 1

这是因为考虑前 (n - 1) 个点组成的任意图,加入第 n 个点时仅和 1 \sim (n - 1) 号点中度数为奇数的点连边,得到最终的图。据此 n 个点的每个点的度数都是偶数的图,与 (n - 1) 个点的任意图是一一对应的,于是前式得证。

一张图是欧拉图,当且仅当图中的每个点的度数都是偶数,且是图是连通图。

根据图计数理论有 \displaystyle \hat B = \ln \mathbf{EGF}(e)

同上,求导比较系数后不难得到递推式。

二分图

EntropyIncreaser 已经在 UOJ Goodbye Jihai D. 新年的追逐战 中运用了类似方法求出此序列,可以查看他的 题解。

n 个点的二分图数量为 c_n,特别地,规定 c_0 = 1,令 \displaystyle \hat C = \mathbf{EGF}(c) = \sum_{i = 0}^{\infty} \frac{c_i}{i!} z^i,即 c 的指数型生成函数。

考虑求出 n 个点的点二染色(黑白染色)图数量 f_n,令 \hat F = \mathbf{EGF}(f)

容易得到:\displaystyle \hat F = \sum_{i = 0}^{\infty} \sum_{j = 0}^{\infty} \binom{i + j}{i} 2^{i j} \frac{z^{i + j}}{(i + j)!}

即可以 \mathcal O (m^2) 的时间复杂度求出 f 的前 m 项,若要追求更优的复杂度可以参考:

根据 Chirp Z-Transform,可以进行如下推导:

\begin{aligned} \hat F &= \sum_{i = 0}^{\infty} \sum_{j = 0}^{\infty} \binom{i + j}{i} 2^{i j} \frac{z^{i + j}}{(i + j)!} \\ &= \sum_{i = 0}^{\infty} \sum_{j = 0}^{\infty} \frac{2^{ij}}{i! j!} z^{i + j} \\ &= \sum_{i = 0}^{\infty} \sum_{j = 0}^{\infty} \frac{2^{-\binom{i}{2}}}{i!} \frac{2^{-\binom{j}{2}}}{j!} 2^{\binom{i + j}{2}} z^{i + j} \\ &= \sum_{n = 0}^{\infty} 2^{\binom{n}{2}} z^n \left[ [y^n] {\left( \sum_{i = 0}^{\infty} 2^{-\binom{i}{2}} \frac{y^i}{i!} \right)}^2 \right]\end{aligned}

使用快速多项式乘法即可得到更优的复杂度,但在本题中这不是必要的。

考虑到每个连通二分图均有两种染色方案,令 n 个点的连通二分图数量为 g_n,令 \hat G = \mathbf{EGF}(g),特别地,规定 g_0 = 0

2 \hat G 即为点二染色连通二分图的指数型生成函数。

根据图计数理论有 2 \hat G = \ln \hat F

同样地还有 \hat C = \exp \hat G

\displaystyle \hat C = \exp \frac{\ln \hat F}{2} = {\hat F}^{1 / 2}

两边求导移项得 2 \hat C {\hat C}' = {\hat F}',比较系数后不难得到递推式。