无标号计数与带标号计数

本文为转载

原文地址:http://www.cnblogs.com/Sdchr/p/7572978.html

无标号计数与带标号计数

  无标号就是在观测上不考虑个体的差异, 带标号就是在观测上考虑个体的差异.

  对于无标号计数, 我们可以按照某种关键值, 给所有的元素进行定序, 所有无标号计数等价于定序计数.

  对于带标号计数, 我们可以任意设置关键值, 所以带标号计数等价于不定序计数.

  最常见的例子就是组合与排列, 它们还满足一组特殊的关系: 组合数 * n! = 排列数.

有向图 / 无向图


带标号无向图的 度数的K次方 的和

  分析

  $$ans = n \sum_{d = 0} ^ {n - 1} \binom{n-1}{d} d ^ K 2 ^ {\binom{n-1}{2}} = n 2 ^ {\binom{n-1}{2}} \sum_{d = 0} ^ {n - 1} \binom{n-1}{d} d ^ K$$

  $$\begin{aligned} \sum_{d = 0} ^ n \binom{n}{d} d ^ K & = \sum_{d = 0} ^ n \binom{n}{d} \sum_{i = 0} ^ K S_2(K, i) d ^ {\underline{i}} \ & = \sum_{d = 0} ^ n \binom{n}{d} \sum_{i = 0} ^ K S_2(K, i) i! \binom{d}{i} \ & = \sum_{i = 0} ^ K S_2(K, i) i! \sum_{d = i} ^ n \binom{n}{d} \binom{d}{i} \ & = \sum_{i = 0} ^ K S_2(K, i) i! \sum_{d = i} ^ n \binom{n}{i} \binom{n - i}{d - i} \ & = \sum_{i = 0} ^ K S_2(K, i) i! \binom{n}{i} \sum_{d = i} ^ n \binom{n - i}{d - i} \ & = \sum_{i = 0} ^ K S_2(K, i) i! \binom{n}{i} \sum_{d = 0} ^ {n - i} \binom{n - i}{d} \ & = \sum_{i = 0} ^ K S_2(K, i) n ^ {\underline{i}} 2 ^ {n - i} \end{aligned}$$

  $$S_2(m, k) = \frac{1}{k!} \sum_{s = 0} ^ {k} \binom{m}{s} (-1) ^ s (k - s) ^ m$$

  小结

  看到 \(x ^ k\) , 可以尝试使用 Stirling 数进行展开.

带标号无向图的 度数之和/边数 的K次方

  分析

  记 \(m(s)\) 为图 \(s\) 的边数, 则所求可以通过边数进行转化.

  \(ans = \sum_{s} (\sum_{i} d_i) ^ K = \sum_{s} (2m(s)) ^ K = 2 ^ K \sum_{s} m(s) ^ K\) .

  \(\begin{aligned} \sum_{s} m(s) ^ K & = \sum_{s} \sum_{i} S_2(K, i) i! \binom{m(s)}{i} \\ & = \sum_{i} S_2(K, i) i! \sum_{s} \binom{m(s)}{i} \end{aligned}\) .

  考虑 \(f(i) = \sum_{s} \binom{m(s)}{i}\) 的组合意义, 即对于所有的 n 个点的简单图, 求取出 \(i\) 条边的方案数的和. 那么显然枚举选取结果, 然后其余随便选不选, 即 \(f(i) = \binom{\binom{n}{2}}{i} 2 ^ {\binom{n}{2} - i}\) .

带标号无向连通图计数

  **分析
**

  设 n 个点的带标号无向连通图的个数为 \(f_n\) , n 个点的带标号无向图的个数为 \(g_n\) .

  显然 \(g_n = 2 ^ {\binom{n}{2}}\) .

  第一种想法是建立 \(f_n\) 的递推式.

  \(f_n = g_n - \sum_{i = 1} ^ {n-1} \binom{n-1}{i-1} f_i g_{n-i}\) .

  第二种想法是建立 \(f_n\)\(g_n\) 的关系.

  设 \(g\) 的指数型生成函数为 \(G\) , \(f\) 的指数型生成函数为 \(F\) .

  现在要进行排列计数, 且合并次数任意, 所以 \(G = e ^ {F(x)}\) , 即 \(F(x) = \ln G\) .

  小结

  对于 "连通图" 的限制条件, 我们通常有两种想法:

  ① 考虑计算 \(f_n\) . 我们去掉这个限制条件, 再减去不连通的图的个数. 至于不连通图的图的个数, 我们考虑枚举 1 号点所在的连通块的大小, 然后就可以进行递推了, 还可以使用 FFT 进行优化.

  ② 考虑构建指数型生成函数, 进行排列计数, 且合并次数任意, 所以 \(G = e ^ {F(x)}\) .


带标号 有根树/无根树 计数

  分析

  我们对于一棵 n 个带标号节点的无根树, 每次选择标号最小的叶子节点, 把与它相邻的点加入 prufer 序列中, 然后删除该点, 可以唯一地构造长度为 n-2 的prufer序列.

  对于一个长度为 n-2 , 每一项在 1 到 n 之间的数列, 我们把每个节点的度数求出来, 然后每次将度数为 1 , 标号最小的点与 prufer 序列的当前项进行连边, 然后把两个点的度数减 1 , 可以唯一地逆构造成一棵 n 个节点, 带编号的无根树.

  由此知道, n 个节点的无根树, 与长度为 n-2 , 各项在 1 到 n 之间的 prufer 序列一一对应.

  n 个节点, 带编号的无根树有 \(n ^ {n-2}\) 种.

  对于有根树, 我们对无根树选定一个根, 所以有 \(n ^ {n - 1}\) 种.

  小结

  树的计数的相关问题, 我们要想到 prufer 序列.

每个点度数确定的带标号树的个数

  分析

  设第 i 个点的度数为 \(d_i\) , 那么 prufer 序列中, \(i\) 出现的次数为 \(d_{i-1}\) 次, 所以答案为 \(\binom{n-2}{d_1-1, d_2-1, ..., d_n - 1}\) .

基环树计数

  分析

  我们枚举环的大小 s , 选取 s 个节点作为环上的点, 再枚举环的结构, 即乘上系数 \(\binom{n}{s} (s-1)!\) .

  接下来考虑统计 n 个节点划分为 s 棵根节点确定的有根树的方案数.

  技术分享

  如上图所示, 我们建立一个虚拟节点, 将所有的根节点与这个虚拟节点, 虚拟节点的权值设置为无穷大 INF , s 个根节点的设置为比无穷大小一点的无穷大 INF‘ , 现在相当于统计这棵树的 prufer 序列的个数, 满足长度为 n+1-2 = n-1 , 第 1 位到第 n-1-s 位为任意, 第 n-s 位为 INF‘ , 第 n-s+1 位到第 n-1 位为 INF , 所以方案数为 \(n ^ {n - s - 1} s\) .

二叉树


无标号二叉树计数

  分析

  设 \(f_n\)\(n\) 个点的无标号二叉树个数.

  先给结论, \(f_n\) 为卡特兰数的第 \(n\)\(C_n = \frac{\binom{2n}{n}}{n+1}\) .

  边界为 \(f_0 = 1\) .

  转移时我们考虑枚举左边的点的个数, 可以得到 \(f_n = \sum_{i + j + 1 = n} f_i f_j\) .

  构建 \(f_0, f_1, ...\) 的生成函数 \(F(x) = \sum_{i} f_i x ^ i\) .

posted @ 2020-01-27 18:14  Hs-black  阅读(696)  评论(0编辑  收藏  举报