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)\).

类似卡特兰数的封闭形式推导[1],我们也可以推出 \(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

这就不用放代码了吧。

  1. 实际上是利用函数的卷积,与重复的结构。 ↩︎

posted on 2021-02-19 20:34  Oxide  阅读(44)  评论(0编辑  收藏  举报