DestinHistoire

 

BZOJ-4001 [TJOI2015]概率论(生成函数+卡特兰数+期望)

题目描述

  对于一棵随机生成的 \(n(1\leq n\leq 10^9)\) 个节点的有根二叉树(所有互相不同构的形态等概率出现),求它的叶子节点数的期望。

分析

  设 \(g(n)\) 为有 \(n\) 个节点的二叉树的不同形态数,设根的左子树有 \(i\) 个节点,则右子树有 \(n-i-1\) 个节点,可以得到递推式($g(0)=1 $):

\[g(n)=\sum_{i=0}^{n-1}g(i)·g(n-i-1)(n\geq1) \]

  显然这是卡特兰数的递推式。

  设 \(f(n)\) 为有 \(n\) 个节点的二叉树所有形态的叶节点数目之和,枚举左子树,同时累加贡献,右子树等价,则递推式为(\(f(1)=1\)):

\[f(n)=2\sum_{i=0}^{n-1}f(i)·g(n-i-1)(n\geq 2) \]

  本题的答案即为 \(\frac{f(n)}{g(n)}\)

  可以发现卡特兰数的递推式与卷积的形式很相似,设它的普通生成函数为 \(G(x)\),利用卷积来构造关于 $ G(x)$ 的方程:

\[\begin{aligned}G(x)&=\sum_{n\geq 0}g(n)x^n\\&=1+\sum_{n\geq 1}g(n)x^{n}\\&=1+\sum_{n\geq 1}\sum_{i=0}^{n-1}g(i)·g(n-i-1)·x^{n}\\&=1+\sum_{n\geq 1}\sum_{i=0}^{n-1}g(i)x^i·g(n-i-1)x^{n-i-1}·x\\&=1+x\sum_{i\geq 0}g(i)x^i\sum_{n\geq 0}g(n)x^{n}\\&=1+xG^2(x)\end{aligned} \]

  解得:

\[G(x)=\frac{1\pm\sqrt{1-4x}}{2x} \]

  将其分子有理化:

\[G(x)=\frac{2}{1\mp\sqrt{1-4x}} \]

  代入 \(x=0\)\(g(0)=1\),满足要求;另一个解会出现分母为 \(0\) 的情况,不收敛,舍弃。

  因此卡特兰数生成函数的封闭形式为:

\[G(x)=\frac{1-\sqrt{1-4x}}{2x} \]

  设 \(f(x)\) 的生成函数为 \(F(x)\),同样利用卷积关系来构造关于 $F(x) $ 的方程:

\[\begin{aligned}F(x)&=\sum_{n\geq 0}f(n)x^{n}\\&=x+\sum_{n\geq 2}f(n)x^{n}\\&=x+\sum_{n\geq 2}\sum_{i=0}^{n-1}2f(i)·g(n-i-1)x^n\\&=x+\sum_{n\geq 2}\sum_{i=0}^{n-1}2f(i)x^i·g(n-i-1)x^{n-i-1}·x\\&=x+2x\sum_{i\geq 0}f(i)x^i\sum_{n\geq 0}g(n)x^n\\&=x+2xF(x)G(x)\end{aligned} \]

  解得 \(F(x)=\frac{x}{\sqrt{1-4x}}\)

  利用 广义二项式定理 展开 \(G(x)\)

\[\begin{aligned}G(x)&=\frac{1-(1-4x)^{\frac{1}{2}}}{2x}\\&=\frac{1-\displaystyle\sum_{i=0}^{\infty}\dbinom{\frac{1}{2}}{i}(-4x)^{i}}{2x}\\&=\frac{1-\displaystyle\sum_{i=0}^{\infty}\dbinom{\frac{1}{2}}{i}(-4)^{i}x^{i}}{2x}\end{aligned} \]

  其中:

\[\dbinom{\frac{1}{2}}{i}=\frac{\frac{1}{2}·(-\frac{1}{2})·(-\frac{3}{2})\cdots(\frac{3}{2}-i)}{i!}=\frac{(-1)^{i}}{2^{i}·i!}\prod_{k=1}^{i}(2k-3) \]

\[\prod_{k=1}^{i}(2k-3)=(-1)·1·3·5\cdots(2i-3)=\frac{(-1)·(2i-2)!}{2·4·6\cdots(2i-2)}=\frac{(-1)·(2i-2)!}{2^{i-1}·(i-1)!} \]

  代回原式:

\[\begin{aligned}G(x)&=\frac{1-\displaystyle\sum_{i=0}^{\infty}\dbinom{\frac{1}{2}}{i}(-4)^{i}x^{i}}{2x}\\&=\frac{1+\displaystyle\sum_{i=0}^{\infty}\frac{(2i-2)!}{2^{2i-1}·i!·(i-1)!}(4x)^i}{2x}\\&=\frac{1+\displaystyle\sum_{i=0}^{\infty}\frac{1}{2i-1}\dbinom{2i}{i}x^{i}}{2x}\\&=\frac{\displaystyle\sum_{i=1}^{\infty}\frac{1}{2i-1}\dbinom{2i}{i}x^{i-1}}{2}\\&=\frac{\displaystyle\sum_{i=0}^{\infty}\frac{1}{2i+1}\dbinom{2i+2}{i+1}x^i}{2}\\&=\displaystyle\sum_{i=0}^{\infty}\frac{1}{4i+2}\dbinom{2i+2}{i+1}x^i\\&=\displaystyle\sum_{i=0}^{\infty}\frac{1}{4i+2}·\frac{(2i+1)·(2i+2)}{(i+1)·(i+1)}\dbinom{2i}{i}x^i\\&=\displaystyle\sum_{i=0}^{\infty}\frac{1}{i+1}\dbinom{2i}{i}x^i\end{aligned} \]

  因此 \(g(n)=\frac{1}{i+1}\dbinom{2i}{i}\)

  同样展开 $F(x) $:

\[\begin{aligned}F(x)&=\frac{x}{\sqrt{1-4x}}\\&=x(1-4x)^{-\frac{1}{2}}\\&=x\displaystyle\sum_{i=0}^{\infty}\dbinom{-\frac{1}{2}}{i}(-4x)^{i}\\&=x\displaystyle\sum_{i=0}^{\infty}\frac{(-\frac{1}{2})·(-\frac{3}{2})\cdots(-\frac{2i-1}{2})}{i!}(-4x)^i\\&=x\displaystyle\sum_{i=0}^{\infty}\frac{(-1)^{i}·1·3\cdots(2i-1)}{2^i·i!}(-4x)^i\\&=x\displaystyle\sum_{i=0}^{\infty}\frac{(-1)^i}{2^i·i!}\frac{(2i)!}{2·4\cdots2n}(-4x)^i\\&=x\displaystyle\sum_{i=0}^{\infty}\frac{(2i)!}{i!·i!}x^{i}\\&=x\displaystyle\sum_{i=0}^{\infty}\dbinom{2i}{i}x^{i}\end{aligned} \]

  因此 \(f(n)=\dbinom{2i-2}{i-1}\)

  则答案为 \(\frac{f(n)}{g(n)}=\frac{n(n+1)}{2(2n-1)}\)

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double n;
    scanf("%lf",&n);
    printf("%.9lf",n*(n+1)/(2*(2*n-1)));
    return 0;
}

posted on 2020-12-02 19:58  DestinHistoire  阅读(204)  评论(0)    收藏  举报

导航