概率生成函數
定義
若 \(X\) 為僅取非負整數值的隨機變量,那么 \(X\) 的概率生成函數(probability generating function,PGF) 為
顯然 \(G_X(z)\) 的各項系數非負,且其和為 \(1\)。這個條件可以寫成
同樣,反過來,任何具有非負系數且滿足 \(G(1)=1\) 的冪級數 \(G(z)\) 都是某個隨機變量的生成函數。
均值與方差
概率生成函數最大的長處是其可以大大簡化均值與方差的計算。
均值
根據這個推導式我們可以進一步推出
然后應該可以通常冪轉下降冪之類的東西搞事情
方差
這告訴我們,若我們知道 \(G_{X}'(1)\) 與 \(G_{X}''(1)\) 的值,我們就能夠求出均值與方差。我們甚至不需要知道 \(G_X(z)\) 本身的封閉形式。
乘積
概率生成函數的乘積對應於獨立隨機變量之和。例如,設 \(X\) 與 \(Y\) 是只取整數變量的隨機變量,且相互獨立,那么顯然有
這顯然是一個卷積,即
例題
「CTSC2006」歌唱王國
給定一個長度為 \(L\) 的序列 \(A\),每次從 \([1,m]\) 中等概率選取一個整數加入到初始為空的序列 \(B\) 的末尾。若 \(\operatorname{LCS}(A,B)=A\),則停止。求序列 \(B\) 的期望長度。
令 \(f_i\) 為結束時序列 \(B\) 長度為 \(i\) 的概率,其概率生成函數為 \(F(z)\)。
令 \(g_i\) 為序列 \(B\) 長度為 \(i\) 且還未結束的概率,其普通生成函數為 \(G(z)\)。
令 \(a_i\) 為序列 \(A[1,i]\) 是否為一個序列的 \(\texttt{border}\)。
容易發現我們的答案即為 \(F'(1)\)
則有
第一個式子的意義為在一個未結束的序列后面添加一個數,有可能結束也有可能為結束,\(1\) 表示初始狀態一定沒有結束。
第二個式子的意義為在一個未結束的序列后面添加序列 \(A\),則一定會結束。但有可能尚未添加完所有字符就已經結束,這種情況僅可能發生在已添加的序列為給定序列的一個 \(\texttt{border}\)。我們可以枚舉此時序列的長度,然后再乘上多余字符的概率。
對第一個式子求導,有
代入 \(z=1\) 有
所以我們可以考慮求出 \(G(1)\)。
將 \(z=1\) 代入第二個式子有
然后 \(a_i\) 大家都會求,然后這個題就做完了。
根據類似的方法求出 \(F''(z)\) 可以求出方差。
我們考慮加強這個問題。
給定 \(n\) 個序列 \(A_1,A_2,\cdots A_n\),第 \(i\) 個序列的長度為 \(L_i\)。每次從 \([1,m]\) 中以 \(p_i\) 的概率生成一個數 \(i\) 加入初始為空的序列 \(B\) 末尾,若 \(A_1,A_2,\cdots A_n\) 均為 \(B\) 的子串則停止。求序列 \(B\) 的期望長度。
類似剛才的問題,我們可以設 \(T_i\) 為 \(A_i\) 在 \(B\) 中首次出現的期望長度,則答案為 \(\max_{i=1}^{n} T_i\)。
這個東西看着就非常不爽,所以可以考慮 \(\min-\max\) 容斥得到答案為 \(\sum_{S\subseteq\{1,2,\cdots n\}}(-1)^{|S|+1}\min_{i\in S}T_i\)。
根據期望的線性性,可以轉化為求 \(E(\min_{i\in S}T_i)\),即出現一個就結束,不妨設 \(S=\{1,2,\cdots n\}\)。
然后我們可以仿照前面的定義:
令 \(f_{i,j}\) 為序列 \(B\) 中出現的是 \(A_i\),且長度為 \(j\) 的概率,其普通生成函數為 \(F_i(z)\)。
令 \(g_i\) 為序列 \(B\) 長度為 \(i\) 且還未結束的概率,其普通生成函數為 \(G(z)\)。
令 \(a_{i,j,k}=[A_i[1,k]=A_j[L_j-k+1,L_j]]\)。
令 \(P(T)=\prod_{i\in T}p_i\)。
則有
要求的即是 \(\sum_{i=1}^{n}F'_i(1)\)。
仿照之前的方法將 \(z=1\) 代入可以得到 \(n\) 個方程,同時注意到 \(\sum_{i=1}^{n}F_i(1)=1\),即可高斯消元求解。
「2013 Multi-University Training Contest 5」 Dice
一個 \(m\) 面的公平骰子,求最后 \(n\) 次結果相同就結束的期望次數或者求最后 \(n\) 次結果全不同就結束的期望次數。
令 \(f_i\) 為擲了 \(i\) 次結束的概率,其概率生成函數為 \(F(z)\)。
令 \(g_i\) 為擲了 \(i\) 次還未結束的概率,其普通生成函數為 \(G(z)\)。
先看第一問。
那么顯然有
(這里好像和論文不太一樣?可能是我的問題。反正不影響結果)
代入 \(z=1\),可得 \(G(1)=\sum_{i=1}^{n}m^{i-1}\)。
意義和之前的題目差不多。
然后看第二問。
那么顯然有
代入 \(z=1\),可得 \(G(1)=\sum_{i=1}^n\frac{(m-i)!}{m!}m^{i}\)。
一個有趣的概率小問題
一個 \(n\) 面的骰子,每一面標號 \(1\) 到 \(n\) 。有個初始為 \(0\) 的計數器,每次扔骰子,如果結果是奇數,那么計數器清零,否則計數器加 \(1\) 並且如果結果是 \(n\) 則結束。問結束時計數器的期望。保證 \(n\) 是偶數。
根據套路
令 \(f_i\) 為計數器為 \(i\) 時結束的概率,其概率生成函數為 \(F(z)\)。
令 \(g_i\) 為計數器為 \(i\) 時未結束的概率,其普通生成函數為 \(G(z)\)。
(為啥感覺這里又和論文不太一樣啊...我一定是又蠢了)
第一個式子的意義是我們從未結束時擲骰子可能會有兩種情況:
- 有 \(\frac 1 2\) 的概率擲出奇數,此時不管當前計數器的值為多少全部都會變到計數器為零且未結束的狀態,這一部分的概率即 \(\frac 1 2G(1)\)。
- 有 \(\frac 1 2\) 的概率擲出偶數,此時有可能結束也有可能沒結束。
- \(1\) 表示初始狀態一定沒有結束。
第二個式子的意義是我們從一個未結束的狀態多擲一步 \(n\) 則一定會結束。
將 \(z=1\) 代入第二個式子易得 \(G(1)=n\),將其代入第一個式子有
將 \(G(z)\frac 1 nz=F(z)\) 代入第一個式子有
於是有
具體數學 8.43
求 \(n\) 個數的隨機排列的輪換的個數的期望。
首先可以設 \(f_{n,k}\) 為 \(n\) 個數的排列,有 \(k\) 個輪換的概率,其概率生成函數為 \(F_n(z)\)。
顯然有
然后你發現這是一堆二項概率生成函數的乘積,每一項的期望為 \(\frac 1 k\)。
顯然這一堆互相獨立,所以實際上總的期望就是 \(H_n\),即調和級數。