$Random$ $Tree$
$Description$
一个有 $n$ 个节点的树可通过等概率选定节点展开的方式生成,现在有问题 $1$ 与 $2$ ,对于问题 $1$ ,求叶节点平均深度的数学期望值,对于问题二,求树深度的数学期望值,约定根节点深度为 $0$ 。
$Solution$
先考虑第一问,求叶节点平均深度的期望值,这一问我们可以设 $f[i]$ 表示一棵有 i 个叶子节点的树的平均深度,总共就有 $f[i] \times i$ 的平均深度和。
显然,此处的贡献就是在当前 $i - 1$ 个节点中选择一个,使深度增加 $2$ ,节点数增加 $1$ ,所以转移方程就是
$$
f[i] \times i = f[i - 1] \times (i - 1) + (f[i - 1] + 1) \times 2 - f[i - 1]
$$
即
$$
f[i] = f[i - 1] + \frac{2}{i}
$$
然后我们考虑第二问。
我们设 $f[i][j]$ 为一棵有 $i$ 个叶子节点的树深度 $>=j$ 的概率。
显然答案就是
$$
E(X) = \sum_{i = 1}^{n - 1}f[n][i]
$$
然后考虑怎么转移。
我们用 $f[i][j]$ 表示转移到的树的状态, $f[k][j - 1]$ 表示左子树的状态, $f[i - k][j - 1]$ 表示右子树的状态。
就有
$$
f[i][j] = \frac{f[k][j - 1] + f[i - k][j - 1] - f[k][j - 1] \times f[i - k][j - 1]}{i - 1}
$$
转移式其实就是代表我们用左子树与右子树拼出了一颗新树,显然形成这棵树的概率是一个容斥的式子,就是左子树深度 $>= j - 1$ 的概率加上右子树深度 $>= j - 1$ 的概率再减去左右子树深度均 $>= j - 1$ 的概率,就是形成这棵新树的概率。
然后我们考虑为什么要除以 $i - 1$ 。
让我们回到上一个状态,当时有 $i - 1$ 个叶子节点个数,我们从中选取一个节点拓展,获得了当前的 $f[i][j]$ ,所以构造出当前的 $f[i][j]$ 有 $\dfrac{1}{i - 1}$ 的概率。
就做完了。
$Code:$
1 |
|