在线算法

问题概述

在线算法:信息一个一个给出,决策不可以逆转。

问题模型

对于online实例 I={σ1,,σn}I = \{\sigma_1, \dots, \sigma_n\},有算法输出 O={y1,,yn}O = \{y_1, \dots, y_n\}

竞争比:设AA是一个online算法,OPTOPT是最优的offline算法(提前知道了所有信息)。则对于最小化问题,如果存在一个常数 β\beta,对任意 II,满足A(I)cOPT(I)+βA(I) \leq c * OPT(I) + \beta,则称 cc 的下确界为竞争比。

对于online问题的研究可以考虑以下方面:

  • Semi Online:可以知道一部分信息,过去做的决策可以进行有限度的更改
  • Online with Advice:可以知道一部分信息
  • Online with Imperfect Information:有建议可以参考,但不保证是对的
    • 在信息相对准确时,接近离线算法,信息相对不准时,接近在线算法

问题示例

一维搜索(Search on a line):数轴上有一个点,从零点开始寻找(可能在左也可能在右)

  • 可以提供的信息:点的方向(竞争比为1),点的距离
  • 思路:来回走
  • 拓展:任何算法都不会小于最优解的9倍,对应的是二倍折返走

在线竞拍(Online Bidding):物品有一个不公开的整数的实际价值 u1u \ge 1,bidder可以猜测它的价值,猜价高于实际价值结束,花费的代价是所有报价之和

  • 作业里的one bit advice思路:价值是奇数位还是偶数位。竞争比是8/3

滑雪租鞋(Ski Rental):不知道以后会不会去,买(花费d)还是租(花费1)

  • 作业里的one bit advice思路:告诉我未来会不会滑雪d次。

页表管理: 页表替换策略

k-server问题: 在一张图上有k个服务员,当一个点出现请求就要派一个服务员去服务,求一个方案,使得所有服务员走的总距离最小。

Online Scheduling and Load Balancing

任务分配: 有若干任务依次到来,每个任务有一个DDL,选取部分任务做使得做的最多

装箱问题: 我们前面介绍过的FF、NF等面对的装箱都是online装箱。

研究方向

  • Positive Result:设计一个在竞争比上比较好的算法
  • Negative Result:构造bad example,说明没有online算法能做的更好了
  • Best Possible/Optimal Online算法:Matched bounds

k-server Problem

k-server问题: 在一张图上有k个服务员,当一个点出现请求就要派一个服务员去服务,求一个方案,使得所有服务员走的总距离最小。

  • 贪心:来了一个请求后谁近谁去,显然可以构造一个竞争比为无限的例子:

    • 如图所示,如果请求是A, B, C, A, C, A, C, A, C…,竞争比无限

      1
  • 离线算法:动态规划;或者可以用费用流,O(kn2)O(kn^{2})

竞争比下界

定理:kk个server的情况下,如果至少有k+1k+1个点,那么竞争比的下界至少为kk

证明: 构造bad example,假设有kk个server,k+1k+1个点的完全图,所有边权为1。对于在线算法,每次都在没有server的那个点发出请求,则每次都要花费1去移动。而离线算法可以k个请求一组,每k个请求最多只需要移动一次。所以竞争比下界为kk

边权任意正数 :考虑k+1个点的图,构造k个每一步的configuration都互不相同,且也与在线算法不同的离线算法,每一步的费用之和跟在线做法花费相同,那么平均意义下花费为n/k,因此最优解肯定不会更大。

DC算法

DC算法(针对on the line的题目):如果请求点在服务员的凸包外,那么派最近的过去,如果请求点在两个服务员之间,那么两个服务员都要向请求点移动,直到有一个服务员到达。

竞争比分析

定理:DC算法的竞争比为kk

证明:由上面的内容我们已经知道kk是在线算法的竞争比下界,因此只需要证明上界也是kk。均摊分析证明。

  • Interleaving Moves: OPT和DC两个决策依次进行,比较两个决策之间的差距。如果定义势能函数Φ0\Phi \ge 0,初始值 Φ0\Phi_0。如果OPT移动dd,则Φ\Phi最多增加kdkd;如果DC移动dd,则Φ\Phi减少至少dd。这样 ΦnΦ0kOPT(σ)DC(σ)\Phi_n-\Phi_0 \le k*OPT(\sigma) - DC(\sigma)
  • 势能函数: 定义MminM_{min}表示OPT决策和DC决策的kk个服务员之间的最小权完美匹配代价。定义sis_i 为DC算法的服务员ii=i<jd(si,sj)\sum = \sum_{i < j}d(s_{i}, s_{j}) 表示DC决策中的所有服务员之间的距离之和,定义势能函数 Φ=kMmin+>0\Phi=k*M_{min}+\sum >0 。则势能函数满足以下两条性质:
    • 如果OPT决策移动了距离dd,那么Φ\Phi至多增加kdkdMminM_{min}至多增加dd\sum不变
    • 如果DC决策移动了距离dd,那么Φ\Phi至少减小了dd
      • 如果服务点在凸包之外,那么只会移动一个点,MminM_{min}减小dd\sum增加(k1)d(k-1)dΦ=kMmin+\Phi=kM_{min}+\sum减小了dd
      • 如果服务点在凸包内,有两个点同时向它移动,\sum减小2d2d,两个点到左右的距离之和变化抵消,MminM_{min}不会增加,考虑匹配点间连边不会增加相交,那么MminM_{min}可能是一个增加dd一个减小dd,或者是两个都减小dd,代入Φ=kMmin+\Phi=kM_{min}+\sum至少减小了2d2d

拓展

树上K-Server问题的DC算法:

  • 定义服务点的邻居为到该点路径上没有其他服务员的所有服务员,树上DC就是所有的邻居都要动
  • 也是一个k-competitive,势能函数定义相同

一般图上的K-server问题:动态规划,在在线情况下可以保证2k12k-1的竞争比