对于离散的概率生成函数
fX(x)E(X)E(X2)=k∑P(X=k)xk=k∑k⋅P(X=k)=fX′(1)=k∑k2P(X=k)=k∑[k(k−1)+k]P(X=k)=fX′′(1)+fX′(1)
考虑怎么求
E(xn),由于
fX(ex)=k∑P(X=k)ekx=k∑P(X=k)n∑n!(kx)n=n∑n!xnk∑P(X=k)kn=n∑n!E(Xn)xn
这称为随机变量
X 的矩母函数,由此可见
E(xn)=n![xn]fX(ex),考虑怎么求
fX(ex) 的各项系数。
若
fX(x) 是无限项的,需要求其封闭形式;若
fX(x) 是有限项的,考虑求
n∑E(Xn)xn=n∑k∑P(X=k)knxn=n∑k∑fkknxn=k∑fkn∑(kx)n=k∑1−kxfk
使用分治 FFT 维护分子分母,最后多项式求逆即可求出,时间复杂度
O(nlog2n)。
下面我们来一道例题,一个歌唱王国的加强版。
- 字符集为 Σ,打出第 i 个字符的概率为 pi,给出一个字符串 s,求后缀第一次出现字符串 s 的期望打字次数 E(s)。
令
fk 代表打了
k 个字符还没停的概率,
gk 代表打了
k 个字符恰好停的概率。
由于
fk=∑j=k+1gj=fk+1+gk+1,即
1+xf(x)=f(x)+g(x) (1)
考虑打了
p 个字符还没停,并且钦定在后面完整地打出一个字符串
t 的概率,用两种不同的形式表达,即
fpi=1∏∣t∣pti=k∈border(t)∑gp+ki=k+1∏∣t∣pti
写成生成函数的形式,即
f(x)⋅x∣t∣i=1∏∣t∣pti=g(x)k∈border(t)∑x∣t∣−ki=k+1∏∣t∣pti (2)
将
(1) 式带入
(2) 式中,化简可得
g(x)=(1−x)k∈border(t)∑x−ki=k+1∏∣t∣pti+∏i=1∣t∣ptii=1∏∣t∣pti
E(s)=g′(1)=k∈border(t)∑i=1∏kpti1