DennyQi's Log

在线二分图匹配

在线二分图匹配(Online Bipartite Matching)

传统的二分图最大匹配问题是:给定二分图G=(AB,E)G=(A\cup B,E)(二分图意味着AA中的点两两没有边相连,BB中的点两两没有边相连),我们想要找到一个最大的EE的子集MM使得MM中的任意两条边都没有公共端点。传统二分图最大匹配问题可以转化为网络最大流问题,这本质上是因为二分图匹配可以写作线性规划。

现在考虑一个二分图最大匹配问题的在线版本:刚开始我们不知道GG的全貌,只找到左侧点集AA,不知道关于BBEE的任何信息。接下来,BB中的点一个一个到来。一个点bb到来时会相应给出这个点与AA中所有相连的边(ai,b)(a_i,b)。我们需要在每个点到来时就做出决策:是否选择(ai,b)(a_i,b)中的某条边加入匹配。一旦加入匹配就不能反悔。

贪心算法

显然,我们可以构造这样一个确定性的贪心方案:每当BB中一个点到来时,选择从上往下第一条能够匹配的边加入匹配。可以发现,这样匹配得到的结果一定是一个极大匹配,因为在这个匹配的基础上一定不可能还存在一条边使得它的两个端点都还没有被加入匹配(如果存在,不妨设为(ai,bj)(a_i,b_j),那么说明bjb_j在到来时是会加入匹配的但没有选择aia_i,这说明bjb_j一定已经被匹配,矛盾)。图的一个点覆盖是指一个点集,使得每条边至少有一个端点在这个点集里。这说明,贪心方案的匹配MM的顶点集合构成了一个大小为2M2M的点覆盖。我们注意到,任何一个点覆盖都至少需要大小为MM,因为要能让每条边都至少要有一个端点在集合中,至少要让匹配MM中的每条边在集合中。假设最大匹配是MoptM_{opt},它一定也是一个极大匹配,其顶点集合也是一个点覆盖,大小至少要为MM。也即2MoptM2M_{opt}\geq M。这意味着贪心算法至少有竞争比1/21/2

另一方面,对于确定性算法而言,1/21/2是tight的。考虑A=2,B=2|A|=2,|B|=2。当b1b_1到来时给出(a1,b1),(a2,b1)(a_1,b_1),(a_2,b_1)。此时如果算法选(a1,b1)(a_1,b_1),那么adversary可以给出b2b_2到来时的边是(a1,b2)(a_1,b_2);如果算法选(a2,b1)(a_2,b_1),那么adversary可以给出b2b_2到来时的边是(a2,b2)(a_2,b_2)。可见确定性算法始终只能给出最大匹配为11,而最大匹配实际上是22

所以,我们证明了存在竞争比为1/21/2的确定性算法,并且这是竞争比最大的确定性算法。

Ranking算法

下面我们要讨论一个在线二分图匹配的著名的随机算法,它的竞争比为11e1-\dfrac{1}{e}

Fractional Version

考虑二分图匹配的线性规划:maxeExes.t.vN(u)x(u,v)1,uAxe0,eE\max \sum\limits_{e\in E}x_e\\s.t. \quad \sum\limits_{v \in N(u)}x_{(u,v)}\leq 1,\forall u\in A\\x_e\geq 0,\forall e\in E。这里我们没有规定xex_e取整数,因此只可能放大结果。我们把这个问题称为二分图匹配的fractional version,也即我们可以选取分数条边加入匹配,只需保证每个节点处权重的总和不超过11即可。我们将会证明,在线的fractional version二分图匹配问题在竞争比上总能比任何原始的二分图匹配问题的在线的随机算法做得更好。因此这里我们首先将要证明在线的fractional version的竞争比可以达到11e1-\dfrac{1}{e}

对于fractional的在线二分图匹配,我们可以设计下面的Water Filling Algorithm:设初始时所有左侧节点aia_i的水位都为00。对于每个到来的节点bib_i,我们假设它拥有单位11的水流。设bib_iaj1,,ajka_{j_1},\cdots,a_{j_k}有边相连,bb会找到ajpa_{j_p}中水位最低的那些点,然后均匀向所有这些点灌注水流,直到它们与其它一些点水位相平,然后再让所有最低水位的点一起被均匀灌注水流,直到单位11的水流被用完,或者所有被灌注的点的水位都已经达到上限11。最终,输出左侧节点的水位之和作为答案。

我们来分析Water Filling Algorithm在fractional version问题下的竞争比。我们考虑二分图匹配的线性规划的的对偶规划,写为minvVyvs.t.yu+yv1,(u,v)Eyv0,vV\min \sum\limits_{v\in V}y_v\\s.t. \quad y_u+y_v\geq 1,\forall (u,v)\in E\\y_v\geq 0,\forall v\in V(原矩阵的第ii行恰好是节点ii的所有邻居为11,所以转置后第ii行恰好是第ii条边的端点为11)。我们来看这个对偶规划的含义。如果加上yv1,Vy_v\leq 1,\forall V的条件并规定yvy_v只能取整数,那么这正是二分图的最小点覆盖问题。原问题可以看作最小点覆盖问题的fractional version,放松添加的条件只会让结果更大。

现在我们打算在Water Filling Algorithm进行的过程中,维护一个相应的fractional version的最小点覆盖“算法”。我们假定有一个定义在[0,1][0,1]实数区间上的单调递增函数g(x)g(x),这里我们令g(x)=ex1g(x)=e^{x-1}并且暂时不解释原因。每当Water Filling Algorithm在边(a,b)(a,b)上注入一个水流微元Δ\Delta时,令最小点覆盖中的yay_a增加Δg(wa)\Delta \cdot g(w_a),其中waw_a是指点aa当前的水位,令yby_b增加Δ(1g(wa))\Delta \cdot (1-g(w_a))。由此可见,对偶规划的目标函数也相应增加了Δ\Delta,增量和原规划完全相同。这意味着当算法结束后,对偶规划也会得到同样大小的结果。然而,对偶规划中自变量的取值可能是不满足约束条件的。下面我们证明,如果把yu+yv1y_u+y_v\geq 1这一条件修改为yu+yv11ey_u+y_v\geq 1-\dfrac{1}{e},那么刚才的算法就一定满足约束条件。考虑Water Filling Algorithm注入某条边(a,b)(a,b)的整个过程(每条边只会被注入一次)。如果最终是因为aa到达了上限11而停止了注入,那么意味着整个算法结束时应当有ya=01g(x) dx=11ey_a=\displaystyle\int_{0}^{1}g(x)\text{ d}x=1-\dfrac{1}{e},因此ya+yb11ey_a+y_b\geq 1-\dfrac{1}{e};如果是bb用完了11的水量而停止注入,那么在注入结束后应当有ya=0wag(x) dx=ewa11ey_a=\displaystyle\int_{0}^{w_a}g(x)\text{ d}x=e^{w_a-1}-\dfrac{1}{e}yb1g(wa)y_b\geq 1-g(w_a)(这是因为bb始终在给水位低于waw_a的节点注水,而gg单调递增,意味着bb上的单位增量始终不超过1g(wa)1-g(w_a)),那么注入结束后就已经有ya+ybewa11e+1ewa1=11ey_a+y_b\geq e^{w_a-1}-\dfrac{1}{e}+1-e^{w_a-1}=1-\dfrac{1}{e}

由此可见,如果我们构造一个线性规划minvVyvs.t.yu+yv11e,(u,v)Eyv0,vV\min \sum\limits_{v\in V}y_v\\s.t. \quad y_u+y_v\geq 1-\dfrac{1}{e},\forall (u,v)\in E\\y_v\geq 0,\forall v\in V,它至少能得到一个与Water Filling Algorithm同样大小的结果。那么只需把每个yy都增大111e\dfrac{1}{1-\frac{1}{e}}倍,我们就能得到minvVyvs.t.yu+yv1,(u,v)Eyv0,vV\min \sum\limits_{v\in V}y_v\\s.t. \quad y_u+y_v\geq 1,\forall (u,v)\in E\\y_v\geq 0,\forall v\in V的一组解。换言之,对偶规划的最优解小于等于Water Filling Algorithm结果的111e\dfrac{1}{1-\frac{1}{e}}倍,而对偶规划大于等于原规划,也即fractional version的二分图匹配。综上所述,Water Filling与OPT的竞争比11e\geq 1-\dfrac{1}{e}