一类概率期望问题的杀器:势函数和鞅的停时定理
考虑随机事件序列$\{A_0, A_1, A_2, \dots\}$,随机变量$T$为其停时。我们希望求$\mathbb{E}[T]$,但一般情况下是比较困难的。
可以考虑构造势函数$\phi(A)$,满足
- $ \mathbb{E}[\, \phi(A_{t+1})-\phi(A_t) \mid A_t, A_{t-1}, \dots, A_1, A_0 \,] = -1. $
- $ \phi(A_T) $为常数。
令$X_t = \phi(A_t)+t$,则
$$ \mathbb{E}[\, X_{t+1}-X_t \mid X_t, X_{t-1}, \dots, X_1, X_0 \,] = 0, $$
即$\{X_0, X_1, X_2, \dots\}$是鞅。若$T$也是$\{X_0, X_1, X_2, \dots\}$的停时,则根据停时定理,我们有
$$ \mathbb{E}[X_T] = \mathbb{E}[X_0], $$
即
$$ \mathbb{E}[T] = \phi(A_0)-\phi(A_T). $$
这即是我们本文主要讨论的方法。
例题1
CodeForces 1349D. Slime and Biscuits
有$n$个人在玩传球游戏,一开始第$i$个人有$a_i$个球。每一次传球,等概率随机选中一个球,设其当前拥有者为$i$,$i$将这个球等概率随机传给另一个人$j(j \neq i)$。当某一个人拥有所有球时,停止游戏。问游戏停止时的期望传球次数。
解:
记球的总数为
$$ m = \sum_{i=1}^n a_i. $$
我们用$A_t = (a_{t,1}, a_{t,2}, \dots, a_{t,n})$来描述$t$次传球后的游戏状态。初始状态为$A_0 = (a_{0,1}, a_{0,2}, \dots, a_{0,n})$。
考虑构造势函数
$$ \phi(A_t) = \sum_{i=1}^n f(a_{t,i}). $$
注意到传球游戏是一个Markov过程,即$A_{t+1}$只取决于$A_t$,则
$$ \mathbb{E}[\,\phi(A_{t+1})\mid A_t, \dots, A_0 \,] = \mathbb{E}[\,\phi(A_{t+1})\mid A_t \,]. $$
上式中的期望可考虑枚举所有传球可能,即以$\frac {a_{t,i}} {m} \cdot \frac 1 {n-1}$的概率,$i$会将球传给$j(j \neq i)$,从而
$$ \begin{aligned} \mathbb{E}[\,\phi(A_{t+1})\mid A_t \,] & = \sum_{i} \sum_{j\neq i} \frac {a_{t,i}} {m(n-1)} \left[ f(a_{t,i}-1)+f(a_{t,j}+1)+\sum_{k \notin \{i,j\}} f(a_{t,k}) \right] \\
& = \sum_i \left[ \frac {a_{t,i}} m f(a_{t,i}-1) + \frac {m-a_{t,i}} {m(n-1)} f(a_{t,i}+1) + \frac {(m-a_{t,i})(n-2)} {m(n-1)} f(a_{t,i}) \right]. \end{aligned} $$
令$\mathbb{E}[\,\phi(A_{t+1})-\phi(A_t)\mid A_t \,] = -1$可得
$$ \sum_i f(a_{t,i}) = \sum_i \left[ \frac {a_{t,i}} m f(a_{t,i}-1) + \frac {m-a_{t,i}} {m(n-1)} f(a_{t,i}+1) + \frac {(m-a_{t,i})(n-2)} {m(n-1)} f(a_{t,i}) + \frac {a_{t,i}} m \right]. $$
于是,我们可取
$$ f(a) = \frac a m f(a-1) + \frac {m-a} {m(n-1)} f(a+1) + \frac{(m-a)(n-2)}{m(n-1)} f(a) + \frac a m. $$
一些边界问题的处理如下:令$a = 0$带入上式可得$f(0) = f(1)$,故可取$f(0) = f(1) = 1$,递推式为
$$ f(a+1) = \left[ \frac {m(n-1)} {m-a} - (n-2) \right] f(a) - \frac {a(n-1)} {m-a} \left( f(a-1)+1 \right). $$
另一方面,我们注意到$\phi(A_T) = f(m)+(n-1)f(0)$为常数,故可应用停时定理,得
$$ \mathbb{E}[T] = \sum_{i} f(a_{0,i}) - \left(f(m)+(n-1)f(0)\right). $$
例题2
CodeForces 850F. Rainbow Balls
有$n$种不同颜色的球,其中第$i$种颜色的球有$a_i$个。每次从所有球中等概率随机选出一个球A,再从所有球中等概率随机选出另一个球B,将球B染成球A的颜色;直到所有球的颜色都相同为止。问染色次数的期望。
解:
记球的总数为
$$ m = \sum_{i=1}^n a_i. $$
我们用$A_t = (a_{t,1}, a_{t,2}, \dots, a_{t,n})$来描述$t$次染色后的状态。
考虑构造势函数
$$ \phi(A_t) = \sum_{i=1}^n f(a_{t,i}). $$
考虑所有染色可能,即
- 以$\frac {a_{t,i}} {m} \cdot \frac {a_{t,j}} {m-1}$的概率,将球$j(j \neq i)$染成球$i$的颜色;
- 以$\sum_i \frac {a_{t,i}(a_{t,i}-1)} {m(m-1)}$的概率,不发生任何变化。
从而
$$ \begin{aligned} \mathbb{E}\left[\,\phi(A_{t+1})\mid A_t\,\right] & = \sum_{i} \sum_{j \neq i} \frac {a_{t,i}a_{t,j}} {m(m-1)} \left[ f(a_{t,i}+1) + f(a_{t,j}-1) + \sum_{k \notin \{i,j\}} f(a_{t,k}) \right] + \sum_i \frac {a_{t,i}(a_{t,i}-1)} {m(m-1)} \sum_k f(a_{t,k}) \\ & = \sum_i \left[ \frac {a_{t,i}(m-a_{t,i})} {m(m-1)} \left( f(a_{t,i}+1) + f(a_{t,i}-1) \right) + \left(1-\frac {2a_{t,i}(m-a_{t,i})} {m(m-1)} \right) f(a_{i,t}) \right]. \end{aligned} $$
令$\mathbb{E}[\,\phi(A_{t+1})-\phi(A_t)\mid A_t \,] = -1$可得
$$ \sum_{i} f(a_{t,i}) = \sum_i \left[ \frac {a_{t,i}(m-a_{t,i})} {m(m-1)} \left( f(a_{t,i}+1) + f(a_{t,i}-1) \right) + \left(1-\frac {2a_{t,i}(m-a_{t,i})} {m(m-1)} \right) f(a_{i,t}) + \frac {a_{t,i}} {m} \right], $$
即
$$ \sum_i \left[ \frac {a_{t,i}(m-a_{t,i})} {m(m-1)} \left( f(a_{t,i}+1) + f(a_{t,i}-1) - 2f(a_{t,i}) \right) + \frac {a_{t,i}} {m} \right] = 0. $$
于是,我们可取
$$ \frac {a(m-a)} {m(m-1)} \left( f(a+1) + f(a-1) - 2f(a) \right) + \frac {a} {m} = 0, $$
即
$$ f(a+1)+f(a-1)-2f(a) = -\frac{m-1}{m-a}. $$
令$g(a) = f(a)-f(a-1)$,上式化为
$$ g(a+1) - g(a) = -\frac{m-1}{m-a}. $$
于是
$$ g(x) = g(0)-\sum_{a=0}^{x-1} \frac{m-1}{m-a}. $$
$$ f(x) = f(0)+\sum_{a=1}^x g(a) = f(0) + \sum_{a=1}^x \left[ g(0)-\sum_{b=0}^{a-1} \frac{m-1}{m-b} \right] = f(0)+xg(0)-(m-1)x+(m-1)(m-x)\sum_{b=0}^{x-1} \frac {1} {m-b}. $$
为方便起见,我们取$f(0) = 0, g(0) = m-1$,则
$$ f(x) = (m-1)(m-x)\sum_{b=0}^{x-1}\frac {1} {m-b}. $$
特别地,$f(m) = 0$。
另一方面,$\phi(A_T) = f(m) + (n-1)f(0) = 0$ 为常数,故可应用停时定理得
$$ \mathbb{E}[T] = \phi(A_0)-\phi(A_T) = \sum_{i} f(a_{0, i}). $$
例题3
CodeForces 1025G. Company Acquisitions
有$n$个人,一开始每个人都未被领导。每次修改领导情况:等概率随机选择一个未被领导的人$x$,再等概率随机选择另一个未被领导的人$y$,令$x$被$y$领导,并且所有原来被$x$领导的人的状态变为未被领导。直到只剩下一个人未被领导(即其他所有人都被这个人领导)为止。问修改领导情况的期望次数。
解:我们把被同一个人领导的所有人加上领导者一起称为一个【小组】。我们用$A = \{ a_{t,1}, a_{t,2}, \dots, a_{t, m_t} \}$来描述$t$次修改领导后的状态,其中$m_t$表示$t$次修改领导后小组的个数,于是我们有
$$ \sum_{i=1}^{m_t} a_{t, i} = n. $$
考虑构造势函数
$$ \phi(A_t) = \sum_{i=1}^{m_t} f(a_{t, i}). $$
考虑每次修改领导的所有可能,即以$\frac 1 {m_t(m_t-1)}$的概率,第$i$个小组的领导进入第$j(j \neq i)$组,并且第$i$个小组的组员(非领导人员)被拆散成$(a_{t,i}-1)$个只有1个人的小组。从而
$$ \begin{aligned} \mathbb{E}\left[\,\phi(A_{t+1})\mid A_t\,\right] & = \sum_{i} \sum_{j \neq i} \frac 1 {m_t(m_t-1)} \left[ (a_{t,i}-1) f(1) + f(a_{t, j}+1) + \sum_{k \notin \{i,j\}} f(a_{t,k}) \right] \\ & = \sum_i \left[ \frac 1 {m_t} f(a_{t,i}+1) + \left(1 - \frac 2 {m_t}\right) f(a_{t,i}) \right] + \frac{n-m_t}{m_t} f(1). \end{aligned} $$
令$\mathbb{E}[\,\phi(A_{t+1})-\phi(A_t)\mid A_t \,] = -1$可得
$$ \sum_i f(a_{t,i}) = \sum_i \left[ \frac 1 {m_t} f(a_{t,i}+1) + \left(1 - \frac 2 {m_t}\right) f(a_{t,i}) + \frac{n-m_t}{m_t^2} f(1) + \frac 1 {m_t} \right]. $$
我们可取
$$ f(a) = \frac 1 m f(a+1) + \left(1 - \frac 2 m \right) f(a) + \frac {n-m} {m^2} f(1) + \frac 1 m $$
对任意$m$恒成立。整理后可得
$$ f(a+1)-2f(a) + \frac{n-m}{m} f(1) + 1 = 0. $$
令$f(1) = 0$,且满足递推式$f(a+1) = 2f(a)-1$即满足上式,解为
$$ f(a) = 1-2^{a-1}. $$
另一方面,$\phi(A_T) = f(n) = 1-2^{n-1}$ 为常数,故可应用停时定理得
$$ \mathbb{E}[T] = \phi(A_0) - \phi(A_T) = \sum_{i} \left( 1-2^{a_{0, i}-1} \right) - \left( 1-2^{n-1} \right). $$
例题4:
CodeForces 1479E. School Clubs (Problem by myself)