TJOI 2015 概率论(生成函数)

题意

​ 求一棵随机生成的有根二叉树(节点无标号,各种不同构的情况随机出现)叶子结点个数的期望。

思路

​ 用生成函数做是个好题。

​ 我们考虑设 (n) 个节点,所有不同构二叉树叶子结点的总和为 (f_n) 。首先,(n) 个节点的无标号有根二叉树种类数为 (C_n) ,其中 (C_n) 表示卡特兰数。那么递推式比较显然

[egin{align*} f_n&=sum_{i=0}^{n-1}f_{i}C_{n-1-i}+f_{n-1-i}C_i\ &=2sum_{i=0}^{n-1} f_iC_{n-1-i} end{align*} ]

​ 特别的 (f_0=0, f_1=1) (求递推一定要考虑特殊情况,往往前面几项不满足递推)。

​ 我们设数列 ({f_n}) 的生成函数为 (F(x)) , 数列 ({C_n}) 的生成函数为 (G(x))

​ 观察递推式,我们由卡特兰数递推的生成函数推导得到启发,可以将 (F(x)) 乘上 (G(x))

[egin{align*} F(x)G(x)&=f_0C_0x^0+(f_0C_1+f_1C_0)x^1+(f_0C_2+f_1C_1+f_2C_0)x^2+cdots\ &=f_0C_0x^0+{f_2over 2}x^1+{f_3over 2}x^2+{f_4over 2}x^3+cdots\ &={f_2x^1+f_3x^2+f_4x^3+cdotsover2}\ &={F(x)-(f_0x^0-f_1x^1)over 2x}\ &={F(x)-xover 2x}\ end{align*} ]

​ 解得

[F(x)={1over 1-2xG(x)} ]

​ 而卡特兰数的生成函数 (G(x)) 等于 (displaystyle{1-(1-4x)^{1over 2}over 2x})

​ 代入得到

[egin{align*} F(x)&={xover {sqrt{1-4x}}}\ &=x(1-4x)^{-{1over 2}} end{align*} ]

​ 进行广义二项式展开

[egin{align*} F(x)&=xsum_{i=0}^{+infty}{-{1over 2}choose i}(-4x)^i\ &=xsum_{i=0}^{+infty}{(-{1over 2}) imes(-{3over 2}) imescdots imes(-{2i-1over 2})over i!}(-4x)^i\ &=xsum_{i=0}^{+infty}{2^i imes1 imes3 imescdots imes(2i-1)over i!}x^i\ &=xsum_{i=0}^{+infty}{2^i imes{2i!over 2^ii!}over i!}x^i\ &=xsum_{i=0}^{+infty}{2i!over i! i!}x^i\ &=sum_{i=0}^{+infty}{2ichoose i}x^{i+1}\ &=sum_{i=1}^{+infty}{2i-2choose i-1}x^i\ end{align*} ]

​ 于是我们得到了

[f_n=egin{cases} displaystyle{2n-2choose n-1}&n>0\ 0&n=0 end{cases} ]

​ 题目要求的,其实就是 (displaystyle{f_nover C_n}) ,即当 (n=0) 时,答案为 (0) ;否则答案为 (displaystyle{2n-2choose n-1}over displaystyle{{1over n+1}{2nchoose n}})

​ 简化一下,变成了 (displaystyle {n(n+1)over 4n-2}) ,这就是最终的答案。

代码

​ 输入 (n) ,输出 (displaystyle {n(n+1)over 4n-2}) 就行了,要什么代码??

原文地址:https://www.cnblogs.com/Paulliant/p/11670120.html