有无标号计数

有标号有根树

\(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 \]

posted @ 2019-11-03 19:04  zhongzero  阅读(561)  评论(1编辑  收藏  举报