有无标号计数

有标号有根树

\(n^{n-1}\)

有标号无根树

\(n^{n-2}\)

标号为\(i\)的点度数为\(a_i\)的无根树

\(\frac{(n-2)!}{\prod(a_i-1)!}\)

无标号有根树

设\(f_n\)表示n个点的无标号有根树数量 ,\(f\)的生成函数为\(F(x)\)

我们考虑去除根节点的各个子树,可以分成若干个子问题,枚举大小为\(k\)的子树有多少个,再枚举大小为\(k\)的子树的\(f_k\)个形态选多少个
\[
\begin{split}
[x^{n}]F(x)&
=[x^{n}]x\prod_{k>0}(\sum_{i \geq 0}x^{ik})^{f_k}\\&
=[x^{n}]x\prod_{k>0}(\frac{1}{1-x^k})^{f_k}\\&
=[x^{n}]x\prod_{k>0}({1-x^k})^{-f_k}\\&
\end{split}
\]
将\([x^{n}]\)去掉
\[
F(x)=x\prod_{k>0}(1-x^k)^{-f_k}
\]
两边取\(ln\)
\[
\begin{split}
lnF(x)&
=ln(x\prod_{k>0}(1-x^k)^{-f_k})\\&
=ln(x)+\sum_{k>0}ln((1-x^k)^{-f_k})\\&
=ln(x)-\sum_{k>0}f_kln((1-x^k))\\&
\end{split}
\]
两边同时求导
\[
\frac{F'(x)}{F(x)}=\frac{1}{x}+\sum_{k>0}f_k \frac{kx^{k-1}}{1-x^k}
\]
化简
\[
xF'(x)=F(x)+F(x)\sum_{k>0}f_kk \frac{x^k}{1-x^k}
\]
比较第n项系数
\[
nf_n=f_n+\sum_{i>0}f_i\sum_{k>0}f_kk([x^{n-i}] \frac{x^k}{1-x^k})
\]
又由\(\frac{x^k}{1-x^k}=\sum_{i=1}x^{ik}\)


\[
\begin{split}
nf_n &
=f_n+\sum_{i>0}f_i\sum_{k>0}f_kk[k|n-i]\\&
=f_n+\sum_{i>0}f_i\sum_{k|n-i}f_kk
\end{split}
\]

\[
f_n=\frac{\sum_{i=1}^{n-1}f_i\sum_{k|n-i}f_kk}{n-1}
\]

这样直接算\(O(n^2)\)的,可以分治\(NTT\)做到\((Onlog^2n)\)

无标号无根树

我们发现树只有1/2个重心,我们可以钦定这棵无根树的根为它的重心

1.\(n\)为奇数。那么只有一个重心,若根不是重心, 那么其一定有恰好一颗子树,其大小超过\(\lfloor\) \(\frac{n}{2}\) \(\rfloor\), 枚举这个子树的大小并且扣去:
\[
h_n=f_n-\sum_{k= \lfloor \frac{n}{2} \rfloor+1}^{n-1}f_k f_{n-k}
\]
2.\(n\)为偶数。此时可能有两个重心,若根不是重心/是唯一一个重心,按照上式算即可,但若根是两个重心之一,会重复计算,要减去
\[
h_n=f_n-(\sum_{k=\frac{n}{2}+1}^{n-1}f_k f_{n-k})-C_{f_\frac{n}{2}}^{2}
\]

有标号无向图

\(2^{C_n^2}\)

所有点度数都是偶数的有标号无向图

\(2^{C_{n-1}^2}\)

有标号无向连通图

设\(F\)表示有标号无向连通图的\(EGF\),\(G\)表示有标号无向图的\(EGF\),则
\[
G=e^F
\]

\[
F=lnG
\]

原文地址:https://www.cnblogs.com/zhongzero/p/11788475.html

时间: 2024-10-09 00:03:37

有无标号计数的相关文章

图的计数

无标号计数与带标号计数 无标号就是在观测上不考虑个体的差异, 带标号就是在观测上考虑个体的差异. 对于无标号计数, 我们可以按照某种关键值, 给所有的元素进行定序, 所有无标号计数等价于定序计数. 对于带标号计数, 我们可以任意设置关键值, 所以带标号计数等价于不定序计数. 最常见的例子就是组合与排列, 它们还满足一组特殊的关系: 组合数 * n! = 排列数. 有向图 / 无向图 带标号无向图的 度数的K次方 的和 分析 $ans = n \sum_{d = 0} ^ {n - 1} \bin

Drainage Ditches

题目链接 题意: n个点,m条边,求1点到n点的最大流 N (0 <= N <= 200) and M (2 <= M <= 200). struct Edge { int from, to, cap, flow; bool operator< (const Edge& rhs) const { return from < rhs.from || (from == rhs.from && to < rhs.to); } }; const i

Alice&amp;#39;s Chance

id=1698" style="background-color:rgb(51,255,51)">主题链接 意甲冠军: 爱丽丝要拍电影.有n部电影,规定爱丽丝第i部电影在每一个礼拜仅仅有固定的几天能够拍电影,且仅仅能在前wi个周拍,而且这部电影要拍di天才干结束.问爱丽丝能不能拍全然部的电影 第一行代表有多少组数据,对于每组数据第一行代表有n部电影,接下来2到n+1行,每行代表一个电影,每行9个数,前面7个数,1代表拍.0代表不拍,第8个数代表要拍几天,第9个数代表有几

hdu 4494 Teamwork (可行流的最小流)

去年通话邀请赛的B题,当时竟然过的那么少...明明是一道很裸的可行流最小流麽..只要对每种人分别求一下可行最小流加起来就可以了.建图是对每个点拆点,容量上下届都设为v[i],然后每个点间能连边的直接连边就可以了.然后在这个图的基础上转化为可行流最小流,求一下就可以了... #include<algorithm> #include<iostream> #include<cstring> #include<vector> #include<cstdio&g

有标号的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_

无标号树的计数原理(组合计数,背包问题,隔板法,树的重心)

闲话 一个计数问题入门级选手来搞这种东西 最初的动力来自高一化学课有机物(滑稽).<同步导练>出了个这样的选择题. 一个结构极其庞大的烷烃(二十几个碳原子),求它的主链长度. 这不是个求树的直径的裸题么?!OI选手扫两眼就出来了,然而别的同学费劲心思找完了还是错的. 于是第一次在常规课中体验到作为OIer的优越感...... 又是一节课,芙蓉姐开始要我们画己烷.庚烷的同分异构体?! 这不是等于要求节点数为\(n\),点度数不超过\(4\)的无标号的无根树个数吗?没见过,但还是有一点DP思想,蒟

有标号的DAG计数I~IV

有标号的DAG计数 最近心血来潮来写一写这个玩意儿. 请特别注意定义生成函数时下标的起始位置. 有标号的DAG计数I 求\(n\)点带标号\(DAG\)的数量模\(10007\).\(n\le5000\). 数据范围显然\(O(n^2)\).设\(f_i\)表示答案,枚举\(DAG\)中入度为零的点的数量\(j\),方案数为\(\binom ij\),将图拆成两个部分,前\(j\)个点向后\(i-j\)个点的连边任意,方案数为\(2^{j(i-j)}\),后\(j\)个点构成一张\(DAG\),

有标号的DAG图计数1~4

前言 我什么都不会,菜的被关了起来. 有标号的DAG图I Solution 考虑递推,设\(f_i\)表示i个点的答案,显然这个东西是可以组合数+容斥递推? 设\(f_i\)表示i个点的答案,我们考虑假设现在有j个点入度为1,那么可以选出的点就是一个组合数\(C_i^j\),边的可能性有两种,对应的就是\(2^{j*(i-j)}\),然后接着搞,肯定这样子算会有重复的,所以容斥一下然后和以前的答案乘起来就好了. \(f_i=\sum_{j=1}^{i}f_{i-j}*-1^{j-1}*C_i^j

有标号的DAG/强连通图计数

COGS索引 一堆神仙容斥+多项式-- 有标号的DAG计数 I 考虑\(O(n^2)\)做法:设\(f_i\)表示总共有\(i\)个点的DAG数量,转移考虑枚举DAG上所有出度为\(0\)的点,剩下的点可以选择连向它,剩下的点之间也可以连边. 但是注意到这样子转移可能会存在剩下的点中有点没有出度的情况,考虑容斥解决:设枚举的出度为\(0\)的点的个数为\(i\)时的容斥系数为\(f_i\),那么一个实际上存在\(x\)个出度为\(0\)的点的DAG的贡献就是\(\sum\limits_{i=1}