概率生成函数学习笔记

本文借助 $2018$ 年杨懋龙的集训队论文 《浅谈生成函数在掷骰子问题上的应用》。

但由于作者水平有限,并没有看懂有些式子的组合意义,仅能通过自己的推导得出结果。

本质是将期望的 $k$ 次下降幂写成 $PGF$ 的 $k$ 阶导数,并通过辅助函数求得。


论文例题

CTSC2006 歌唱王国

题意

$T$ 组数据,每次给定一个字符串,每次在 $1\sim n$ 中随机一个数添加到字符串末端,当字符串出现给定字符串后停止,求期望长度。

$1\leq n,|z|\leq 10^5,t\leq 50$ 。 

题解

设 $f(x)$ 表示长度为 $i$ 的概率生成函数,$g(x)$ 表示长度大于 $i$ 的概率生成函数,即未停止的概率。

$$f(x)+g(x)=1+g(x)\cdot x$$

可以看成每次从未停止中加上一次字符可能结束也可能继续。

$$g(x)\cdot (\dfrac{1}{n}x)^m=\sum_{i=1}^m a_i\cdot f(x)\cdot (\dfrac{1}{n}x)^{m-i}$$

$a_i\in \{0,1\}$,其中 $a_i$ 为字符串的 $border$ 集合是否出现 $i$ 。

可以看成我们在一个未停止串中添加当前字符串那么肯定停止,若提前停止那么即为当前串的 $border$ 。

对第一个式子求导带入 $x=1$ 得

$$f'(1)=g(1)$$

而将 $x=1$ 带入二式化简可得

$$g(1)=\sum_{i=1}^m a_i\cdot n^i$$

$\mathcal O(Tm)$ 计算即可。

Dice

题意

一个 $m$ 面的公平骰子,求最后 $n$ 次结果相同就结束的期望次数或者求最后 $n$ 次结果全不同就结束的期望次数。

$n,m\leq 10^6$ 。

题解

第一问:

设 $F(x)$ 表示答案的 $PGF$ ,$G(x)$ 表示还未结束的 $PGF$ ,则

$$F(x)+G(x)=G(x)\cdot x+1\\(G(x)-1)\cdot (\frac{x}{m})^{n-1}=\sum_{i=0}^{n-2} F(x)\cdot (\frac{x}{m})^{i}$$

第二个式子表示枚举多了多少个能补。

解得

$$F'(1)=G(1)=\dfrac{m^n-1}{m-1}$$

第二问:

设 $F(x)$ 表示答案的 $PGF$ ,$G(x)$ 表示还未结束的 $PGF$ ,同理可得

$$\begin{aligned}F(x)+G(x)&=G(x)\cdot x+1\\(G(x)-1)\cdot \dfrac{A(m-1,n-1)}{m^{n-1}}\cdot x^{n-1}&=\sum_{i=1}^{n-1} F(x)\cdot x^{n-1-i}\cdot \dfrac{A(m-i-1,n-i-1)}{m^{n-1-i}}\\\\F'(1)=G(1)&=(\sum_{i=1}^{n-1} \dfrac{\frac{(m-i-1)!}{(m-n)!}}{m^{n-i-1}}+\dfrac{\frac{(m-1)!}{(m-n)!}}{m^{n-1}})\times m^{n-1}\times \dfrac{(m-n)!}{(m-1)!}\\&=\sum_{i=0}^{n-1} m^i\cdot \dfrac{(m-i-1)!}{(m-n)!}\times \dfrac{(m-n)!}{(m-1)!}\\&=\sum_{i=0}^{n-1} m^i\cdot \dfrac{(m-i-1)!}{(m-1)!}\\&=\sum_{i=1}^n m^i\cdot \dfrac{(m-i)!}{m!}\end{aligned}$$ 


练习题

随机游走

题意

给定一棵根为 $1$ 的有根树,定义 $E_{S,T}$ 表示从 $S$ 开始随机游走,到 $T$ 停止的步数平方的期望,$sub_u$ 表示 $u$ 子树中所有点。 

$q$ 次询问,每次给定 $u,v$ ,求 $\sum _{x\in sub_u,y\in sub_v} E(x,y)$ ,保证 $sub_u\cap sub_v=\varnothing$ 。

题解

定义 $f_u$ 表示 $u\rightarrow f_u$ 的概率生成函数。

先求一次的情况

$$\begin{aligned}f_u&=\dfrac{1}{d}x+\dfrac{1}{d}\sum_{(v,u)} xf_vf_u\\d\cdot f_u&=x+xf_u\sum_v f_v\\d\cdot f_u'&=1+f_u\sum_v f_v+xf_u'\sum_v f_v+xf_u\sum_v f_v'\end{aligned}$$

带入 $x=1$ 

$$\begin{aligned}d\cdot f_u'&=1+f_u\sum_v f_v+f_u'\sum_v f_v+f_u\sum_v f_v'\\&=1+(d-1)+(d-1)\cdot f_u'+\sum_v f_v'\\f'_u&=d+\sum_v f'_v\end{aligned}$$

同理求二次

$$\begin{aligned}f''_u=2(d-1)\cdot f'_u+2\sum_v f'_v+\sum_v f''_v+2f'_u\sum_v f'_v\end{aligned}$$

同理我们得到 $g_u$ 表示 $f_u\rightarrow u$ 的概率生成函数的一阶导和二阶导。

而对于 $E_{u,v}$ 相当于将路径上每条边生成函数相乘的一阶导和二阶导之和,对多项式维护 $f(1),f'(1),f’'(1)$ ,可以倍增维护。  

而对于子树情况可以处理出每个点到 $u/v$ 的生成函数,和上述同理。

时间复杂度 $\mathcal O(q\log n)$ 。

ZJOI2019 密码

题意 

有 $n$ 个开关,每个开关有属性 $s_i\in\{0,1\}$ ,$0$ 表示关,$1$ 表示开,还有属性 $p_i$ 表示有 $\dfrac{p_i}{\sum p}$ 的概率将其 $s_i$ 翻转。

问期望次数使得所有开关均 $s_i=0$ 。

$1\leq n\leq 100,1\leq \sum p\leq 5\times 10^4$ 。

题解

设 $\sum_{i=1}^n p_i=P$ 。

由于开关有标号,用 $EGF\&PGF$ 表示将 $s_i$ 变为 $0$ 的概率指数生成函数,设为 $f_i(x)$ 。

$$\text{$s_i$ is odd} \rightarrow f_i(x)=\dfrac{(\frac{p_i}{P})\cdot x^1}{1!}+\dfrac{(\frac{p_i}{P})^3\cdot x^3}{3!}+...=\dfrac{e^{\frac{p_i}{P}x}-e^{-\frac{p_i}{P}x}}{2}\\\text{$s_i$ is even}\rightarrow f_i(x)=\dfrac{e^{\frac{p_i}{P}x}+e^{-\frac{p_i}{P}x}}{2}$$

设 $f(x)=\prod_{i=1}^n f_i(x)$ ,则 $[x^k] f(x)$ 表示次数为 $k$ 时满足 $s_i$ 均为 $0$ 的概率。

但是有可能在 $k$ 前面就已经到达,那么设 $g(x)$ 表示移动 $k$ 次且保持原状态的概率。

$$g(x)=\prod_{i=1}^n \dfrac{(e^{\frac{p_i}{P}x}+e^{-\frac{p_i}{P}x})}{2}$$

但是咱们要求的是 $OGF\&PGF$ 。 

设 $f(x)$ 的 $OGF$ 为 $F(x)$ ,$g(x)$ 的 $OGF$ 为 $G(x)$ ,答案的 $OGF$ 为 $H(x)$ 。

如何将 $EGF\rightarrow OGF$ ,以 $f$ 为例,可以将函数写成

$$f(x)=\sum_{i=-P}^P a_i e^{\frac{i}{P} x}=\sum_{i=-P}^P \dfrac{a_i}{1-\frac{i}{P}x}\\g(x)=\sum_{i=-P}^P \dfrac{b_i}{1-\frac{i}{p}x}$$

$a_i,b_i$ 的求法可以暴力乘法背包得到。

$$H(x)G(x)=F(x)\\H(x)=\dfrac{F(x)}{G(x)}$$

由于 $H(x)$ 为 $PGF$ ,期望为 $H’(1)$ 。

$$H'(x)=(\dfrac{F(x)}{G(x)})'=\dfrac{F'(x)G(x)+F(x)G'(x)}{G^2(x)}$$

那么只要求 $F’(1),F(1),G(1),G’(1)$ 即可。

但是观察 $F,G$ 发现他们在 $x=1$ 时是不收敛的,因为当 $i=P$ 时分母会出问题。

但是答案一定是收敛的,那么我们将 $F,G$ 均乘上 $(1-x)$ ,可以发现此时 $F,G$ 收敛。

$$F(1)=a_P\\F'(1)=\sum_{i=-P}^P \dfrac{a_i}{\frac{i}{p}-1} \\G(1)=b_p\\G'(1)=\sum_{i=-P}^P \dfrac{b_i}{\frac{i}{p}-1}$$

将 $x=1$ 带入 $H’(1)$ 即可解决。时间复杂度 $\mathcal O(n\sum P+p\log mod)$ 。

https://loj.ac/s/1071824

posted @ 2021-02-21 22:13  siruiyang_sry  阅读(243)  评论(0编辑  收藏  举报