概率生成函數(PGF)簡記


基本搬運自《淺談生成函數在擲骰子問題上的應用》。

對於定義在非負整數上的離散隨機變量 \(X\),級數 \(F(z) = \sum\limits_{i\ge 0} \operatorname{Pr}(X=i) z^i\) 記為 \(X\) 的概率生成函數(PGF),本質上是有特殊性質的普通型生成函數。概率生成函數在一方面提供了一種刻畫概率相關模型的工具,另一方面比較形式化地總結了一類概率問題的一般性思路。

一些性質

\(F(1) = \sum\limits_{i\ge 0} \operatorname{Pr}(X=i) = 1\)

顯然。

\(F^{\prime}(1) = \sum\limits_{i\ge 0} i\operatorname{Pr}(X=i) = E(X)\)

顯然。類似的可以得出 \(F^{(k)}(1) = E(x^{\underline{k}})\)

\(F^{\prime\prime}(1) + F^{\prime}(1) - (F^{\prime}(1))^2 = \bigg(\sum\limits_{i\ge 0}i^2\operatorname{Pr}(X=i)\bigg) - \bigg(\sum\limits_{i\ge 0} i\operatorname{Pr}(X=i)\bigg)^2 = \sigma^2(X)\)

其中 \(\sigma^2(X)\) 表示 \(X\) 的方差,定義為 \(\sigma^2(X) = E\big((x-E(x))^2\big)=E(x^2)-E^2(x)\)。這一條不常用到。

這一類性質基本在期望問題時用到,核心思路是利用題目性質列出 PGF 或其導數的方程,代入 \(z=1\) 解出得到答案。


論文涉及了許多例題,但本質基本相同,只要理解了方法也不難獨立推導出。在這里記錄一些比較有代表性的題目。

[CTSC2006]歌唱王國

給定一個長度為 \(L\) 的序列 \(A\)。然后每次擲一個標有 \(1\)\(m\) 的公平骰子並將其上的數字加入到初始為空的序列 \(B\) 的末尾,如果序列 \(B\) 中已經出現了給定序列 \(A\) ,即 \(A\)\(B\) 的子串,則停止,求序列 \(B\) 的期望長度。

\(a_i\) 表示 \([1,i]\)\(A\) 的 border。記 \(f_i,g_i\) 表示 \(B\) 長度為 \(i\) 時,過程結束/未結束的方案數,其 PGF 分別為 \(F(z),G(z)\)。考慮隨機加入一個字符,和欽定加入序列 \(A\) 之后的情況:

\[\begin{align} F(z) + G(z) &= zG(z)+1 \\ G(z)\bigg(\dfrac{z}{m}\bigg)^L &= \sum\limits_{i=1}^{L}a_iF(z)\bigg(\dfrac{z}{m}\bigg)^{L-i} \end{align} \]

其中第二個等式是由於我們可以從 border 處開始匹配。

將等式 \((1)\) 求導並代入 \(z=1\),得到

\[\begin{align} F^{\prime}(z) + G^{\prime}(z) &= zG^{\prime}(z) + G(z) \\ F^{\prime}(1) &= G(1) \end{align} \]

\(z=1\) 代入等式 \((2)\) 中可得

\[\begin{align} G(1)\bigg(\dfrac{1}{m}\bigg)^L &= \sum\limits_{i=1}^{L}a_iF(1)\bigg(\dfrac{1}{m}\bigg)^{L-i} \\ G(1) &= \sum\limits_{i=1}^La_im^i \end{align} \]

其中用到了 \(F(1)=1\)。至此我們已經可以高效且簡潔的計算答案了。

[SDOI2017]硬幣游戲]

給定 \(n\) 個長度分別為 \(L_i\) 的序列 \(A_i\),保證每個序列互不相同。再給出一個標有 \(1\)\(m\) 的骰子,其中拋出 \(i\) 的概率為 \(P_i\)。然后每次拋一次骰子將骰子上的數字加入到初始為空的序列 \(B\) 末尾,如果給定的 \(n\) 個序列的其中一個是 \(B\) 的子串,則停止,這個序列獲勝。求每個序列獲勝的概率,並求結束時 \(B\) 長度的期望。

較原題有所改動,不影響解題。

上一題的拓展。類似上一題的思路,記 PGF \(F_i(z),G(z)\) 分別表示第 \(i\) 個串長度為 \(i\) 時獲勝的 PGF、長度為 \(i\) 時未結束的 PGF,\(b_{i,j,k}\) 表示第 \(j\) 個串的 \([1,k]\) 和第 \(i\) 個串的 \([l_i-k+1,l_i]\) 相同。考慮隨機加入一個字符,和加入一個目標串:

\[\begin{align} G(z)+\sum\limits_{i=1}^n F_i(z) &= zG(z)+1 \\ \forall i \in [1,n],\ G(z)\bigg(\dfrac{z}{m}\bigg)^{l_i} &= \sum\limits_{j=1}^{n}\sum\limits_{k=1}^{l_j}a_{i,j,k}F_j(z)\bigg(\dfrac{z}{m}\bigg)^{L-k} \end{align} \]

我們的目標是求每個 \(F_i(1)\)。照例求導並代入 \(z=1\)

\[\begin{align} \sum\limits_{i=1}^n{F_i}^{\prime}(1) &= G(1) \\ \forall i \in [1,n],\ G(1)\bigg(\dfrac{1}{m}\bigg)^{l_i} &= \sum\limits_{j=1}^{n}\sum\limits_{k=1}^{l_j}a_{i,j,k}F_j(1)\bigg(\dfrac{1}{m}\bigg)^{l_j-k} \end{align} \]

這樣我們得到了關於 \(F_i(1)\)\(G(1)\) 一共 \(n+1\) 個未知數的 \(n\) 個方程。發現 \(\sum\limits_{i=1}^nF_i(x)\) 即為隨機序列長度的 PGF,於是得到最后一個方程

\[\sum\limits_{i=1}^nF_i(x) = 1 \]

高斯消元即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM