有无标号计数

有标号有根树

(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)个形态选多少个

[egin{split} [x^{n}]F(x)& =[x^{n}]xprod_{k>0}(sum_{i geq 0}x^{ik})^{f_k}\& =[x^{n}]xprod_{k>0}(frac{1}{1-x^k})^{f_k}\& =[x^{n}]xprod_{k>0}({1-x^k})^{-f_k}\& end{split} ]

([x^{n}])去掉

[F(x)=xprod_{k>0}(1-x^k)^{-f_k} ]

两边取(ln)

[egin{split} lnF(x)& =ln(xprod_{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_isum_{k>0}f_kk([x^{n-i}] frac{x^k}{1-x^k}) ]

又由(frac{x^k}{1-x^k}=sum_{i=1}x^{ik})

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

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

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

无标号无根树

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

1.(n)为奇数。那么只有一个重心,若根不是重心, 那么其一定有恰好一颗子树,其大小超过(lfloor) (frac{n}{2}) ( floor), 枚举这个子树的大小并且扣去:

[h_n=f_n-sum_{k= lfloor frac{n}{2} floor+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