zoukankan      html  css  js  c++  java
  • 概率生成函数(高清重置版)暨 [CTSC2006]歌唱王国

    说明:本文是 ghj1222 的野鸡学校的《概率论与数理统计》课程的课程作业,题目要求不限

    由于 ghj1222 经过了系统化的微积分/概率知识学习,写出来东西会更严谨一些其实也没那么严谨

    引入

    在《高等数学》中,我们学习了常数项级数和函数项级数的内容。对于其中的“幂级数”,我们可以发现,\(x=0\) 的每个幂级数可以与无穷数列一一对应。如果我们不关心自变量 \(x\) 的取值,可以称这个幂级数为该数列的生成函数

    在《概率论》中,我们学习了离散型随机变量,指的是取值在有限个或可数无穷的随机变量。根据概率的公理化定义,对于离散型随机变量 \(X\) 的每个取值 \(X=k\) ,都有一个实数 \(P(X=k)\) 与之对应,我们把这个实数称为概率,所有概率组成分布列。如果离散型随机变量取值是自然数,概率的分布列也可以组成一个无穷数列。

    本文将随机变量取不同值的概率作为统计量,将生成函数与概率结合在一起,引入概率生成函数的概念,并探讨它的一些性质。

    定义

    定义1. 只能取有限个值或可列无穷多个值的随机变量 \(X\)离散型随机变量
    定义离散型随机变量的分布列为 \(P(X=x_k)=p_k(k=1,2,\cdots)\) ,即取得所有可能值的概率的列表。本文讨论的所有离散型随机变量的取值均为自然数,即 \(x_k\in \mathbb{N}\)

    在组合数学的计数问题中,我们常用生成函数表示数列以进行元素的运算。
    定义2. 定义生成函数是以数列 \(\{a_i\}\) 中元素为系数的形式幂级数,即 \(\sum_i a_iz^i\) 。为避免与随机变量 \(X\) 的取值混淆,我们下面都将 \(z\) 设为变量。

    定义3. 取值在自然数上的离散型随机变量 \(X\)概率生成函数\(^{[1]}\)
    \(G(z)=\operatorname{E}(z^X)=\sum_{x}p_xz^x\) 。其中 \(p_x=P(X=x)\) ,下同。

    由定义,我们可以得到最基本的性质:

    性质1. \(G(1)=1\) 。由 \(\sum_xp_x=1\) 得到。而由概率的性质,\(\forall x,p_x\ge 0, \sum_xp_x=1\) ,可以得到,概率生成函数在所有取值为自然数的离散型随机变量 \(X\) 和所有系数非负且满足 \(G(1)=1\) 的幂级数 \(G(z)\) 建立了一一对应的关系。

    性质2. \(p_x=\dfrac{G^{(k)}(0)}{k!}\) 。由定义和幂函数导数的性质不难得到。

    数字特征的性质

    在组合数学中,生成函数是为了方便计数而发明的。因此,概率生成函数的一大优点是可以简化数学期望和方差的计算。下面我们通过概率生成函数求出随机变量的数学期望和方差。

    性质3. \(\operatorname E(X)=G'(1)\)
    证明: \(G'(1)=(\sum_x xp_xz^{x-1})|_{z=1}=\sum_xxp_x=\operatorname{E}(x)\)

    性质4. \(\operatorname{Var}(X)=G''(1)+G'(1)-G'^2(1)\)
    证明:先求二阶原点矩 \(\operatorname E(X^2)=\sum_xx^2p_x\)
    \(=\sum_xx(x-1)p_x+\sum_xxp_x\)
    \(=\sum_xx(x-1)p_xz^{x-2}+\sum_xxp_xz^{x-1}\)
    \(=\sum_xp_x(z^x)''+\sum_xp_x(z^x)'\)
    \(=(\sum_xp_xz^x)''+(\sum_xp_xz^x)'=G''(1)+G'(1)\)
    \(\operatorname{Var}(X)=\operatorname E(X^2)-\operatorname E^2(X)=G''(1)+G'(1)-G'^2(1)\)

    由以上两个数字特征,我们可以发现, \(G^{(k)}(1)\)\(X\)\(k\) 阶 “下降幂”矩,即 \(\sum_x x^{\underline k} p_x\) 。其中, \(x^{\underline k}=\dfrac{x!}{(x-k)!}\) 。根据第二类斯特林数\(^{[2]}\) 的性质,有\(x^k=\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}x^{\underline i}\) 。其中,第二类斯特林数 \(\begin{Bmatrix}n\\m\end{Bmatrix}\) 代表 \(n\) 个不同元素可以组成的 \(m\) 个相同集合的个数,有递推式 \(\begin{Bmatrix}n\\m\end{Bmatrix} = m\begin{Bmatrix}n-1\\m\end{Bmatrix} + \begin{Bmatrix}n-1\\m-1\end{Bmatrix}\) 。由此我们可以推出下面的性质。

    性质5. \(X\)\(k\) 阶原点矩为 \(\operatorname E(X^k)=\sum_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}G^{(i)}(1)\)

    如果我们不使用第二类斯特林数,也可以写为 \(\operatorname E(X^k)=\left.\left(z\dfrac{\part}{\part z}\right)^kG(z)\right|_{z=1}\)

    注意,有时,概率生成函数以及其各阶导数在 \(z=1\) 处不是连续的。这时候需要使用其在 \(z=1\) 处的左极限代替 \(z=1\) 处的值,例如下面的例1。

    函数的性质

    在组合数学中,生成函数之间的乘法,以及指数、对数等操作都具有组合意义。这一点也可以用在概率生成函数上。

    性质6.\(X\)\(Y\) 独立且概率生成函数分别为 \(G_X(z), G_Y(z)\) ,则 \(Z=X+Y\) 的概率生成函数为 \(G_X(z)G_Y(z)\)

    性质7.\(X\) 的概率生成函数为 \(G(z)\) ,则 \(kX\)\(k\) 为正整数) 的概率生成函数为 \(G(z^k)\)

    推广\(X_i\) 的概率生成函数为 \(G_{X_i}(z)\) 且相互独立,且 \(S_N=\sum_{i=1}^N a_iX_i\) ,正整数 \(a_i\ge 1\) ,则 \(S_N\) 的概率生成函数为 \(\prod_{i=1}^N G_{X_i}(z^{a_i})\)

    推广\(X_i\) 的概率生成函数为 \(G_{X_i}(z)\) 且相互独立,且 \(S_N=\sum_{i=1}^N X_i\) ,其中 \(N\) 也是取值在自然数上的离散型随机变量,则 \(S_N\) 的概率生成函数为 \(\sum_{n\ge 0}P(N=n)\prod _{i=1}^n G_{X_i}(z)\)

    例1. \(X\) 服从 \([a,b]\) 上的离散型均匀分布。

    \(G(z)=\sum_{i=a}^b\dfrac{1}{b-a+1}z^i=\dfrac{z^a}{b-a+1}\dfrac{1-z^{b-a+1}}{1-z}\)

    注意这里的 \(G(1)\) 写成封闭形式后是不存在的,因此我们用 \(z=1\) 处的左极限代替之。因此我们有 \(\lim_{z\to1^-}G(z)=1\)

    \(G'(z)=\dfrac{(az^{a-1}-(b+1)z^b)(1-z)+(z^a-z^{b+1})}{(b-a+1)(1-z)^2}\)

    此时有 \(\operatorname E(X)=\lim_{z\to 1^-}G'(z)=\dfrac{a+b}{2}\)

    例2. \(X\sim B(1,p)\)\(G(z)=1-p+pz\)

    例3. \(X\sim B(n,p)\) 。此时根据二项分布的分布列,不难推出其生成函数为 \(G(z)=\sum_{i=0}^n\binom{n}{i}p^i(1-p)^{n-i}z^i\) 。我们根据和的性质,以二项分布的组成——01分布推导二项分布的概率生成函数。

    根据性质 6 和 7,我们可以设独立同分布的 \(X_i\sim B(1,p)\)\(X=\sum_{i=1}^nX_i\)

    这样就有 \(G(z)=(1-p+pz)^{n}\) ,即其封闭形式。我们可以通过其导数值求数学期望和方差,如下。
    \(G'(z)=np(1-p+pz)^{n-1}\)
    \(G''(z)=n(n-1)p^2(1-p+pz)^{n-2}, G''(1)=n^2p^2-np^2\)
    \(\operatorname{E}(X)=G'(1)=np\)
    \(\operatorname{Var}(X)=G''(1)+G'(1)-G'^2(1)\)
    \(=n^2p^2-np^2+np-n^2p^2=np-np^2=np(1-p)\)

    例4. \(X\sim \operatorname{Pois}(\lambda)\) ,即参数为 \(\lambda\) 的泊松分布。

    \(G(z)=\sum_x \dfrac{\lambda^xe^{-\lambda}}{x!}z^x=\mathrm e^{-\lambda}\sum_x\dfrac{(\lambda z)^x}{x!}\)

    由泰勒级数可以得到 \(G\) 的封闭形式,为 \(G(z)=\mathrm e^{\lambda(z-1)}\)

    因此 \(G'(z)=\lambda, G''(z)=\lambda^2\) ,因此 \(\operatorname E(X)=\operatorname{Var}(X)=\lambda\)

    另外,注意到生成函数的部分和满足 \([x^n]\dfrac{F(x)}{1-x}=\sum_{i=0}^n[x^i]F(x)\) ,其中 \([x^n]f(x)\) 代表多项式 \(f(x)\)\(n\) 次项系数。因此我们可以通过这条性质,利用概率生成函数求出泊松分布的累积概率值的精确值,即将 \(S(z)=\dfrac{\mathrm e^{\lambda(z-1)}}{1-z}\) 写成关于 \(z\) 的幂级数的形式,即通过泰勒级数,求出 \(S(z)\) 的第 \(n\) 项系数,即为 \(\sum_{i=0}^n\dfrac{\lambda^i}{i!}e^{-\lambda}\)\(S(z)\)\(n\) 阶导可以通过线性递推方式求出,这里不再阐述了。

    歌唱王国

    这是 CTSC(国家队选拔)2006 的一道题\(^{[3]}\)

    给定一个长度为 \(L\) 的序列 \(A\) 。你有一个空的序列 \(B\) ,每次从 \([1,m]\) 中等概率随机选择一个整数,加入到序列 \(B\) 的末尾。若 \(A\) 作为 \(B\) 的连续子序列(也可称为“子串”),则停止加入元素,否则继续加入元素。求停止加入元素时, \(B\) 长度的期望。

    我们设 \(f_i\) 表示序列长度为 \(i\) 时匹配成功的概率。设 \(f_i\) 的生成函数为 \(F(x)=\sum_{i}f_ix^i\) ,其中 \(F\) 是概率生成函数。由概率生成函数的随机变量期望的性质,不难知道, \(F'(1)\) 就是我们想要的答案。

    我们使用常用的技巧,将“恰好”转化为“至少/至多“。因此,可定义 \(g_i\) 表示长度为 \(i\) 没有成功匹配,即长度超过 \(i\) 时成功匹配的概率。设 \(g_i\) 的生成函数为 \(G(x)=\sum_ig_ix^i\)

    首先我们有 \(f_0=0,g_0=1\) 。有关系式 \(f_{i}=g_{i-1}-g_{i}\) 。将这个关系式写成函数形式,可以得到生成函数之间的关系式 \(xG(x)=F(x)+G(x)-1\)

    对这个式子求导,可得 \(G(x)+xG'(x)=F'(x)+G'(x)\) ,代入 \(x=1\) 得到 \(G(1)=F'(1)\) 。因此我们可以将问题转化为求 \(G(1)\)

    另外我们发现, \(\dfrac{g_x}{m^L}=\sum_{i=1}^L a_i\left(\dfrac 1m\right)^{L-i}f_{x+i}\) 。其中,\(a_i\) 表示 \(i\) 是否为 “border”,即序列 \(A\) 的前 \(i\) 个元素与后 \(i\) 个元素是否对应相同,若相同 \(a_i=1\) , 否则 \(a_i=0\) 。 这个式子左边代表长度为 \(x\) 的序列 \(B\) 没有完成匹配,但暴力往后接入长度为 \(L\) 的序列 \(A\) 所构造的序列匹配的概率。右式表示枚举一个长度为 \(i\) 的 border ,用这个长度为 \(i\) 的 border 匹配的概率并暴力插入剩下不在 border 中的元素,以构成一个长度为 \(L+x\) 且最后长度 \(L\) 匹配的序列 \(B\) 概率。因此式子两边是相等的。

    由这个式子,可以写成函数关系式为:\(\left(\dfrac xm\right)^LG(x)=F(x)\sum_{i=1}^La_i\left(\dfrac xm\right)^{L-i}\)

    注意原式后面为一个带权区间和,也就是一个卷积形式。

    \(x=1\) 代入,可以发现 \(\left(\dfrac 1m\right)^LG(1)=F(1)\sum_{i=1}^La_i\left(\dfrac 1m\right)^{L-i}\)

    由概率生成函数 \(F(x)\) 的性质: \(F(1)=1\) ,可得到答案 \(G(1)=\sum_{i=1}^La_im^i\)

    因此序列 \(B\) 长度期望为 \(\sum_{i=1}^La_im^i\) ,其中 \(a_i\) 代表序列 \(A\) 是否存在长度为 \(i\) 的 border。使用 KMP 等匹配算法可以求出 \(a_i\) ,因此算法时间复杂度为 \(O(n)\)

    总结

    本文介绍了概率生成函数的概念,以及其关于数字特征和函数几个性质,列举了一些离散型随机变量的分布,最后通过一个例题介绍了概率生成函数在 OI 中的应用,为我们处理离散型随机变量提供了一个新的思路。

    参考资料

    [1] https://en.wikipedia.org/wiki/Probability-generating_function

    [2] https://www.luogu.com.cn/problem/P5383

    [3] https://www.luogu.com.cn/problem/P4548

  • 相关阅读:
    vue : 无法加载文件 C:Users1AppDataRoaming pmvue.ps1,因为在此系统上禁止运行脚本
    Flutter 常用的第三方库
    Dart 中的类
    Flutter 学习
    在 VSCode 中开发Flutter项目
    Flutter 环境配置的一些坑
    前端资源和优秀项目地址
    一小时学习JQuery材料
    基于RCT6的YX6100语音模块方案
    Java中反射和内省代码实例
  • 原文地址:https://www.cnblogs.com/oier/p/15674483.html
Copyright © 2011-2022 走看看