势函数和鞅的停时定理学习笔记

参考博客:一类概率期望问题的杀器:势函数和鞅的停时定理势函数和鞅的停时定理

感谢zzz大神的指导

方法简述

对于随机事件序列 \(A_0,A_1,A_2,A_3,...,A_T\),其停时为随机变量 \(T\)。放在随机游走模型上就是 \(A_i\) 相当于第 \(i\) 步走的是哪个点,\(A_0,A_1,A_2,...,A_T\) 表示从起始点走到终止点的一条路径,\(T\) 表示路径长度。我们的问题是:求解 \(E(T)\)

具体方法是,对于每种随机事件(或者可以认为是“状态”)设定一个势函数 \(\phi(A_i)\),并且让这个势函数每过一秒期望减 \(1\),即对于任意的 \(i\),有 \(E(\phi(A_{i+1})-\phi(A_i)) = 1\)。然后 \(E(T) = \phi(A_0)-\phi(A_T)\)。因此解题的关键在于求 \(\phi\)

实际上这只是感性理解,具体证明还需要用到鞅和停时定理。它能用的条件是:停时有界,不为正无穷,并且 \(\phi(A_T)-\phi(A_0)\)。不过这些一般题目都能保证。

例题

CF1349D Slime and Biscuits

以第 \(t\) 时刻第 \(i\) 个人拥有的饼干数做为小状态,设每个人的势函数为 \(f(a_{t,i})\);把所有人的饼干数压一块作为大状态,设势函数为 \(\sum_{i}f(a_{t,i})\)。那么我们要做的是:

\[E(\phi(A_t)-\phi(A_{t+1}))=-1 \]

即:(\(m\) 为总饼干数)

\[\sum_i f(a_{t,i})-\sum_{i}\sum_{j \not= i}\frac{a_{t,j}}{m(n-1)}(f(a_{t,i}-1)+f(a_{t,j}+1)+\sum_{k \not= i,k\not= j}f(a_{t,k}))=-1 \]

\[\sum_i f(a_{t,i})=\sum_{i}(\frac{a_{t,j}}{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}) \]

如果我们能够构造出一种 \(f(a_{t,i})\),符合这个式子,那么这个 \(f\) 就能用于求解 \(E(T)\)。一种构造方法是:

\[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(0)=f(1)=1\),然后答案是:

\[E(T)=\sum_i f(a_{0,i}) - (f(m) + (n-1)f(0)) \]

CF850F Rainbow Balls

类似地,以第 \(t\) 时刻第 \(i\) 个颜色的球的个数作为小状态,设每个人的势函数为 \(f(a_{t,i})\);把所有人的饼干数压一块作为大状态,设势函数为 \(\sum_{i}f(a_{t,i})\)。那么我们要做的是:

\[E(\phi(A_t)-\phi(A_{t+1}))=-1 \]

即:(\(m\) 为总球数)

\[\sum_i f(a_i) = \sum_i \frac{a_i(m-a_i)}{m(m-1)}(f(a_i + 1) + f(a_i-1)) + (1 - 2\frac{a_i(m-a_i)}{m(m-1)})f(a_i) + \frac{a_i}{m} \]

我们接着类似上一道题那样构造:

\[f(a)=\frac{a(m-a)}{m(m-1)}(f(a+1)+f(a-1))+(1-2\frac{a(m-a)}{m(m-1)})f(a) + \frac{a}{m}\\ \frac{a(m-a)}{m(m-1)}(f(a+1)+f(a-1)-2f(a))+\frac{a}{m}=0\\ f(a+1)-f(a)-(f(a)-f(a-1))=-\frac{m-1}{m-a} \]

我们当然可以钦定 \(f(0)=f(1)=0\),然后把所有的 \(f\) 都递推出来,这样是对的。但是,由于最终的那个 \(m\) 可能非常大,我们没办法递推到 \(m\)。由于那个可恶的 \(a\) 在分母上,我们也没有办法矩乘加速。(或许可以打个表?)不过既然左边的式子长得那么好看,我们或许可以在它上面做文章。

我们可以设 \(g(a)=f(a)-f(a-1)\),那么有:

\[g(a+1)-g(a)=-\frac{m-1}{m-a}\\ g(a)=g(0)-\sum_{b=0}^{a-1}\frac{m-1}{m-a} \]

于是可以推 \(f\)

\[\begin{aligned} f(x)&=f(x-1)+g(x)\\ &=f(0) + \sum_{a=1}^{x}g(0)-\sum_{b=0}^{a-1}\frac{m-1}{m-a}\\ &= f(0)+xg(0)-(m-1)\sum_{b=0}^{x-1}\frac{x-b}{m-b}\\ &= f(0)+xg(0)-(m-1)\sum_{b=0}^{x-1}1-\frac{x-m}{m-b}\\ &= f(0)+xg(0)-(m-1)x+(m-1)(x-m)\sum_{b=0}^{x-1}\frac{1}{m-b} \end{aligned} \]

令人高兴的是,最右面那个和式乘上了个 \(x - m\),这样 \(f(m)\) 就好算很多了。方便起见,我们令 \(f(0)=0,g(0)=m-1\),那么:

\[f(x)=(m-1)(x-m)\sum_{b=0}^{x-1}\frac{1}{m-b} \]

直接暴算可得 \(f\)

因为 \(f(m)-(n-1)f(0)=0\) 为常数,可以用停时定理。最终答案为:

\[\phi(A_0)-\phi(A_T)=\sum_{i}f(a_i)-(f(m)-(n-1)f(0))=\sum_{i}f(a_i) \]

CF1025G Company Acquisitions

类似地,我们以“块”内的总点数作为小状态,那么有:

\[\begin{aligned} E(\phi(A_t))&=\sum_{i=1}^{m_t}f(a_{t,i})\\ E(\phi(A_{t+1}))&=\sum_{i=1}^{m_t}\sum_{j \not= i}\frac{1}{m_t(m_t-1)}((a_{t,i}-1)f(1) + f(a_{t,j}+1)+\sum_{k \not= i,k \not= j}f(a_{t,k}))\\ &=\sum_{i=1}^{m_t}(1-\frac{2}{m_t})f(a_{t,i})+\frac{a_{t,i}-1}{m_t}f(1) + \frac{1}{m_t}f(a_{t,i}+1) \end{aligned} \]

\(E(\phi(A_{t + 1}))-E(\phi(A_t))=-1\) 得:

\[\sum_{i=1}^{m_t}(1-\frac{2}{m_t})f(a_{t,i})+\frac{a_{t,i}-1}{m_t}f(1) + \frac{1}{m_t}f(a_{t,i}+1)+\frac{1}{m_t}=\sum_{i=1}^{m_t}f(a_{t,i}) \]

看起来那个 \(m_t\) 很吓人,因为我们并没有将 \(m_t\) 计入状态。不过幸运的是,我们可以把 \(m_t\) 消去:

\[\sum_{i=1}^{m_t}-2f(a_{t,i})+(a_{t,i}-1)f(1)+f(a_{t,i}+1)+1=0 \]

于是我们可以构造:

\[-2f(a) + (a-1)f(1)+f(a+1)+1=0 \]

我们钦定 \(f(1)=0\),那么有:

\[f(a+1)=2f(a)-1 \]

显然 \(f(n)\) 为常数,于是可以应用停时定理:

\[\phi(A_0) - \phi(A_T)=\sum_{i=1}^{m_t}f(a_{0,i})-f(n) \]

递推出 \(f\) 直接算即可。

posted @ 2020-09-26 15:50  JiaZP  阅读(575)  评论(0编辑  收藏  举报