鞅与停时定理

· · 算法·理论

其实这是一篇正经的科普文章。

一些约定

离散时间鞅

一个离散时间鞅为一个以时间为参数集合的随机过程,即随机过程 \{X_0,X_1,\cdots \},满足对于任意时刻 n\in \mathbb{N},均有:

第二个条件看起来不知所云,其实意思就是当 X_{0},X_{1},\cdots ,X_{n} 已经确定时,X_{n+1} 的期望等于 X_n。类似一个公平赌博游戏,若我们已经得到了前 n 场赌博后你所拥有的财产(观测值),那么要求第 n+1 场的观测值的期望等于第 n 场的观测值(不亏不赚),才能满足公平赌博游戏的定义(所以公平赌博游戏其实差不多就是鞅www)。

同时不难发现鞅的线性加减、增减常数都不影响其鞅的性质。

停时

关于随机过程 \{X_{0},X_{1},\cdots\} 的停时为一个非负的随机变量 T(可能为 ,即操作无限进行),满足对任意时刻 n,你可以通过观测 X_0,X_1,\cdots,X_{n} 的取值得出 nT大小关系/等量关系。即 [n=T],[n<T],[n>T] 三个随机变量的取值仅与 X_{0},X_{1},\cdots ,X_{n} 有关。

对于随机过程 \{X_0,X_1,\cdots\},对应带停时为 T 的随机过程 \{\overline {X_0},\overline {X_1},\cdots\} 的定义为:

\overline {X_n}=\begin{cases}X_n\quad n\le T\\X_T\quad n>T\end{cases}

\{\overline {X_{1}},\overline {X_{2}},\cdots \} 为将 \{X_0,X_1,\cdots \}T 之后的项全部覆盖为 T 后的随机过程,可以看作在时刻 T 终止随机操作。(所以停时也可以理解为操作的停止时间。)

由于 \overline{X_n}n\le T\overline{X_n}=X_n 期望不变,而 n>T 时我们钦定它期望不变,所以满足鞅期望观测值不变的性质,所以 \{\overline{X_1},\overline{X_2},\cdots\} 也是一个鞅。

鞅的停时定理

T 为离散时间鞅 \{X_0,X_1,\cdots\} 的停时,且 T 几乎一定有限,当下面三个条件之一成立时,有 E(X_T)=E(X_0)

为了帮助理解,给出下面若干例子:

势能分析

考虑经典模型:

假设现在有随机过程 \{X_0,X_1,\cdots \}T 为其停时,给定初始状态 X_0,终止状态 \overline{X_T},求 E(T)

考虑构造势能函数 \varphi(X),同时描述了时间状态两个变量:

第一个限制保证了每个时刻,势能的变化量期望为 -1,那么 E(\varphi(X_0))-E(\varphi(X_n))=n;第二个限制保证了末状态势能唯一,也就是保证末状态为第一个满足终止条件的状态的需要。

构造 Y_i=\varphi(X_i)+i,根据定义,\{Y_0,Y_1,\cdots\} 为一个离散时间鞅。那么根据停时定理,可以得到 E(Y_T)=E(Y_0),即 E(\varphi(X_T)+T)=E(\varphi(X_0)),即 E(T)=E(\varphi(X_0))-E(\varphi(X_T)),根据定义右边两项都是常数值,于是就能方便地求出 E(T)

有的地方也把 \varphi 取相反数,那么就是每次期望 +1,期望停时为初状态的势能减去末状态的势能。

对于一般题目来讲,构造关于题面中状态有关量为自变量的函数,然后根据第一条限制解函数方程/递推,并使用鞅与停时定理求出期望停时即可。

势能具有相对性,这允许我们对于一些常数 C,钦定 f(C) 的值。这通常会使函数方程大大简化。

CF1025G Company Acquisitions

定义整个局面 X 的势能函数为 \varphi(X),由于我们只关心每个点跟在屁股后面的点的个数,定义单个点 u 的势能为 f(c_u)c_u 为局面 X 下跟在 u 后的点的个数,f 为关于 c 的函数,令 \varphi(X)=\sum\limits_{u}f(c_u)

X\to X' 的势能变化量只和每次随机选出来的两个点 u,vc 有关,令 c_u=x,c_v=y

\begin{aligned}E(\varphi(X'))-E(\varphi(X))&=-1\\E(\varphi(X'))&=E(\varphi(X))-1\\\frac{1}{2}(f(x+1)+yf(0))+\frac{1}{2}(f(y+1)+xf(0))&=(f(x)+f(y))-1\end{aligned}

我们令 f(0)=0

\frac{1}{2}f(x+1)+\frac{1}{2}f(y+1)=f(x)+f(y)-1

要求对任意 x,y 均成立,那么一个简单的想法是直接拆两半:

\frac{1}{2}f(x+1)=f(x)-\frac{1}{2}

结合 f(0)=0 得到:

f(x)=1-2^x

那么答案就是 \left(\sum\limits_{u}f(c_u)\right)- f(n),复杂度 O(n)

CF1479E School Clubs

我们只关心每个组内的人数,所以依旧令局面 X 的势能值 \varphi(X)=\sum\limits_{i=1}^{m}f(a_i) 为各个组势能之和,一组的势能定义为其人数 a_if 值。

每次操作,将随机发电的那个人所在的组拎出来,设为第 i 组:

然后就是一些 Dirty Work 了:

\begin{aligned}&E(\varphi(X')-\varphi(X)|X)\\=&\sum\limits_{i=1}^m\frac{a_i}{2n}\left(-f(a_i)+f(a_i-1)+f(1)+\frac{a_i}{n}\varphi(X)+\sum\limits_{j\neq i}\frac{a_j}{n}\left(-f(a_i)-f(b_i)+f(a_i-1)+f(b_i+1)\right)\right)\\=&\sum\limits_{i=1}^m\frac{a_i}{2n}\left(-\left(2-\frac{a_i}{n}\right)f(a_i)+\left(2-\frac{a_i}{n}\right)f(a_i-1)+f(1)+\sum\limits_{j\neq i}(f(a_j+1)-f(a_j))\right)\\=&\frac{1}{2}f(1)+\sum\limits_{i=1}^n\frac{a_i}{2n}\left(-\left(3-\frac{2a_i}{n}\right)f(a_i)+\left(2-\frac{a_i}{n}\right)f(a_i-1)+\left(1-\frac{a_i}{n}\right)f(a_i+1)\right)\\=&-1\end{aligned}

不妨设 f(1)=-2

\sum\limits_{i=1}^n\frac{a_i}{2n^2}\left(-(3n-2a_i)f(a_i)+(2n-a_i)f(a_i-1)+(n-a_i)f(a_i+1)\right)=0 -(3n-2a)f(a)+(2n-a)f(a-1)+(n-a)f(a+1)=0

然后 O(n) 递推 f 的值即可。这是能过的。