赔率算法初探

先由一个经典的问题引入

nn 个奖陆续出台,每一个奖可以选择选或者不选,每个奖只能在出台的时候选,并且只能选一个奖,每出台一个可以和前面的比较价值大小,问想得到价值最大的奖的最优策略。

这是经典的秘书问题

赔率算法

将其抽象为个一个数学问题:

nn 个 0/1 独立随机变量 a1,a2,...,ana_1,a_2,...,a_nE[ai]=piE[a_i]=p_i,可以从前向后观测每个 aia_i 的取值,并选择是否停止,求策略使得停止位置是最后一个 11 的概率最大。

上面那个问题相当于是 pi=1ip_i=\dfrac{1}{i},表示第 ii​ 个奖是前缀最大值。

由于变量独立,所以前面的结果不会影响后面的,也就是如果 [1,i1][1,i-1] 都没有停,那么 ii 开始的决策将与前面无关。

fif_i 表示从 ii 开始进行决策,能得到的最大概率。

可以得到:

fi=(1pi)fi+1+pimax(fi+1,j=i+1n(1pj))=max(fi+1,(1pi)fi+1+pij=i+1n(1pj))f_i=(1-p_i)f_{i+1}+p_i\max(f_{i+1},\prod_{j=i+1}^n (1-p_j))\\ = \max(f_{i+1},(1-p_i)f_{i+1}+p_i\prod_{j=i+1}^n (1-p_j))

左边转移表示不停,右边表示能停就停,答案就是 f1f_1

从左边部分可以发现 fif_i 一定单调不增,而如果从右边转移说明 j=i+1n(1pj)>fi\prod\limits_{j=i+1}^n (1-p_j)>f_i,而 j=i+1n(1pj)\prod\limits_{j=i+1}^n (1-p_j) 显然单调增,所以说肯定可以找到一个断点 TT,满足 T\ge T 的都从右边转移,然后 f1=fTf_1=f_T

那么直接全部由右边转移,然后找到最后一个 fi<fi+1f_i<f_{i+1} 的位置即可。

fi=(1pi)fi+1+pij=i+1n(1pj)f_i=(1-p_i)f_{i+1}+p_i\prod_{j=i+1}^n (1-p_j)

暴力展开,得到:

fi=j=inpjk=in[jk](1pk)f_i=\sum_{j=i}^{n}p_j\prod_{k=i}^n [j\ne k](1-p_k)

在前面加入一项得到 fi1f_{i-1},令 pi1=pp_{i-1}=p'

fi1=(1p)fi+pj=in(1pj)fifi1=pfipj=in(1pj)=pj=inpjk=in[jk](1pk)pj=in(1pj)=pj=in(1pj)k=inpk1pkpj=in(1pj)f_{i-1}=(1-p')f_{i}+p'\prod_{j=i}^n (1-p_j)\\ f_i-f_{i-1}=p'f_i-p'\prod_{j=i}^n (1-p_j)\\ =p'\sum_{j=i}^{n}p_j\prod_{k=i}^n [j\ne k](1-p_k)-p'\prod_{j=i}^n (1-p_j)\\ =p'\prod_{j=i}^n (1-p_j)\sum_{k=i}^n\frac{p_k}{1-p_k}-p'\prod_{j=i}^n (1-p_j)

因此 TT 是满足 i=Tnpi1pi1\sum_{i=T}^n \frac{p_i}{1-p_i}\ge 1 的最大的 TT

由于后面的转移全部都是选右边的转移,所以用语言可以表示为前面 TT 个全部放弃,后面遇到一个 11​ 就直接选,

该算法称为赔率算法odds algorithm)。

回到最开始的问题,我们现在解决它。

ri=pi1pi=1i1r_i=\frac{p_i}{1-p_i}=\frac{1}{i-1}

我们求解 limn\lim_{n\to \infty} 的策略。

i=Tn1iTn1xdxTn1xdx=lnnlnT=1\sum_{i=T}^n \frac{1}{i}\ge \int_{T}^n \frac{1}{x}dx\\ \int_{T}^n \frac{1}{x}dx=\ln n-\ln T= 1

轻松解得 T=n/eT=n/e,这就是最优策略。

算一下得到最大值的概率,由于 i=Tnpi1pi=1\sum_{i=T}^n \frac{p_i}{1-p_i}=1

所以

fT=i=Tni1i=T1n=1ef_T=\prod_{i=T}^n \frac{i-1}{i}=\frac{T-1}{n}=\frac{1}{e}

其他问题

未完待续。