概率生成函数

概念

(X) 为非负整数集 (mathbb{N}) 上的离散随机变量,其满足 ( ext{Pr}(X=i)=a_i),则称 (a_n (n in mathbb{N})) 的生成函数为 (X) 的概率生成函数,得:

[large F(z)=mathbb E(z^X)=sum_{i=0}^infty ext{Pr}(X=i)z^i ]

因为 (X) 为非负整数集 (mathbb{N}) 上的离散随机变量,所以有:

[large F(1)=sum_{i=0}^infty ext{Pr}(X=i)=1 ]

(F(z)) 求导,得:

[large {F}'(z)=sum_{i=0}^infty i ext{Pr}(X=i)z^{i-1} ]

(X) 的期望为:

[large E(X)={F}'(1)=sum_{i=0}^infty i ext{Pr}(X=i) ]

(X) 的方差为:

[large large Var(X)={F}''(1)+{F}'(1)-({F}'(1))^2 ]

应用

[CTSC2006] 歌唱王国

给定长为 (m) 的序列 (A),每次等概率随机一个 (1)(n) 的数加到初始为空的序列 (B) 的末尾,当 (A)(B) 的子串时,停止随机,求序列 (B) 的期望长度。链接

(m leqslant 10^5)

(f_i)(B) 长度为 (i) 时停止的概率,(g_i)(B) 长度为 (i) 时未停止的概率,分别得概率生成函数 (F(x))(G(x)),所求即为 ({F}'(1))

(a_i) 表示 (A[1,i]) 是否为 (A)( ext{border}),其取值为 (0)(1),得:

[largeegin{aligned} xG(x)+1&=F(x)+G(x) \ G(x)left( frac{1}{n}x ight)^m&=sum_{i=1}^ma_iF(x)left( frac{1}{n}x ight)^{m-i} end{aligned} ]

第一个式子为未停止时往后加一个数字,其可能停止,也可能未停止,加 (1)(B) 为空的情况。第二个式子是向未停止的序列 (B) 直接加上序列 (A),其一定会停止,但发现不一定要全部加上序列 (A),这里还需考虑 ( ext{border})

对第一个式子求导并代入 (x=1) 得:

[largeegin{aligned} G(x)+x{G}'(x)&={F}'(x)+{G}'(x) \ {F}'(1)&=G(1) \ end{aligned} ]

(x=1) 代入第二个式子得:

[largeegin{aligned} G(1)left( frac{1}{n} ight)^m&=sum_{i=1}^ma_iF(1)left( frac{1}{n} ight)^{m-i} \ G(1)&=sum_{i=1}^ma_in^i \ end{aligned} ]

因此有 ({F}'(1)=sumlimits_{i=1}^ma_in^i),用 (KMP) 即可 (O(m)) 求解。

[SDOI2017] 硬币游戏

给定 (n) 个长度为 (m)(01) 序列 (A_i),序列互不相同,每次等概率随机 (0)(1) 加到初始为空的序列 (B) 的末尾,当有 (A_i)(B) 的子串时停止,对于每个 (i) 求出因其停止的概率。链接

(1 leqslant n, m leqslant 300)

(f_{i,j})(B) 长度为 (j) 时因 (i) 停止的概率,(g_i)(B) 长度为 (i) 时未停止的概率,分别得概率生成函数 (F_i(x))(G(x)),所求即为 (F_i(1))

(a_{i,j,k}) 表示 (A_i) 长度为 (k) 的前缀是否和 (A_j) 长度为 (k) 的后缀相等,其取值为 (0)(1),得:

[large G(x)left( frac{1}{2}x ight)^m=sum_{j=1}^nsum_{k=1}^ma_{i,j,k}F_j(x)left( frac{1}{2}x ight)^{m-k} ]

和上一题一样,化简得:

[large large G(1)=sum_{j=1}^nsum_{k=1}^ma_{i,j,k}F_j(1)2^k ]

注意到:

[large sum_{i=1}^n F_i(1)=1 ]

用高斯消元即可 (O(n^3)) 求解。

原文地址:https://www.cnblogs.com/lhm-/p/14270479.html