鞅与停时定理学习笔记
参考博客:势函数和鞅的停时定理 - p_b_p_b
定义
-
随机过程:随机过程 \(X\) 为一随机变量族 \(\{X_0,X_1,X_2,\cdots\}\),其中 \(X_i\) 为随机变量(代表的是 \(i\) 次操作后的状态)。
-
鞅:称随机过程 \(X\) 为鞅,如果:
- \(\forall n \geq 0,E(|X_n|)<+\infty\)
- \(\forall n \geq 0,E(X_{n+1}|X_0,\cdots,X_n)=X_n\)
称随机过程 \(Y\) 为随机过程 \(X\) 的鞅,如果:
- \(\forall n \geq 0,E(|Y_n|)<+\infty\)
- \(\forall n \geq 0,E(Y_{n+1}|X_0,\cdots,X_n)=Y_n\)
第一个条件即期望有限(这点一般题目都能保证)。
第二个条件意味着已知 \(X_0,\cdots,X_n\),\(E(X_{n+1})=E(X_{n+2})=\cdots=X_n\)。
此外,易知 \(E(X_n)=E(X_0)\)。
-
随机时刻:设随机变量 \(T \in N \vee \{+\infty\}\) 与随机过程 \(X\),若事件 \(T=n\) 的示性函数 \(I_{T=n}\) 为关于 \(X_0,\cdots,X_n\) 的函数(即仅由这些随机变量确定),则称 \(T\) 为 \(X\) 的随机时刻。
-
停时:若 \(T\) 为 \(X\) 的随机时刻,且 \(P(T<+\infty)=1\),则称 \(T\) 为 \(X\) 的停时。
-
停止过程:若 \(T\) 为 \(X\) 的随机时刻,则定义 \(X\) 的停止过程 \(\overline X\) 为:
-
性质:若 \(X\) 为鞅,则 \(\overline X\) 为关于 \(X\) 的鞅。
- 证明:若 \(n<T\),则 \(E(\overline X_{n+1}-\overline X_n | X_0,\cdots,X_n)=E(X_{n+1}-X_n | X_0,\cdots,X_n)=0\);否则,\(E(\overline X_{n+1}-\overline X_n | X_0,\cdots,X_n)=0\)。
-
鞅的停时定理:若随机过程 \(X\) 与 随机时刻 \(T\) 满足以下条件之一:
- \(\overline X_n\) 一致有界(即每一个 \(\overline X_n\) 均有界)。
- \(T\) 有界。
- \(E(T)<+\infty\),且存在 \(M<\infty\) 使 \(E(|X_{n+1}-X_n| \mid X_0,\cdots,X_n)<M\)。
则 \(E(X_T)=E(X_0)\)。
一般而言题目都能满足条件。
解题方法
目前遇到的题都比较套路。
-
设计状态(一般而言状态就是题目中的状态)。
-
尝试构造势函数 \(\phi(X)\),使得 \(E(\phi(X_{n+1})|X_0,\cdots,X_n)=\phi(X_n)+1\)。这样一来 \(\{\phi(X_n)-n\}\) 即为一个鞅,由停时定理得到 \(E(\phi(X_T))-E(T)=E(\phi(X_0))\),即可计算 \(E(T)=E(\phi(X_T))-E(\phi(X_0))\)。
-
解 \(E(\phi(X_{n+1})|X_0,\cdots,X_n)=\phi(X_n)+1\) 方程并构造势函数。(主要步骤)
问题 1 (CF1025G Company Acquisitions)
-
现有 \(n\) 个人组成若干组,每组有且仅有一个组长。
-
接下来的每一时刻,随机有序选取两个不同的组长 \(A,B\),让 \(A\) 加入 \(B\) 的组内并将 \(A\) 原来的组解散(每个人各自组建一个新的小组)。
-
求第一次只剩下一个组的期望时间。
设大小为 \(n\) 的组的势函数为 \(f(n)\),一个局面的势函数 \(\phi(X_t)=\sum f(a_{t,i})\),其中 \(a_{t,i}\) 表示的是 \(X_t\) 中每个组的大小。
由于这道题组数会变,考虑每次只计算变化的。设无序选出的两个组长所在组的人数分别为 \(a,b\)。
令 \((n-1)f(1)+\dfrac{1}{2}f(n+1)-f(n)=\dfrac{1}{2}\),即 \(f(n)=2f(n-1)-2(n-1)f(1)+1\)。
令 \(f(1)=0\),即有 \(f(n)=2f(n-1)+1=2^{n-1}-1\)。
答案即为 \(E(T)=E(\phi(X_T))-E(\phi(X_0))\),时间复杂度 \(O(n \log mod)\)。
问题 2 (CF1349D Slime and Biscuits)
-
现有 \(n\) 个人, 第 \(i\) 个人有 \(a_i\) 个饼干。
-
每一时刻,随机选择一个饼干, 将其随机分配给除了它现在所有者的其他 \(n-1\) 个人之一。
-
求第一次出现一个人拥有所有饼干的期望时间。
设 \(m=\sum a_i\)。
令 \(\phi(X_{t+1})=\phi(X_t)+1\),即 \(\phi(X_t)=\phi(X_{t+1})-1\)。这里把 \(1\) 拆成 \(n \times \dfrac{1}{n}\),拆成 \(\sum \dfrac{a_i}{m}\) 也可以(之后会这么拆)。
移项得:
线性递推即可,时间复杂度 \(O(m)\)。
问题 3 (CF850F Rainbow Balls)
-
现有 \(n\) 种颜色, 第 \(i\) 种颜色有 \(a_i\) 个球。
-
每一时刻,随机有序选择两个不同的球(可能同色),将第二个球染成第一个球的颜色 。
-
求第一次所有球颜色相同的期望时间。
看起来与问题 2 大同小异
设 \(m=\sum a_i\)。
写出方程得到:
可以如问题 2 直接递推,时间复杂度 \(O(m)\)。
遗憾的是这道题 \(m\) 可能很大,需要快速算出 \(f(m)\)。
发现递推形式非常整齐,考虑令 \(g(a)=f(a)-f(a-1)\)。
令 \(f(0)=g(0)=0\),则:
时间复杂度 \(O(\max\{a_i\})\)。
问题 4 (CF1479E School Clubs)
-
现有 \(m\) 个学生组成 \(n\) 组。
-
接下来的每一时刻,随机选取一个学生,他各有一半的概率进行以下操作之一:
- 脱离该组并成立一个新的组。
- 脱离该组并以正比于人数的概率随机加入某一小组(可能回到原来的组)。
-
求第一次只剩下一个组的期望时间。
好像就是问题 1 和 问题 3 的合体
同样化简得到:
令 \(f(1)=2\):
官方题解用的是 \(O(m(\sqrt n+\log n))\) 的多项式做法。我们不想写多项式,怎么办呢 不过事实上线性也能过。
由于数据范围过大,甚至连 \(O(m)\) 的数组都不能开。但是可以考虑用阶乘除阶乘的办法算逆元。
令 \(g(a)=m(m-1)(m-2)\cdots(m-a+1)f(a)\),带入得:
动态记录 \(g(a)\),\(g(a-1)\) 与 \(m(m-1) \cdots (m-a+1)\) 即可做到 \(O(m+n \log mod)\)。