码迷,mamicode.com
首页 > 其他好文 > 详细

图的计数

时间:2017-09-22 15:31:09      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:color   节点   一个   等价   个数   分析   分享   连通图   方案   

无标号计数与带标号计数

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

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

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

  最常见的例子就是组合与排列, 它们还满足一组特殊的关系: 组合数 * 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$ .

  

  

图的计数

标签:color   节点   一个   等价   个数   分析   分享   连通图   方案   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!