概念
若 (X) 为非负整数集 (mathbb{N}) 上的离散随机变量,其满足 ( ext{Pr}(X=i)=a_i),则称 (a_n (n in mathbb{N})) 的生成函数为 (X) 的概率生成函数,得:
因为 (X) 为非负整数集 (mathbb{N}) 上的离散随机变量,所以有:
对 (F(z)) 求导,得:
得 (X) 的期望为:
得 (X) 的方差为:
应用
[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),得:
第一个式子为未停止时往后加一个数字,其可能停止,也可能未停止,加 (1) 是 (B) 为空的情况。第二个式子是向未停止的序列 (B) 直接加上序列 (A),其一定会停止,但发现不一定要全部加上序列 (A),这里还需考虑 ( ext{border})。
对第一个式子求导并代入 (x=1) 得:
将 (x=1) 代入第二个式子得:
因此有 ({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),得:
和上一题一样,化简得:
注意到:
用高斯消元即可 (O(n^3)) 求解。