几率指望生成函数 学习笔记?

几率指望生成函数 学习笔记?

由于太菜了没学到什么本质...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

相关文章
相关标签/搜索