在线二分图匹配(Online Bipartite Matching)
传统的二分图最大匹配问题是:给定二分图G=(A∪B,E)(二分图意味着A中的点两两没有边相连,B中的点两两没有边相连),我们想要找到一个最大的E的子集M使得M中的任意两条边都没有公共端点。传统二分图最大匹配问题可以转化为网络最大流问题,这本质上是因为二分图匹配可以写作线性规划。
现在考虑一个二分图最大匹配问题的在线版本:刚开始我们不知道G的全貌,只找到左侧点集A,不知道关于B和E的任何信息。接下来,B中的点一个一个到来。一个点b到来时会相应给出这个点与A中所有相连的边(ai,b)。我们需要在每个点到来时就做出决策:是否选择(ai,b)中的某条边加入匹配。一旦加入匹配就不能反悔。
贪心算法
显然,我们可以构造这样一个确定性的贪心方案:每当B中一个点到来时,选择从上往下第一条能够匹配的边加入匹配。可以发现,这样匹配得到的结果一定是一个极大匹配,因为在这个匹配的基础上一定不可能还存在一条边使得它的两个端点都还没有被加入匹配(如果存在,不妨设为(ai,bj),那么说明bj在到来时是会加入匹配的但没有选择ai,这说明bj一定已经被匹配,矛盾)。图的一个点覆盖是指一个点集,使得每条边至少有一个端点在这个点集里。这说明,贪心方案的匹配M的顶点集合构成了一个大小为2M的点覆盖。我们注意到,任何一个点覆盖都至少需要大小为M,因为要能让每条边都至少要有一个端点在集合中,至少要让匹配M中的每条边在集合中。假设最大匹配是Mopt,它一定也是一个极大匹配,其顶点集合也是一个点覆盖,大小至少要为M。也即2Mopt≥M。这意味着贪心算法至少有竞争比1/2。
另一方面,对于确定性算法而言,1/2是tight的。考虑∣A∣=2,∣B∣=2。当b1到来时给出(a1,b1),(a2,b1)。此时如果算法选(a1,b1),那么adversary可以给出b2到来时的边是(a1,b2);如果算法选(a2,b1),那么adversary可以给出b2到来时的边是(a2,b2)。可见确定性算法始终只能给出最大匹配为1,而最大匹配实际上是2。
所以,我们证明了存在竞争比为1/2的确定性算法,并且这是竞争比最大的确定性算法。
Ranking算法
下面我们要讨论一个在线二分图匹配的著名的随机算法,它的竞争比为1−e1。
Fractional Version
考虑二分图匹配的线性规划:maxe∈E∑xes.t.v∈N(u)∑x(u,v)≤1,∀u∈Axe≥0,∀e∈E。这里我们没有规定xe取整数,因此只可能放大结果。我们把这个问题称为二分图匹配的fractional version,也即我们可以选取分数条边加入匹配,只需保证每个节点处权重的总和不超过1即可。我们将会证明,在线的fractional version二分图匹配问题在竞争比上总能比任何原始的二分图匹配问题的在线的随机算法做得更好。因此这里我们首先将要证明在线的fractional version的竞争比可以达到1−e1。
对于fractional的在线二分图匹配,我们可以设计下面的Water Filling Algorithm:设初始时所有左侧节点ai的水位都为0。对于每个到来的节点bi,我们假设它拥有单位1的水流。设bi与aj1,⋯,ajk有边相连,b会找到ajp中水位最低的那些点,然后均匀向所有这些点灌注水流,直到它们与其它一些点水位相平,然后再让所有最低水位的点一起被均匀灌注水流,直到单位1的水流被用完,或者所有被灌注的点的水位都已经达到上限1。最终,输出左侧节点的水位之和作为答案。
我们来分析Water Filling Algorithm在fractional version问题下的竞争比。我们考虑二分图匹配的线性规划的的对偶规划,写为minv∈V∑yvs.t.yu+yv≥1,∀(u,v)∈Eyv≥0,∀v∈V(原矩阵的第i行恰好是节点i的所有邻居为1,所以转置后第i行恰好是第i条边的端点为1)。我们来看这个对偶规划的含义。如果加上yv≤1,∀V的条件并规定yv只能取整数,那么这正是二分图的最小点覆盖问题。原问题可以看作最小点覆盖问题的fractional version,放松添加的条件只会让结果更大。
现在我们打算在Water Filling Algorithm进行的过程中,维护一个相应的fractional version的最小点覆盖“算法”。我们假定有一个定义在[0,1]实数区间上的单调递增函数g(x),这里我们令g(x)=ex−1并且暂时不解释原因。每当Water Filling Algorithm在边(a,b)上注入一个水流微元Δ时,令最小点覆盖中的ya增加Δ⋅g(wa),其中wa是指点a当前的水位,令yb增加Δ⋅(1−g(wa))。由此可见,对偶规划的目标函数也相应增加了Δ,增量和原规划完全相同。这意味着当算法结束后,对偶规划也会得到同样大小的结果。然而,对偶规划中自变量的取值可能是不满足约束条件的。下面我们证明,如果把yu+yv≥1这一条件修改为yu+yv≥1−e1,那么刚才的算法就一定满足约束条件。考虑Water Filling Algorithm注入某条边(a,b)的整个过程(每条边只会被注入一次)。如果最终是因为a到达了上限1而停止了注入,那么意味着整个算法结束时应当有ya=∫01g(x) dx=1−e1,因此ya+yb≥1−e1;如果是b用完了1的水量而停止注入,那么在注入结束后应当有ya=∫0wag(x) dx=ewa−1−e1,yb≥1−g(wa)(这是因为b始终在给水位低于wa的节点注水,而g单调递增,意味着b上的单位增量始终不超过1−g(wa)),那么注入结束后就已经有ya+yb≥ewa−1−e1+1−ewa−1=1−e1。
由此可见,如果我们构造一个线性规划minv∈V∑yvs.t.yu+yv≥1−e1,∀(u,v)∈Eyv≥0,∀v∈V,它至少能得到一个与Water Filling Algorithm同样大小的结果。那么只需把每个y都增大1−e11倍,我们就能得到minv∈V∑yvs.t.yu+yv≥1,∀(u,v)∈Eyv≥0,∀v∈V的一组解。换言之,对偶规划的最优解小于等于Water Filling Algorithm结果的1−e11倍,而对偶规划大于等于原规划,也即fractional version的二分图匹配。综上所述,Water Filling与OPT的竞争比≥1−e1。