图的计数

无标号计数与带标号计数

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

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

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

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

  

  

时间: 2024-10-03 02:22:04

图的计数的相关文章

BZOJ 3456 NTT图的计数 容斥

思路: RT 懒得写了 //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; const int N=(1<<18)+5,mod=1004535809; int tmp[N],R[N],fac[N],A[N],B[N],C[N],niB[N]; int pow(ll x,ll y){

HDU5579 Tower Defence (BestCoder Round #85 D) 计数dp

分析(官方题解): 一点感想:(这个题是看题解并不是特别会转移,当然写完之后看起来题解说得很清晰,主要是人太弱 这个题是参考faebdc神的代码写的,说句题外话,很荣幸高中和faebdc巨一个省,虽然本弱渣高中都没搞过oi) 最短路不等于k,所以根本不存在最短路>=k的,因为存在的话,由最短路知识可知,k+1一定是由k更新过来的,矛盾 所以最短路不等于k,即最短路小于k 然后就是不管是多校还是bc,都能碰到有关图的计数类的dp问题,比如2016多校1的刚性图,计算连通二分图的数量 这个题是计算无

有标号的DAG计数 III

Description 给定一正整数n,对n个点有标号的有向无环图进行计数,这里加一个限制:此图必须是弱连通图.输出答案 mod 10007 的结果. Solution 弱连通图即把边变成无向之后成为连通的图 考虑补集转换,用 \(DAG\) 的方案数减去不连通的方案数 设 \(f[i]\) 为大小为 \(i\) 的\(DAG\)的方案数 可以像 \(DAG I\) 那样求出来 \(g[i]\) 为弱连通图的方案数 \(g[n]=f[n]-\sum_{i=1}^{n}g[i]*f[i-j]*C_

解读人:刘佳维,Spectral Clustering Improves Label-Free Quanti?cation of Low-Abundant Proteins(谱图聚类改善了低丰度蛋白的无标记定量)

一. 概述:(用精炼的语言描述文章的整体思路及结果) 本文选择四个不同的数据集,分为基于谱图数计数和基于峰值强度计数的无标记定量两种情况,对谱图进行聚类算法分析,提高了低丰度蛋白的可检测性,并开发了可直接使用的聚类方法的PD节点. 二. 研究背景: 无标记量化已成为许多基于质谱的蛋白质组学实验中的常见做法.近年来,聚类方法可以改善蛋白质组学数据集的分析的结论已广泛被人们所接受.本文旨在利用光谱聚类推断额外的肽谱匹配,并提高数据集中的无标记定量蛋白质组学数据的质量,改善低丰度蛋白的定量结果,同时提

java 类文件类型

我们所看到的Java字节码是被封装在一个类文件中(扩展名为.class).在这个教程中,就让我们来看看类文件的内部构造. 数据是如何被写入类文件以及类文件的格式是怎样的呢,让我们首先图解看一看Java类文件. Java类文件结构示意图:  上图描绘的Java类文件被分为了不同的区段,包括魔术码(magic).版本(version).常量池(constant pool).访问标识(access flags).(this)类.(super)类.接口(interfaces).域(fields).方法(

简易数字钟设计

简易数字钟设计 一.摘要 信息时代,时间观念深入人心,所以掌握数字钟的设计具有一定的时代意义,并且使用Multisim进行分立元件设计数字钟,可以大大提升个人数字电路的素养. 设计思路是从上至下,先进行数字钟整体框架的设计,考虑各个子芯片的预留端口,再逐个设计各个子电路模块.最终完成了时钟显示,调时,闹钟,定点报时以及万年历的功能.并且总的控制点预留了新功能的接入口,这样子就可以十分方便的进行新功能的加入. 目录 简易数字钟设计... 1 一.摘要... 1 二.前期准备... 2 1.数电知识

[MongoDB]count,gourp,distinct

摘要 上篇文章介绍了CRUD的操作,会了这些,基本上可以完成很多工作了.但如果遇到统计类的操作,那么就需要学习下本篇的内容了. 相关文章 [MongoDB]入门操作 [MongoDB]增删改查 count,gourp,distinct,mapReduce count 作用类似sql中的count函数,用来计数. 如上图所示,列举了不带参数,带参数,以及先find后count的方式. distinct 去重,接收字段参数,语义:按某字段去重.比如上图中,我们按name去重. group 顾名思义是

[复习]多项式和生成函数相关内容

[复习]多项式和生成函数相关内容 多项式 涉及的方面 主要在于多项式的乘法,也就是\(FFT,NTT,MTT\). 但是也多项式的求逆,\(exp\),\(ln\),开根,求导,积分等操作. 多项式乘法 并没有什么好复习的,记好板子就行了.同样也是多项式运算的基础. 泰勒展开&麦克劳林级数 泰勒展开: 如果\(f(x)\)在\(x0\)处存在\(n\)阶导,那么就有: \[\begin{aligned}f(x)&=f(x0)+\frac{f^1(x0)}{1!}(x-x0)+\frac{f

iOS 增量代码覆盖率检测实践

背景 对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久.如果在开发.测试阶段能够提前暴露问题,就有助于避免线上事故的发生.代码覆盖率检测正是帮助开发.测试同学提前发现问题,保证代码质量的好帮手. 对于开发者而言,代码覆盖率可以反馈两方面信息: 1. 自测的充分程度. 2. 代码设计的冗余程度. 尽管代码覆盖率对代码质量有着上述好处,但在 iOS 开发中却使用的不多.我们调研了市场上常用的 iOS 覆盖率检测工具,这些工具主要存在以下四个问题: 1. 第三方工具有