機率指望生成函數 學習筆記?

機率指望生成函數 學習筆記?

由於太菜了沒學到什麼本質...ubuntu

部分摘自18年論文「楊懋龍 淺談生成函數在擲骰子問題上的應用」函數


  • 定義:對於數列\(a_0,a_1,\dots,\),存在某個離散隨機變量\(X\)知足\(P(X=i)=a_i\),那麼\(a_n(n\in \mathbb N)\)的普通生成函數(OGF)爲\(X\)的機率生成函數。學習

  • 這裏一樣給出離散隨機變量\(X\)的定義:函數\(X\)\(\Omega \to \mathbb R\)spa

    語言說明就是定義在樣本空間\(\Omega\)上肯定的實值函數,這點必定要搞清楚。遊戲

    \(X=i\)實際表示的是一個事件,等價於集合\(\{\omega|\omega \in \Omega,X(\omega)=i\}\)事件

  • 用符號語言表示機率生成函數即爲
    \[ F(z)=\mathbb E(z^X)=\sum_{i=0}^\infty P(X=i)z^i \]字符串

  • 一些性質get

    通常把\(z\)\(1\)
    \[ F(1)=\sum_{i=0}^\infty P(X=i)=1\\ E(x)=F'(1)=\sum_{i=0}^\infty iP(X=i)\\ Var(X)=F''(1)+F'(1)-(F'(1))^2 \]
    第二個是指望,第三個是方差(能夠發現是平方的指望-指望的平方的形式)qt

  • 例題數學

    • CTST2006歌唱王國

      題意:給一個長\(n(\le 10^5)\)值域爲\(m(\le 10^5)\)的序列\(A\)。每一個時間擲一個\(1\sim m\)的公平骰子並將這個數字加入到初始爲空的序列\(B\)的末尾,當\(A\)\(B\)子串時,中止,求指望中止時間。

      \(f_i\)\(i\)時間中止的機率,\(g_i\)\(i\)時間不中止的機率,\(F(x),G(x)\)分別爲它們的生成函數。

      則有
      \[ F(x)+G(x)=1+G(x)x \]
      這個式子其實是
      \[ f_i+g_i=g_{i-1} \]
      即一個沒中止的下一秒必定會分裂出的兩個結果,\(1\)\(g_0\),乘\(x\)表示在多項式中的遞推。

      考慮對這個式子作出變形,兩邊同時求導
      \[ F'(x)+G'(x)=G(x)+G'(x)x \]
      \(x\)\(1\)
      \[ E(x)=F'(1)=G(1) \]
      考慮求出\(G(1)\)

      考慮對任意時間向後枚舉一段長\(m\)的時間恰好與\(A\)匹配,此時必定會結束,但可能在中間結束。

      爲此,引入字符串中的一個概念

      • 對於一個長度爲\(n\)的序列\(A\),若\(A[1,i]=A[L-i+1,L]\),則稱\(A[1,i]\)\(A\)的一個\(border\)

      定義\(a_i=[\text{A[1,i]是border}]\)

      那麼
      \[ G(x)(\frac{1}{m}x)^m=\sum_{i=1}^ma_iF(x)(\frac{1}{m}x)^{m-i} \]
      左邊是一路欽定過去,右邊是可能結束的位置。

      代入\(x=1\)化簡一下
      \[ \begin{aligned} G(x)&=\sum_{i=1}^ma_iF(1)m^i\\ &=\sum_{i=1}^mm^ia_i \end{aligned} \]
      \(a\)這個東西就隨便求了

      Code

    • 「SDOI2017」硬幣遊戲

      題意:\(n(\le 300)\)我的每一個人猜一串長爲\(m(\le 300)\)的擲硬幣結果(\(0\)\(1\)),而後每一個時間開始擲硬幣,直到某我的的結果爲當前結果序列的子串,中止,此人獲勝。求每一個人獲勝的機率。

      無 腦 上 了

      \(f_{i,j}\)爲第\(i\)我的在第\(j\)時間的時候獲勝的機率,其生成函數爲\(F_i(x)\)

      \(g_i\)爲第\(i\)個時間無人獲勝的機率,其生成函數爲\(G(x)\)

      按照上一題的套路能夠列出
      \[ G(x)x+1=\sum_{i=1}^nF_i(x)+G(x)\\ G(x)(\frac{1}{2}x)^m=\sum_{i=1}^n\sum_{j=1}^m[A_k[1,j]=A_i[m-j+1,m]]F_i(x)(\frac{1}{2}x)^{m-i} \]
      第二個式子須要枚舉\(k\),也就是說它有\(k\)個。

      注意到這恰好有\(n+1\)個方程和\(n+1\)個變量,能夠\(x\)\(1\)後直接高斯消元,化簡一下能夠獲得
      \[ \sum_{i=1}^nF_i(1)=1\\ \sum_{i=1}^nF_i(1)\sum_{j=1}^m[A_k[1,j]=A_i[m-j+1,m]]2^j=G(1) \]
      咱們最後要求的便是\(F_i(1)\)

      最後吐槽一下竟然不須要取模,這個精度怎麼看都不是很對的樣子

      Code

相關文章
相關標籤/搜索