DennyQi's Log

secretary分析

到目前为止,我们对算法的分析都是基于算法在worst-case上的表现的。我们总会假设有一个adversary在已知我们设计的算法以后总会用一个最坏的输入来让我们的算法表现糟糕。然而我们发现,在某些在线算法问题下这样的分析方法太强了,以至于所有确定性算法甚至随机算法的竞争比都没有常数的竞争比,以至于worst-case分析无法比较不同算法之间的优劣。对此,一个解决方法就是采取一系列弱于worst-case的分析方法,也就是算法的beyond-the-worst-case分析。

Selecting the maximum

为了展示引入beyond-the-worst-case分析的必要性,我们考虑下面这个问题:有nn个数依次到达,我们必须在线地选出nn个数中最大的那个数。具体的,我们提前已知nn的大小,接着每次会接收到一个输入数字viv_i。对于每个接收到的数字,我们要么选择reject,然后接收下一个数;要么选择accept,不再接收输入。我们希望我们选择接受的那个数是这nn个数中最大的那个。

Worst-Case Analysis

OPT\text{OPT}总是会选择最大的那个vmaxv_{\max}ALG\text{ALG}会选择vτv_{\tau}。如果用worst-case来分析,我们会用vτvmax\dfrac{v_{\tau}}{v_{\max}}来定义竞争比,我们的目标是让vτvmax\dfrac{v_{\tau}}{v_{\max}}尽量大。

对于确定性算法,这个问题的竞争比会趋向0。考虑n=2n=2,如果算法总是选第一个数,那么只要第二个数比第一个数大MM倍,算法的竞争比就是1/M1/M;如果算法总是选第二个数,那么只要第一个数比第二个数小MM倍,算法的竞争比也是1/M1/M。当MM\to\infty时,竞争比趋向0。

对于随机算法,竞争比依然会趋向0。由于输入数列的排列是任意的,没有理由设计一个倾向任何某个特定位置的随机算法。所以一个随机算法应该会以1/n1/n的概率选择接受每个位置。那么我们可以构造这样一个输入序列:1,M,M2,,Mk,0,0,0,,01,M,M^2,\cdots,M^k,0,0,0,\cdots,0ALG\text{ALG}的输出的期望是i=0k1nMi=1nMk+11M1\sum\limits_{i=0}^{k}\dfrac{1}{n}\cdot M^i=\dfrac{1}{n}\cdot \dfrac{M^{k+1}-1}{M-1},所以竞争比为1nM1/MkM1\dfrac{1}{n}\cdot \dfrac{M-1/M^k}{M-1}。可见MM\to\infty时竞争比为趋向1n\dfrac{1}{n}。因此当nn\to\infty时,竞争比会趋向00

Random Arrival - Secretary Model

由此可见,对于选最大数的问题,worst-case分析对于确定性算法和随机算法都失效了,因为worst-case下所有在线算法和最优算法相比表现都太差了。因此如果想要分析选最大数问题的在线算法,必须换一种分析方法。

在worst-case下,adversary能够选择nn个数并以特意安排的顺序交给算法。现在我们弱化adversary的能力,考虑以下问题:已知nn,让adversary选nn个数,然后把这nn个数随机打乱顺序以后,让它们依打乱后的顺序在线到达。我们分析算法选出这nn个数中最大数的概率(这里的随机性来自这nn个数被打乱时的随机性以及算法本身的随机性)。

这个模型称为secretary model,因为这就好像老板要从nn个候选人中选择一个作为他的秘书,这nn个候选人抽签决定面试顺序,在每个人面试完以后老板为了维护威严必须当场宣布是否录用。老板希望录用到最优秀的人的概率尽量大。在现代的文献中,secretary这个词就被等价地用来表示“Random Arrival”。

Wait-and-Pick

我们首先考虑下面这个确定性算法:总是拒绝前一半的数,记录下前一半数中最大的那个称为mm,接着在后半段开始后选择第一个大于mm的数作为输出(如果没有就输出mm)。我们可以证明这个算法总是有1/41/4的概率回答正确:注意到,如果第二大的数出现在前半段,并且最大数出现在后半段,算法一定会输出正确。而第二大数出现在前半段的概率是1/21/2,最大数出现在后半段的概率是1/21/2。这两个事件不是独立的,但是它们是正相关(positively correlated)的,因为第二大数出现在前半段会让最大数更容易出现在后半段,最大数出现在后半段会让第二大数更容易出现在前半段。因此至少有1/21/2=1/41/2\cdot 1/2=1/4的概率最这两个事件同时发生,也即算法至少有1/41/4的概率会成功。这样我们就得到了一个竞争比为44的算法。

我们可以优化上面的算法。在上面的算法中,“前一半”事实上是我们选择了50%50\%这个常数。下面我们设这个常数是cc,设m=cnm=cn。设最大数出现在第tt个, 那么如果满足t>mt>m并且前t1t-1个数中最大的那个落在前mm个中,算法就会成功。可以枚举tt,计算出概率t=m+1n1nmt1=mnt=m+1n1t1=mn(HnHm)\sum\limits_{t=m+1}^{n}\dfrac{1}{n}\cdot \dfrac{m}{t-1}=\dfrac{m}{n}\sum\limits_{t=m+1}^{n}\dfrac{1}{t-1}=\dfrac{m}{n}(H_n-H_m)。当nn\to\infty时,mn(HnHm)mnlnnm=clnc\dfrac{m}{n}(H_n-H_{m})\to \dfrac{m}{n}\ln\dfrac{n}{m}=-c\ln cc(0,1)c\in (0,1)。对cc求导可得c=1/ec=1/e时有最大值1/e1/e。也就是说,我们总是拒绝前n/en/e的人然后选最大的那个,就能得到一个竞争比为ee的算法。

我们可以证明,竞争比不能做得比ee更好,也即不存在一个算法成功的概率超过1/e1/e。我们可以设计如下动态规划:令p[i]p[i]表示如果强行拒绝前i1i-1个数,算法所能成功的最优概率。那么显然有p[n+1]=0p[n+1]=0,写出状态转移方程p[i]=1imax(p[i+1],in)+i1ip[i+1]p[i]=\dfrac{1}{i}\cdot \max(p[i+1],\dfrac{i}{n})+\dfrac{i-1}{i}\cdot p[i+1]。其中,前一项表示第ii个数恰好是前ii个数中最大的,这一事件发生的概率是1i\dfrac{1}{i},此时如果我们选择拒绝,那么算法成功概率是p[i+1]p[i+1],如果选择接受,那么算法成功概率就是“前ii个数中的最大数恰好是nn个数中的最大数”这一事件的概率in\dfrac{i}{n};第二项表示第ii个数不是前ii个数中最大的,这一事件发生的概率是i1i\dfrac{i-1}{i},此时我们总是选择拒绝,因此概率是p[i+1]p[i+1]。可以看出,p[i]p[i]这一数列可以由递推计算得到。可以验证,i[n],p[i]1/e\forall i\in [n],p[i]\leq 1/e

Random Arrival with Time

还有一种等价地看“随机到达”的视角。在原来的设定下,当我们说“nn个候选人以打乱顺序的方式到达”的意思是,我们会从nn个数的n!n!个permutation中均匀随机采样一个来作为候选人的顺序。我们也可以引入“时间”的概念来等价地描述这件事。设我们独立重复地从实数闭区间[0,1][0,1]中采样nn次,得到t1,,tnt_1,\cdots,t_n。把tit_i分配给第ii个候选人作为出场时间,那么显然这nn个人的出场顺序的分布应当是均匀的(没有理由倾向任何某个特定的出场顺序)。在候选人有了出场时间tit_i这一属性以后,我们可以把Wait-and-Pick算法修改如下:候选人按时到达,在时刻1e\dfrac{1}{e}以前,我们总是选择拒绝,并记下最大的数;在时刻1e\dfrac{1}{e}以后,选择最早到达的比记下的最大数大的那个数。

我们来分析这一修改后的算法的成功概率:设最大数在时刻tt出现,那么当且仅当t[1e,1]t\in [\dfrac{1}{e},1]才有可能成功。对于每个固定的tt,我们能成功当且仅当第二大数出现在[0,1e][0,\dfrac{1}{e}]当中,因此每个tt对应的成功的概率密度为1e1t\dfrac{1}{e}\cdot \dfrac{1}{t}。根据全概率公式,算法的成功概率为1/e11et dt=1e[lnt]1/e1=1e\displaystyle\int_{1/e}^{1}\dfrac{1}{et}\text{ d}t=\dfrac{1}{e}[\ln t]^1_{1/e}=\dfrac{1}{e}。我们看到,用这种方式我们也得到了相同的概率。我们之后会看到,这种利用“到达时间”来刻画随机排序的视角是很有用的。

Ordinal Versus Cardinal

Secretary Maximum问题有一个变形叫Game of Googol,描述如下:在nn张纸片上分别写下互不相同的nn个不超过1010010^{100}的整数(这就是为什么游戏名字称为googol,因为googol就是1010010^{100}的意思),接着把这些纸片背面朝上然后打乱。我们每次可以翻开一张纸,然后决定是否选它作为最大值的决定。一旦决定就不能继续翻开别的纸。我们希望我们翻出最大数的概率尽量大。

我们看到game of googol这个问题和secretary唯一的区别在于,在game of googol中,一个数最大也不可能超过1010010^{100},而secretary maximum中数字是没有上界的。换言之,在secretary中我们只能基于比较来得出最大值,而在game of googol中我们是有可能利用数字大小本身的信息来做判断的,比如如果翻出一个数已经非常接近1010010^{100},我们大概率可以把这个数选为最大数。

基于比较的算法称为ordinal algorithm,基于数字具体大小的算法称为cardinal algorithm。显然ordinal algorithm不会比cardinal做的更好。

尽管可能采取的算法不同,以上两个问题本身都是最大化找到最大数的概率。换言之,任务本身是基于比较的,我们把这样的任务称为ordinal task。如果我们修改最大化的目标,比如改为最大化输出的数的期望,那么这就变成了一个cardinal task。这三个问题之间会有一些subtle difference,这里就不详细展开了。

Secretary Matching

接下来,我们用secretary model来分析二分图在线匹配问题。也即,我们要分析右侧节点以随机顺序到达的二分图在线匹配问题。我们考虑带权的二分图匹配,也即我们的目标是边权之和最大,而不是边数最多。对于二分图G=(UV,E)G=(U\cup V,E),左侧的点UU是offline的,VV是随机到达的,每次到达时会给出与其相连的点以及对应的边权。我们需要在每个点vv到达时就进行匹配的决策,不能后悔。

我们注意到,如果左侧点集UU只包含一个点,那么这个问题就退化为了上一节讨论的在线选最大数问题:匹配就意味着选择,边权就是数。因此,我们现在其实是在讨论secretary问题的推广。

Wait-and-Match

于是,我们考虑把Wait-and-Pick算法也推广,称为Wait-and-Match。右侧在线到达的点共有V|V|个,我们总是拒绝匹配任何最先到达的V/e|V|/e个点。接着,对于第tt个到达的点vtv_t,我们记Vt={v1,v2,,vt}V_t=\{v_1,v_2,\cdots,v_t\},我们这样做决策:我们对于二分图GG中由点UVtU\cup V_t构成的导出子图做带权的最大匹配,设匹配结果为MWM(U,Vt)\text{MWM}(U,V_t),如果MWM(U,Vt)\text{MWM}(U,V_t)vtv_t被加入了匹配,设匹配边为(ut,vt)(u_t,v_t),那么我们观察当前在线算法中的utu_t是否已经被匹配。如果已经匹配,那么拒绝匹配vtv_t;如果没有匹配,那么用vtv_t匹配utu_t

我们容易验证,以上算法对于U=1|U|=1的情形就是Wait-and-Pick,因为utu_t存在当前仅当当前数目前为止的最大数,也即第一个比前V/e|V|/e个数中任何数都要大的数,此时我们做出匹配,也即做出选择。

下面我们来分析Wait-and-Match的竞争比。

首先,我们分析当我们匹配(ut,vt)(u_t,v_t)E[w(ut,vt)]\mathbb E[w(u_t,v_t)]的大小。注意,这里的随机性来自VV中节点到达顺序的随机性。注意到,第tt条被匹配的边的权值的期望等价于前tt条被匹配的边中最后一条被匹配的边的权值大小的期望。而由于到达是均匀随机的,因此前tt条被匹配的边中,每一条的权值大小的期望都应当是相等的。因此有E[MWM(U,Vt)]=tE[w(ut,vt)]\mathbb E[\text{MWM}(U,V_t)]=t\cdot \mathbb E[w(u_t,v_t)]MWM\text{MWM}代表Max-Weighted Matching)。设OPT=MWM(U,V)=E[MWM(U,Vn)]\text{OPT}=\text{MWM}(U,V)=\mathbb E[\text{MWM}(U,V_n)],其中nn表示OPT\text{OPT}中参与匹配的VV中节点的个数,那么应当有E[MWM(U,Vt)]tnE[MWM(U,Vn)]\mathbb E[\text{MWM}(U,V_t)]\geq \dfrac{t}{n}\mathbb E[\text{MWM}(U,V_n)],因为我们总可以选取OPT\text{OPT}中匹配的边在(U,Vt)(U,V_t)中形成一个“子匹配”,而系数tn\dfrac{t}{n}再次是由于每条匹配边的权重期望都相等。这样我们就得到了E[w(ut,vt)]=1tE[MWM(U,Vt)]1ttnOPT=1nOPT\mathbb E[w(u_t,v_t)] =\dfrac{1}{t}\mathbb E[\text{MWM}(U,V_t)] \geq \dfrac{1}{t}\cdot \dfrac{t}{n}\text{OPT}=\dfrac{1}{n}\cdot \text{OPT}。这说明,每一次匹配对结果的期望产生的贡献为1nOPT\dfrac{1}{n}\cdot \text{OPT}

下面我们证明,对于任意的offline点uUu\in U,在第tt个在线点到达后它仍未被匹配的概率net\geq \dfrac{n}{et}。首先注意到,对于某个固定的点uu,它恰好在第tt次被匹配的概率的概率为1t\dfrac{1}{t},因为MWM(U,Vt)\text{MWM}(U,V_t)是一个确定性的结果,而VtV_t的顺序是均匀随机的。所以uu没被匹配的概率t1t\geq \dfrac{t-1}{t}进一步我们可以说,如果我们固定VtV_tVV中的一个子集SS,那么一定成立Pr[u=utVt=S]1t\Pr[u=u_t\mid V_t=S]\leq \dfrac{1}{t}。那么就可以得到uu在第tt次以后仍未匹配的概率至少是它在第tt次未被匹配、在第t1t-1次未被匹配、……、在第n/en/e次未被匹配这些事件同时发生的概率,所以Pr[u is unmatched at t]t1tt2t1n/en/e+1=net\Pr[u \text{ is unmatched at }t]\geq \dfrac{t-1}{t}\cdot \dfrac{t-2}{t-1}\cdots \dfrac{n/e}{n/e+1}=\dfrac{n}{et}。注意,这里我们之所以可以直接把这些概率相乘,是因为这些事件是独立的,原因在于Pr[u=utVt=S]1t\Pr[u=u_t\mid V_t=S]\leq \dfrac{1}{t}这一结论是对于任何固定的SS成立的,而不依赖于具体的顺序。这说明,每一个在线节点到达时能进行匹配的概率至少为n/etn/et

综上,我们分析算法的期望结果ALG=E[MWM(U,Vn)]\text{ALG}=\mathbb E[\text{MWM}(U,V_n)]。从第n/e+1n/e+1次开始枚举,我们已经计算得到每一次能进行匹配的概率时n/etn/et,匹配产生的贡献的期望为OPTn\dfrac{\text{OPT}}{n},因此ALG=t=n/e+1nnetOPTn=OPTe(HnHn/e)\text{ALG}=\sum\limits_{t=n/e+1}^{n}\dfrac{n}{et}\cdot \dfrac{\text{OPT}}{n}=\dfrac{\text{OPT}}{e}(H_n-H_{n/e}),当nn\to\inftyHnHn/elnn/(n/e)=lne=1H_n-H_{n/e}\to \ln n/(n/e)=\ln e=1。因此ALGOPT1e\dfrac{\text{ALG}}{\text{OPT}}\to \dfrac{1}{e}

综上, 我们证明了Wait-and-Match算法在期望意义下有竞争比1e\dfrac{1}{e}。我们注意到,这和上一节分析选最大数时的算法在形式上几乎是完全相同的,都是先忽略最早到达的特定比例的候选人,接下来贪心地选取。

Max-weight Forests

下面考虑这样一个问题:对于一张无向图G=(V,E)G=(V,E),边有边权且非负,要求出它的最大生成森林。注意对于OPT\text{OPT}来说,最大生成森林就是最大生成树。现在考虑这个问题的secretary版本:边以随机顺序在线到达,我们需要在每条边到达时做出选或不选的决策。我们希望算法选出的最大生成森林尽量大。

对于这个问题,我们自然想要尝试使用和之前类似的算法:忽略前一小部分到达的边,接着对于每条边只要不成环就加入。可惜的是,可以证明这样的算法的竞争比不是常数(只需构造一个hat example,此处省略)。这意味着我们不得不尝试其它模式的算法。

我们提出下面这样一个算法,并证明这个算法有12e\dfrac{1}{2e}的竞争比。初始时,把1,2,,V1,2,\cdots,|V|打乱顺序形成一个随机的permutation π\pi,并把它们分配给每个节点。这样我们就形成了节点间的一个随机的序关系。接下来,对于每条到达的边(u,v)(u,v),我们把它看作一条有向边,它从序较小的点指向序较大的点。对于每个节点,我们只考虑入边而不考虑出边。因此对于每个节点,可以看作有若干条入边随机到达。我们的算法是:用之前选最大数的1/e1/e竞争比算法选出每个节点的恰好一条入边。为了做到这一点,我们可以采取“到达时间”的刻画,忽略时间[0,1/e][0,1/e]内到达的入边,接着选出第一条比之前所有边权值都大的边。

我们注意到,由于我们只在每个节点的入边中选择恰好选择一条,整张图上被选的边不可能形成环(这正是序关系的作用!),因此算法执行的结果一定是一个生成森林。并且,我们可以对算法结果给出如下分析:对于每个节点uu,无向图上一条与uu相连的边成为uu的入边的概率恰好应该是12\dfrac{1}{2},算法选到的边至少是最大边eue_u^*1e\dfrac{1}{e}(因为这是一个1/e1/e竞争比的算法!),因此ALG12euVeu\text{ALG}\geq\dfrac{1}{2e}\sum\limits_{u\in V}e_u^*。而显而易见的是,uVeuOPT\sum\limits_{u\in V}e_u^*\geq \text{OPT},这样我们就得到了ALG12eOPT\text{ALG}\geq \dfrac{1}{2e}\text{OPT}。所以这是一个12e\dfrac{1}{2e}竞争比的算法。

目前已知的这个问题的最优ratio是1/41/4,略大于1/2e1/2e

Matroid Secretary

我们可以把Max-weight Forests的问题推广到一般的拟阵(matroid)上。

拟阵是指这样一类代数结构:称有限集合MM能形成拟阵(M,I)(M,I),其中IIMM的幂集的一个子集(也即一族MM的子集的集合,II成为独立集),如果满足以下三个条件:(1) I\varnothing \in I;(2) AI\forall A \in IAA\forall A'\subseteq AAIA'\in I,也即独立集的任何一个子集都是独立集,这个性质称为向下封闭性(downward-closed property);(3) A,BI\forall A,B\in IA>B    |A|>|B|\implies xAB,B{x}I\exists x\in A\setminus B,B\cup\{x\}\in I,也即如果独立集AA比独立集BB大小更大,那么总可以从AA中挑出一个不属于BB的元素使得BB和这个元素拼成一个独立集。这个性质称为增广性(augmentation property)。

那么我们可以发现,以无向图的边集作为有限集合MM,所有能形成生成森林的MM的子集恰好形成了独立集集合II(M,I)(M,I)就构成了一个图拟阵(graphic matroid)。向下封闭性:一个生成森林的子集依然是一个森林;增广性:如果生成森林E1E_1比生成森林E2E_2边数更多,那么E1E_1中连通块数量更少,那么根据鸽巢原理至少存在E1E_1中的一个连通块横跨了E2E_2中的两个连通块,选取一条连接这两个连通块的边加入E2E_2依然会形成森林。

是否存在一个常数竞争比的Matroid-secretary算法仍是一个open problem。肯定这一事实的猜想就是所谓的Matroid Secretary Conjecture。

参考文献

https://en.wikipedia.org/wiki/Graphic_matroid

https://en.wikipedia.org/wiki/Matroid

Beyond the Worst-Case Analysis of Algorithms - Chapter 11 - Random-Order Models