对边不交图结构的解析组合分析
定义 \(n\) 个结点的平面图是满足如下条件的图:
- \(n\) 个结点按标号在平面上顺序排列为一个正 \(n\) 边形。
- 边是连接两个结点的直线段,任意两条边不在除端点外的位置交叉。
定义一个平面图的极大连通分量为一个极大的结点集合,满足任意两个集合内节点联通。
给定询问类型参数 \(\text{typ} \in \{0, 1\}\)。
\(\text{typ} = 1\) 时,给定一个整数 \(n\),你需要对每个 \(1\le k< n\) 计数 \(n\) 个点,\(k\) 个极大连通分量的平面图,模 \(998244353\)。
\(\text{typ} = 2\) 时,给定两个整数 \(k, n_0\),你需要对每个 \(k < n \le n_0\) 计数 \(n\) 个点,\(k\) 个极大连通分量的平面图,模 \(998244353\)。
这个是《对不交结构的解析组合分析》里的另一个问题。type1 可以 \(O(n)\),type2 我目前只会 \(O(n\log n)\)。我猜 type2 可以 \(O(n)\),但是我没做出来。
只做到这一步没什么意思,公开了算了。
首先考虑联通图的计数。
取 \(v_1\) 结点的两个连续的邻居 \(v_i, v_j\),则点集 \(\{v_i, v_{i + 1},\dots, v_j\}\) 的诱导子图要么联通,要么是两个分别包含 \(v_i\) 和 \(v_j\) 的联通图。连续意为 \(\nexists i < k < j,\) 边 \((v_1, v_k)\) 存在。这性质是易证的。
从这性质中能看出,我们可以将任意图按与 \(v_1\) 有边的一系列结点分解。假设 \(v_1\) 的度数是 \(d\),第 \(i\) 个与 \(v_1\) 有边的点为 \(v_{t_i}\)。则我们可以将点集划分为 \(\{v_2, v_3, \dots, v_{t_1}\}, \{v_{t_1}, v_{t_1 + 1}, \dots, v_{t_2}\}, \dots, \{v_{t_d}, v_{t_d + 1}, \dots, v_n\}\),其中点集 \(\{v_2, v_3, \dots, v_{t_1}\}\) 与 \(\{v_{t_d}, v_{t_d + 1}, \dots, v_n\}\) 的诱导子图必须联通,而剩余的点集可以从联通或由两个连通图组成这两种可能里选择。假设 \(C(z)\) 是联通图的 GF,第一种即为 \(C - z\),第二种即为 \(C^2\)。作有序选择并剔除 \(d\) 个出现了两次的结点可以知道这种情况的 GF 即为 \(z\dfrac{C^2(C-z+C^2)^{d - 1}}{z^d}\)。因此有
因此可以知道
考虑作代换得到易求复合逆的形式,则换元 \(C = z + zy\),有 \(z^3(1 + y)^3 = z^2(y - y^2)\),即\(\dfrac{y(1 - y)}{(1 + y)^3} = z\)。
接着考虑一般图的计数。
对一张一般图,我们提取 \(v_1\) 所在的联通分量,假设其大小为 \(r\)。需要计数,考虑将这张图分解。这 \(r\) 个结点将点集划分为了 \(r\) 个区间,每个区间的诱导子图都是一张新的一般图(可能点数为 \(0\))以及一个度为 \(0\) 的点。具体地,假设第 \(i\) 个点为 \(v_{t_i}\),则点集被划分为了 \(\{v_{1}, v_2, \dots, v_{t_2-1}\}, \{v_{t_2}, v_{t_2+1}, \dots, v_{t_3 - 1}\}, \dots, \{v_{t_r}, v_{t_r + 1}, \dots, t_n\}\),其中第一个结点是孤立点,剩余的部分组成一张一般图。因此我们可以取一张连通图,将每个结点替换为形如 (结点,一般图) 组成的对即可。假设一般图的 GF 为 \(G(z)\),我们知道这样的对的 GF 即为 \(zG\),并根据 Substitution 构造得 \(G = 1 + C(zG)\)。解 \(G\) 可以考虑
\(C(zG)^3 + C(zG)^2 - 3zG\times C(zG)+2(zG)^2 = 0\),代换 \(C(zG)=G-1\) 并消去一个 \(G\) 能得到 \(G^2 + (2z^2 - 3z - 2)G + 1 + 3z = 0\)。对该式的下一步处理不在讨论范围内。
最后考虑加一元 \(w\) 计数联通分量。
考虑分解的过程,我们提取出了 \(v_1\) 所在的联通分量,用它作为基础划分出了彼此没有影响的区间,并对每个区间分别计数方案数。这样,每次提取都会产生一个新的连通分量,我们只需要在复合后乘 \(w\) 即可。假设一般图的 GF 为 \(G(z, w)\),我们有 \(G = 1 + wC(zG)\),类似地处理可以得到
考虑 \(G = 1 + wy\),经过一些过程可以解得
因此有
\(\text{typ} = 1\)
一个直接的想法就是,\(F(z) = (3 + \sqrt{1 - 8z})^{-n}\) 是 d-finite 的,可以寻找系数满足的整式递推。
采用 ode 自动机或高斯消元都可以解出 \(F(z)\) 系数满足的整式递推,也可以使用 mathematica 等符号计算软件推导。若采用前两种方法,需要在输入 \(n\) 后计算。通过软件推导可以知道
可以 \(O(n)\) 解决本部分。
\(\text{typ} = 2\)
观察拉格朗日反演的形式:
这启示我们逆用拉格朗日反演解决系数提取。具体地,令 \(F(x)\) 满足
则我们知道
其中 \(F(3+\sqrt{1-8F})=z\)。直接牛顿迭代即可 \(O(n_0 \log n_0)\) 解决。
观察可以发现,我们需要的就是提取 \(x^k \circ f\) 的所有系数,其中 \(f\) 满足 \(8 f^3 + 8 f^2 - 6 zf + z^2 = 0\)。容易看出答案系数满足整式递推,考虑应用 ode 自动机。
\(f\) 常数项为 \(0\),不利于递推,考虑 \(f = zg\),我们有 \(8zg^3 + 8g^2 - 6g + 1 = 0\)。这时要提取的就是 \([z^n]F^k(z) = [z^{n - k}] G^k(z)\)。
真的 dfinite 吗?我持保留态度。我没能整出一个彪悍的递推式 /dk
以下是博客签名,与正文无关。
请按如下方式引用此页:
本文作者 joke3579,原文链接:https://www.cnblogs.com/joke3579/p/non-crossing-graph.html。
遵循 CC BY-NC-SA 4.0 协议。
请读者尽量不要在评论区发布与博客内文完全无关的评论,视情况可能删除。