zoukankan      html  css  js  c++  java
  • 一类概率期望问题的杀器:势函数和鞅的停时定理

    考虑随机事件序列${A_0, A_1, A_2, dots}$,随机变量$T$为其停时。我们希望求$mathbb{E}[T]$,但一般情况下是比较困难的。

    可以考虑构造势函数$phi(A)$,满足

    1. $ mathbb{E}[\, phi(A_{t+1})-phi(A_t) mid A_t, A_{t-1}, dots, A_1, A_0 \,] = -1. $
    2. $ 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 eq 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 eq i)$,从而

    $$ egin{aligned} mathbb{E}[\,phi(A_{t+1})mid A_t \,] & = sum_{i} sum_{j eq i} frac {a_{t,i}} {m(n-1)} left[ f(a_{t,i}-1)+f(a_{t,j}+1)+sum_{k otin {i,j}} f(a_{t,k}) ight] \
    & = 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}) ight]. 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 ight]. $$

    于是,我们可取

    $$ 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) ight] f(a) - frac {a(n-1)} {m-a} left( f(a-1)+1 ight). $$

    另一方面,我们注意到$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) ight). $$

    例题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}). $$

    考虑所有染色可能,即

    1. 以$frac {a_{t,i}} {m} cdot frac {a_{t,j}} {m-1}$的概率,将球$j(j eq i)$染成球$i$的颜色;
    2. 以$sum_i frac {a_{t,i}(a_{t,i}-1)} {m(m-1)}$的概率,不发生任何变化。

    从而

    $$ egin{aligned} mathbb{E}left[\,phi(A_{t+1})mid A_t\, ight] & = sum_{i} sum_{j eq i} frac {a_{t,i}a_{t,j}} {m(m-1)} left[ f(a_{t,i}+1) + f(a_{t,j}-1) + sum_{k otin {i,j}} f(a_{t,k}) ight] + 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) ight) + left(1-frac {2a_{t,i}(m-a_{t,i})} {m(m-1)} ight) f(a_{i,t}) ight]. 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) ight) + left(1-frac {2a_{t,i}(m-a_{t,i})} {m(m-1)} ight) f(a_{i,t}) + frac {a_{t,i}} {m} ight], $$

    $$ 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}) ight) + frac {a_{t,i}} {m} ight] = 0. $$

    于是,我们可取

    $$ frac {a(m-a)} {m(m-1)} left( f(a+1) + f(a-1) - 2f(a) ight) + 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} ight] = 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 eq i)$组,并且第$i$个小组的组员(非领导人员)被拆散成$(a_{t,i}-1)$个只有1个人的小组。从而

    $$ egin{aligned} mathbb{E}left[\,phi(A_{t+1})mid A_t\, ight] & = sum_{i} sum_{j eq i} frac 1 {m_t(m_t-1)} left[ (a_{t,i}-1) f(1) + f(a_{t, j}+1) + sum_{k otin {i,j}} f(a_{t,k}) ight] \ & = sum_i left[ frac 1 {m_t} f(a_{t,i}+1) + left(1 - frac 2 {m_t} ight) f(a_{t,i}) ight] +  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} ight) f(a_{t,i}) + frac{n-m_t}{m_t^2} f(1) + frac 1 {m_t} ight]. $$

    我们可取

    $$ f(a) = frac 1 m f(a+1) + left(1 - frac 2 m ight) 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} ight) - left( 1-2^{n-1} ight). $$

  • 相关阅读:
    easyui好例子,值得借鉴
    DDL 和DML 区别
    兼容IE的文字提示
    搭代理
    美国服务器
    跟随滚动条滚动
    JS Array对象
    JS 内置对象 String对象
    JS 对象
    JS 二维数组
  • 原文地址:https://www.cnblogs.com/TinyWong/p/12887591.html
Copyright © 2011-2022 走看看