Description
\(\rm Link.\)
Solution
设 \(f_i\) 为节点数为 \(i\) 时叶子节点数的期望,状态转移还需要定义 \(g_i\) 为节点数为 \(i\) 的二叉树种类来计算概率。容易写出 \(g\) 的转移方程式(就是枚举子树大小,\(g_0=g_1=1\))
\[g_n=\sum_{i=0}^{n-1} g_ig_{n-i-1}
\]
可以发现,这实际上就是卡特兰数。所以 \(g_n=\frac{1}{n+1}\cdot \binom{2n}{n}\).
写出 \(f\) 的转移方程式(\(f_0=0,f_1=1\))
\[f_n=\sum_{i=0}^{n-1}(f_i+f_{n-i-1})\cdot \frac{g_i g_{n-i-1}}{g_n}
\]
需要注意的是,这里递推的 \(n\) 应该从 \(2\) 开始,因为大小为 \(1\) 就是叶子节点了。
容易发现,\(j=i\) 与 \(j={n-i-1}\) 对应的系数 \(g\) 是一样的,于是式子可以改写为
\[=\sum_{i=0}^{n-1}2f_i\cdot \frac{g_i g_{n-i-1}}{g_n}
\]
那么有
\[f_n\cdot g_n=\sum_{i=0}^{n-1}2f_i\cdot g_i g_{n-i-1}
\]
记 \(h_i=f_ig_i\),构造 \(h_i\) 的普通生成函数 \(H(x)\), \(g_i\) 的普通生成函数 \(G(x)\).
类似卡特兰数的封闭形式推导,我们也可以推出 \(H(x)\) 的封闭形式
\[\begin{align}
H(x)&=\sum_{n\ge 0}f_ng_n\cdot x^n\\
&=0+x+\sum_{n\ge 2}f_ng_n\cdot x^n\\
&=x+\sum_{n\ge 2}x^n\cdot \sum_{i=0}^{n-1}2f_i\cdot g_i g_{n-i-1}\\
&=x+2\cdot\sum_{n\ge 2}x^n\cdot \sum_{i=0}^{n-1}h_i\cdot g_{n-i-1}\\
&=x+2xH(x)G(x)
\end{align}
\]
从而解出
\[H(x)=\frac{x}{\sqrt{1-4x}}
\]
如果令 \(H'(x)x=H(x)\),那么就有 \(H'(x)=(1-4x)^{-\frac{1}{2}}\)。这个结构和 "泰勒展开" 中的 "\(\frac{1}{(1-x)^{a+1}}\)" 的结构非常相似,于是可以用相同的方法进行推导(将 \(H'(x)\) 在 \(x_0=0\) 处展开)
\[\begin{align}\frac{1}{(1-4x)^{1/2}}&=\sum_{i=0}^{\infty}\frac{4^i\cdot \prod_{j=0}^{i-1}((2j+1)/2)}{(1-4x_0)^{(2i+1)/2}\cdot i!}\cdot x^i\\&=\sum_{i=0}^{\infty}\frac{2^i\cdot (2i-1)!!}{i!}\cdot x^i\end{align}
\]
这里有一个以奇数为开头的双阶乘,类比卡特兰数的通项公式推导,可以这样搞
\[\begin{align}&=\sum_{i=0}^{\infty}\frac{2^i\cdot (2i)!}{i!\cdot (2i)!!}\cdot x^i\\&=\sum_{i=0}^{\infty}\frac{(2i)!}{i!\cdot i!}\cdot x^i=\sum_{i=0}^{\infty}\binom{2i}{i}\cdot x^i\end{align}
\]
让我们高声赞美泰勒展开!
而 \(H(x)\) 相当于 \(H'(x)\) 右移一项,那么它的第 \(n\) 项系数为 \({\rm C}(2n-2,n-1)\).
所以 \(f_i=\frac{n(n+1)}{2(2n-1)}\).
Code
这就不用放代码了吧。