讲义 HTML(Online-Scheduling.html)第 1–187 页,第 15–20 页并入第 14 页的交互演示(slides 无页脚页码)

前三讲的在线问题都是”服务请求、付移动或缺页代价”。本讲换一类问题:在线调度。jobs 逐个到来,要立刻(或在合适的时刻)把它们分到机器上,目标是让最后完工的时间(makespan)尽量早。这也是负载均衡的模型:jobs 是任务,machines 是服务器。

全讲围绕两个下界展开:OPT 不能太小,因为工作量要摊到所有机器上(效率界);同时大 job 不能太多,因为两个大 job 落在同一台机器上就会撞破 OPT(组合界)。几乎所有上界证明都是”假设 ALG 很大,推出这两个界之一被违反”。

部分模型核心结论
1. 基本问题与 Greedy列表到达 + 相同机器Greedy 是 -competitive; 时最优
2. 打破 2:避免平坦同上MR 算法 ;关键是不让所有机器一样高
3. 一般模型与技巧—机器类型 / 到达方式 / 目标;效率界、组合界、doubling、分层
4. 实时到达实时到达 + 相同机器在线 LPT 是 -competitive; 下界
5. 相关机器列表到达 + 速度不同改进的 Greedy 是 ;slow fit + doubling 是
6. 不相关机器列表到达 + 任意 下界 ;指数势函数达到

1. 基本问题与 Greedy

1.1 在线 makespan 最小化

定义:Makespan 最小化(负载均衡)

  • 输入: 台相同的机器, 个 job,job 的大小(处理时间)为 。
  • 输出:把每个 job 分给一台机器,最小化 makespan,即所有 job 的最大完工时间。机器 的负载 是分给它的 job 大小之和,makespan 。
  • 在线(列表到达,list arrival):job 逐个到来,每来一个必须立即且不可撤销地选定机器,然后才看到下一个。

离线版本已是 NP-hard( 时就包含 Partition),但有好的近似:LPT(Longest Processing Time first)先把 job 按大小降序排列,再依次放到当前负载最小的机器上,是 -近似。在线时无法排序,只能按到达顺序处理。

1.2 Greedy 是 -competitive

定义:Greedy(List Scheduling,Graham 1966)

每来一个 job,放到当前负载最小的机器上。

两个关于 OPT 的下界贯穿全讲:

  • 效率界:(总工作量摊到 台机器上)。
  • 单个 job:。

定理:Greedy 是 -competitive(Graham 1966)

证明

设决定 makespan 的机器上最后放入的 job 为 (之后到达的 job 不影响这台机器,可以删掉,不妨设它就是最后一个 job),它的开始位置为 ,即放入前该机器的负载,于是 。Greedy 选的是负载最小的机器,所以放入 时每台机器的负载都 。由效率界, 所以 ,即 。

粗略版本是 、,所以 。后面 LPT 和相关机器的分析都沿用这个框架:盯住”最后一个 job”,分别估计它的开始时间和它本身的大小。

分析是紧的:先来 个大小为 的 job,Greedy 把每台机器都堆到 ;再来一个大小为 的 job,。OPT 把小 job 平均放在 台机器上(每台 ),大 job 单独占一台,。比值 。

1.3 时 Greedy 最优

定理: 时任何确定性在线算法的竞争比

证明

先来两个大小为 的 job。确定性算法只有两种做法:

flowchart TD
  S["两个大小为 1 的 job"] --> A["放在同一台机器"]
  S --> B["各放一台"]
  A --> A1["停止:ALG = 2,OPT = 1,比值 2"]
  B --> B1["再来一个大小为 2 的 job:ALG ≥ 3,OPT = 2,比值 3/2"]

两种情况下比值都 。

所以 时 是最优竞争比。 很大时,能不能明显好于 ?

2. 打破 2:避免”平坦”的调度

2.1 已知结果

确定性算法,一般 :上下界目前是 。

年份作者结果类型
1966Graham; 时最优上界
1993Galambos, Woeginger,上界
1995Bartal et al.上界
1996Karger et al.上界
1999Albers上界
2000Fleischer, Wahl()上界
2001Rudin III()下界

随机算法:一般 时为 (下界 Sgall 1997,上界 Albers 2002)。

所有突破 的算法都基于同一个想法:避免平坦的调度。

2.2 为什么”平坦”危险

回看 Greedy 的紧例子:坏就坏在大 job 到来时所有机器一样高(都是 ),它放在哪里都会叠在高处。如果有几台机器保持很低,大 job 就可以放在低处,而不必叠到 之上。

所以来一个小 job 时有两种选择:

  • Greedy:放在最低的机器上,当前代价小;
  • Steep(陡峭):放在一台较高的机器上,故意保持一些机器很低,为将来的大 job 留位置。

决策规则大致是:

  • 调度已经足够陡峭 → 不必再刻意保持,按 Greedy 放;
  • 调度已经危险(再往高处放会超过目标比值)→ 按 Greedy 放;
  • 其余情况 → 让调度更陡峭。

2.3 MR 算法

定义:MR 算法(Fleischer & Wahl, ESA 2000)

把机器按当前负载升序排列,机器 负载最小。前 台为 Light,其余为 Heavy。参数 ,,。新 job 到来时:

  • 已经陡峭: → Greedy,放在机器 ;
  • 已经危险: → Greedy,放在机器 ;
  • 否则 → 放在机器 (最低的 Heavy 机器),使调度变陡。

其中 表示一组机器的平均负载。

放在 而不是更高的机器,是因为它在 Heavy 中最低,代价最小;Light 机器则一直留着给大 job。条件”危险”保证这种刻意的不平衡不会直接把 makespan 推过 倍。

2.4 分析(只给框架)

完整证明很长,讲义只给思路。设存在最小反例:。设最后一个 job 决定了 makespan,开始位置为 ,于是 。

第一步: 是按 Greedy 放的。若它放在机器 ,说明不危险:,与 矛盾。所以它放在负载最小的机器 上,,此时所有机器的负载都 (称为都”满”了)。

再记两个简单事实:由 和 得 ;由效率界 。

第二步: 到来时调度一定是平坦的,即 。否则 。机器 的负载都 ,其余机器 ,由效率界

矛盾。这就是参数 的作用:陡峭的调度”浪费”了足够多的工作量,最后不可能还是坏情况。

第三步:找 个大 job。称 job 为大的,若 ()。若有 个大 job,必有两个落在 OPT 的同一台机器上,,于是 ,矛盾。

  • 是大的:。
  • 另外 个:每台机器最终都满了(负载 )。把一台机器”变满”的那个 job 称为 filling job,每台机器一个,共 个。要证明所有 filling job 都是大的。

第四步:filling job 为什么大(只有直觉)。以最后一个 filling job 为例:

  • 若 到来前调度平坦:MR 会把它放到 ,除非危险;它能填满某台机器,需要 ,即 。若 已经很小,填满它需要大 job;若 很大,则平均负载大, 也必须大。
  • 若调度陡峭:最终调度是平坦的(第二步),从陡峭变到平坦需要足够多的工作量,而这时 保证很小,填满它的 job 必须大。

其余 filling job 的论证类似,但细节繁琐,略去。

3. 一般模型与技巧

3.1 模型的维度

机器不一定相同,job 也不一定一到就要决定:

维度选项含义
机器Identical所有机器相同,job 处理时间
Related机器 有速度 ,处理时间
Unrelated每个(机器, job)对有自己的处理时间
到达List arrivaljob 逐个到来,立即决定
Real-time arrivaljob 在释放时间 出现,算法在任意时刻可以在空闲机器上开始一个 job
目标Makespan
总完工时间
总流时间

模型太多,本讲只讲 makespan,按以下顺序:

flowchart LR
  A["列表到达 + 相同机器<br/>Greedy 2−1/m,MR 1.92"] --> B["实时到达 + 相同机器<br/>在线 LPT 1.5"]
  A --> C["列表到达 + 相关机器<br/>Θ(log m) → 常数 8"]
  C --> D["列表到达 + 不相关机器<br/>Θ(log m)"]

3.2 常用技巧

  • OPT 的下界
    • 效率界:工作量不能太多, 总工作量 / 总处理能力。
    • 组合界:大 job 不能太多,两个 的 job 不能同机。
  • Doubling:先假设知道 OPT 的值设计算法,再用猜测并翻倍去掉这个假设(Lecture 1 线搜索的翻倍思想)。
  • Grouping / 分层:把 job、机器或负载按量级分成若干层,每层损失一个常数,层数是 。

4. 实时到达 + 相同机器

4.1 模型

定义:实时到达的在线 makespan 最小化

  • 台相同的机器;job 有大小 和释放时间 。
  • 在时刻 算法才知道 job (及其大小); 的 job 尚不可见。
  • 任何时刻都可以在一台空闲机器上开始一个已释放的 job(不可中断)。
  • OPT 事先知道所有 job 的大小和释放时间,但同样不能在 之前开始 job 。

与列表到达的区别:决定的是何时开始、在哪开始,不必在 job 到达时立刻承诺。算法可以让 job 排队等待。

4.2 Greedy 与在线 LPT

Greedy(job 一到就放到当前最闲的机器上)仍然是 -competitive,原证明照搬;紧例子也照搬(所有 job 在时刻 按列表顺序释放)。

但实时模型允许等待:job 在 到来,若等到某台机器空闲的时刻 再决定,期间 可能又来了更长的 job,先做长的更好。这就是 LPT 的在线版本。

定义:在线 LPT

每当一台机器在时刻 空闲且有待处理的 job,就在它上面开始当前最长的待处理 job。

在线 LPT 不会在有待处理 job 时让机器闲着,只是把”选哪个 job”推迟到机器空闲时。它化解了 Greedy 的紧例子:

  • 若大 job 也在时刻 释放,LPT 先做它,正好是 OPT。
  • 若对手推迟大 job(如 ),OPT 也只能从 起做它,;而 LPT 在时刻 就能开始它,,比值趋于 。

定理:在线 LPT 对所有 都是 -competitive(Chen & Vestjens 1997)

4.3 证明框架

设 job 在 ALG 中最后完工,开始时刻为 ,。反设 。

照搬 Greedy 的框架会得到"",但这在实时模型中可能是错的: 之前机器可能有空闲(job 还没释放),工作量不足以推出 。先假设没有空闲,看证明的主干;再处理空闲。

引理 1:最后的 job 等了超过

证明

(OPT 也要在 之后做完 ),而 ,两式相减。

在 内一直待处理,LPT 却没开始它,所以这段时间所有机器都忙。忙的是什么 job?

引理 2: 个"拦路"的 job

每台机器 上都有一个 job ,满足以下之一:

  • (a) 在 内开始:则 ;
  • (b) 机器 在 内没有开始任何 job:则有一个 job 贯穿整个 ,。

证明

(a) 开始 时 已释放且在等待,LPT 选最长的,所以 。(b) 机器一直忙又没有新开始的 job,只能是同一个 job 从 之前一直做到 之后。不同机器上的 互不相同。

情形 A:。 个 都 ((a) 型 ,(b) 型由引理 1),加上 共 个大于 的 job。由鸽巢原理,OPT 中有两个在同一台机器上,这台机器的负载 ,矛盾。

情形 B:。若 ,则 ,矛盾。但如上所说, 不一定成立,需要处理空闲。

4.4 处理空闲:情形 B 的严格证明

令 为 之前最后一个空闲区间的结束时刻(某台机器空闲的最后时刻;若从未空闲则 )。于是 内所有机器都忙。

基本事实(F):LPT 只在没有待处理 job 时才让机器空闲,所以 之前释放的 job 在 时都已开始(忽略端点情形)。特别地 。

情形 B 的证明分成两个断言,分别改进""和"",两者相加正好是 :

断言 A:

断言 B:

于是 ,矛盾。定理得证。

断言 A 的证明

设 为在 之前开始、在 时仍在运行的 job(跨过 的 job)。 之前一刻有一台机器空闲,所以 。对 ,记它在 ALG 中的延迟 ( 为开始时刻),( 为空时 ),对应的 job 称为”最受延迟的 job”。

(i) 。ALG 在 内做了 的工作,来自两类 job:

  • 之后开始的 job:由 (F),它们在 之后才释放,OPT 也必须在 之后做;
  • :OPT 最早从 开始做它, 之前至多做 ,所以 之后至少还要做 而 不小于 ALG 在 内对 做的工作。

所以 OPT 在 之后的工作量 ,摊到 台机器上:。

(ii) 。最受延迟的 job 在 内一直等待,这段时间所有机器都忙,ALG 做了 的工作;这段时间在 之前,与 不相交。总工作量 ,由效率界得到 (ii)。

两式相加:。

断言 A 的意思是:空闲会让 超过 OPT,但超出部分至多是 。直观上, 前的空闲说明 OPT 在 之前也”没多少事可做”,而 之后 ALG 一直忙;唯一能让 OPT 提前做掉的,是那些在 ALG 中被延迟、跨过 的 job,而延迟本身又意味着 之前有一段全忙的时间。两种情况此消彼长,取平均得到 。

断言 B 的证明

反设 。引理 2 的 个 job 加上 ,每个都 :(a) 型 ;(b) 型 。OPT 中必有两个在同一台机器上,设先做 后做 ,于是 。

  • 若 :,矛盾。
  • 若 : 和 (a) 型 job 都在 之后开始,由 (F) 它们在 之后释放,所以 是 (b) 型:在 之前开始,贯穿 , 且 。另一方面 ( 是 、(a) 型,或 的 (b) 型)。于是 等待了超过 ,所以 内所有机器都忙; 内也都忙,长度 (引理 1)。两段不相交(),ALG 的总工作量 ,与效率界矛盾。

Remark

讲义第 73 页由 、、 推出的应是 (两式相减),页面上写成了""。后续”两块忙碌区域各 → 矛盾”用的正是""。讲义还引入了 (最后一个空闲区间的开始)来说明 ;上面的证明只需要 ,所以省去了。

4.5 下界: 时不能好于

先试老办法。时刻 来两个大小为 的 job,想说”算法只有两种选择”。但实时模型下这不成立:算法还可以等待(选择 C)。若在等待期间对手放出一个大小为 的 job,算法就先做它,对手占不到便宜;若对手一直不放,等待本身又增加了 ALG 的代价。对手必须根据算法何时开始来出招,需要一个带参数的构造。

新构造(参数 待定,目标是证明竞争比 ):

  1. 时刻 释放 。设 ALG 在时刻 开始它。若 ,不再释放任何 job,,,完成。下面设 。
  2. 时刻 释放 。设 ALG 在时刻 开始 。令 。

情形 1:( 开始得早)。在时刻 释放 。

  • OPT:一台机器做 再做 ,在 完工;另一台从 起做 ,同样在 完工。。
  • ALG:时刻 两台机器都在忙( 做到 , 做到 ), 至早在 开始:

情形 2:( 开始得晚)。在时刻 (此时 ALG 还没开始 )释放 。

  • OPT:一台机器从 做 ;另一台从 做 再做 ,在 完工。需要 的释放时刻 ,即 ;取下面的 时 ,成立。所以 。
  • ALG:时刻 时 都未开始, 占着一台机器到 。要么 都放在另一台机器,完工 ;要么其中一个排在 之后,完工 。所以

选 :让情形 2 的比值也等于 : 所有 job 大小必须为正( 需要 ,即 ),只能取 。此时 ,并且情形 2 中 恰好等价于 ,与第 1 步一致。

图中,蓝线是 ALG 早开始 时被迫的比值,橙线是晚开始时的比值。ALG 可以选择落在哪种情形,所以对手能保证的是两者中较小的那个;它在两线交点处最大。

定理:实时到达、 时,任何确定性在线算法的竞争比

4.6 更多结果

  • 任何确定性在线算法, 时竞争比 (Chen & Vestjens 1996)。
  • 时,SLEEPY 算法达到 ,与下界匹配(Noga & Seiden 1999)。
  • 公开问题:一般 时能否击败在线 LPT 的 (讲者称是进行中的项目)。

5. 列表到达 + 相关机器

5.1 模型与已知结果

回到列表到达(立即且不可撤销地分配)。机器 有速度 ,job 在其上的处理时间为 。机器按速度降序编号:。

类型区间代表结果
确定性上界 (Aspnes et al. 1993)、(Berman et al. 2000);下界 (Ebenlendr & Sgall 2012)
随机上界 (Berman et al. 2000);下界 (Epstein & Sgall 2000)

单 job 下界变为:(放在最快的机器上也要这么久)。效率界变为:。

5.2 Greedy 不再好用

“放到当前负载最小的机器”忽略了速度。,,来一个大小为 的 job:两台机器负载都是 ,Greedy 可能把它放到慢机器上,,而 。

定义:改进的 Greedy(看完工后的负载)

把 job 放到使 最小的机器 上, 为机器 当前的负载(总处理时间)。

它解决了上面的例子。它有多好?

5.3 改进的 Greedy 是 -competitive

从最后时刻出发。设 makespan 由机器 决定, 是放到 上的最后一个 job,于是 。Greedy 没有把 放到机器 ,所以

对最快的机器,,所以 。对较慢的机器只能得到 ,速度越慢下界越差。

若所有机器的负载都接近 ALG,效率界就会给出矛盾。问题是:要有多少台机器负载接近 ALG?

  • 若只知道快机器的负载大,而 的机器只有 台:即使这些机器的负载都 ,总量也只有 ,OPT 可以把工作分给所有 台机器,没有矛盾。所以必须对大部分处理能力都给出负载下界。
  • 想要的图景是:速度每减半,负载下界只损失一个常数倍的 OPT。速度跨越 到 共 个量级,总损失 。

引理 1:速度减半,负载下界只损失

若所有 的机器都满足 ,则所有 的机器都满足 。

证明

不妨设 (否则结论平凡)。令 。考虑 ALG 放在 中机器上、并且完工位置高于 的 job。在每台 上,它们覆盖了负载区间 ,长度 ,所以总大小 。对 求和,这些 job 的总大小 ,而 OPT 在 上至多能处理 。所以其中某个 job 被 OPT 放在了 之外、速度 的机器上,于是 。

对任何 的机器 ,。ALG 放 时选了 中的某台 而不是 ,所以 即 。

引理 2:对所有 ,

证明

起点:所有 的机器满足 (上面”最后时刻”的论证)。用引理 1 把 依次取 ,每次损失 ,经过 次覆盖所有 的机器。

定理:改进的 Greedy 是 -competitive

证明

设 。若 ,由引理 2, 中每台机器的负载都 ,所以 job 总大小 。

另一方面,OPT 的总处理能力为 其中慢机器()至多 台,总速度 ,而 本身就在 中。OPT 处理不完所有 job,矛盾。所以 。

5.4 分析是紧的

能否真的构造出”速度每减半,负载就减少一个常数”的局面?构造 层机器:

  • 第 层有 台速度 的机器,,并让每层的总速度等于比它快的所有层的总速度之和:。于是 , 时 ,即 ,,,。
  • 第 层对应 个大小为 的 job,每个在本层机器上恰好用时 ,所以 。
  • 到达顺序:最小的(第 层的)job 先来,第 层的 job 最后来。

ALG 的表现(平局时偏向快机器,也可以对 job 大小做微小扰动来消除平局):

  • 第 层的 job 先到。放在更快的机器上完工更早,于是它们把第 层的机器都填到负载 。它们的总大小 恰好等于这些机器的总速度,正好填满。
  • 第 层的 job 到来:放在本层机器上完工于 ;放在第 层的机器上,完工也不超过 。于是它们把这些机器填到负载 。
  • 依此类推,每一批 job 把所有更快的机器再抬高 。第 层的 job 处理完后,机器 的负载为 。

所以 ,而 。问题出在 Greedy 太快地使用快机器:快机器被小 job 占满,真正需要它的大 job 来了却没有位置。

5.5 Slow fit:知道 OPT 时 2-competitive

能达到常数吗?平衡在于:

  • 太快:把太多 job 放在最快的机器上(上面的坏例子);
  • 太慢:把太大的 job 放在慢机器上(5.2 的坏例子)。

需要定义”合理的慢”。先假设知道 OPT 的值。

定义:Slow fit

称机器 对 job 可行,若 。把 放到最慢的可行机器上(速度相同时取编号最大的)。

只要每次都有可行机器,所有负载就 ,slow fit 是 -competitive。因为 ,只需证明最快的机器始终满足 ,它就始终可行。

引理:slow fit 运行中始终有

证明

反设某时刻 。对 归纳证明此刻 都 ,到 时得到矛盾。

设 。ALG 放在机器 上的 job 总大小 ,而 OPT 在这些机器上至多处理 。所以其中某个 job (ALG 放在某台 上)被 OPT 放在了某台 上,于是 slow fit 选的是最慢的可行机器,却选了比 快的 ,说明当时机器 不可行:,所以 。

当 时,所有机器的负载都 ,job 总大小 ,OPT 无法完成,矛盾。

5.6 不知道 OPT:Doubling

定义:Slow fit + doubling

  • 初始猜测 ()。
  • 第 阶段:以 代替 OPT 运行 slow fit,可行性只计算本阶段放入的 job 的负载:。
  • 若某个 job 找不到可行机器,令 ,开始新阶段(负载计数清零,该 job 在新阶段重新放)。

定理:slow fit + doubling 是 -competitive(Aspnes et al. 1993)

证明

上面引理的证明只用到”所有 job 能在 时间内完成”,所以只要猜测 ,该阶段就不会失败。设最后阶段为 :若 ,第 阶段失败说明 ,所以 ;若 ,。

第 阶段给每台机器增加的负载 ,所以

这与 Lecture 1 线搜索的翻倍一样:几何级数的和被最后一项控制,代价只多一个常数倍。

6. 列表到达 + 不相关机器

6.1 模型

定义:不相关机器

job 在机器 上的处理时间 任意(可以是 ),,目标仍是 。

两个典型特例:

  • 相关机器:。
  • 受限机器(restricted assignment):,每个 job 只能放在部分机器上。更特殊的是 one-infinity:,即单位 job 加上可用机器的限制。

即使是 one-infinity 也已经很难:竞争比必须是 。

6.2 下界

构造:每轮淘汰一半机器

设 为 的幂。第 轮开始时有 台”存活”机器,来 个单位 job,每个都可以放在任意一台存活机器上。ALG 分配完后,对手淘汰一半存活机器,保留总负载较大的一半。共进行 轮。

OPT :每一轮的 个 job 恰好放到这一轮被淘汰的 台机器上,每台一个。被淘汰的机器以后不再可用,所以不会冲突。

ALG 很大:设一轮开始前存活机器的平均负载为 ,这一轮后总负载为 。保留的一半总负载至少是一半:

轮后只剩一台机器,负载 。

定理:one-infinity 情形下,任何确定性在线算法的竞争比

随机算法也一样:由 Yao 原理,改为每轮淘汰均匀随机的一半存活机器。对任何确定性算法,随机一半的总负载期望恰好是一半,;而每个输入上都有 。所以 ,随机算法也是 。

6.3 受限机器:Greedy 达到

定义:Greedy(受限机器)

把 job 放到当前负载最小的可行机器()上。

下面对 one-infinity 证明(单位 job,OPT 为整数)。

分层:把负载按 OPT 切成层,第 层是高度 的部分,每台机器每层至多放 个 job。记

  • :第 层的 job 数;
  • :第 层之上的 job 数,, 是 job 总数。

引理: ,因此

证明

取一个在第 层之上的 job,它在 ALG 中放入前所在机器的负载 ;Greedy 选的是可行机器中负载最小的,所以当时它的所有可行机器负载都 ,第 层都已放满 个 job。特别地,OPT 给它安排的机器第 层是满的。

OPT 的每台机器至多承接 个 job,所以这 个 job 在 OPT 中至少分布在 台不同的机器上,每台在 ALG 中第 层都有 个 job。所以 ,从而 。

定理:Greedy 对受限机器是 -competitive

证明

若 ALG 超过 ,则 ;由引理的论证,第 层有一台机器是满的,。而 ,所以 ,即 。所以 。

与 6.2 的下界一起,受限机器的竞争比是 (Azar, Naor & Rom 1992)。

6.4 一般不相关机器:Greedy 很差

“放到完工后负载最小的机器”在一般情形下只有 :

  • job :,。Greedy 放到机器 (负载 )。
  • job :,。放到机器 会到 ,Greedy 放到机器 (负载 )。
  • job :,。机器 已有负载 ,Greedy 放到空的机器 (负载 )。

最终机器 负载为 ,而 OPT 把 job 放在机器 上,。竞争比 。

问题在于 Greedy 只顾平衡,不顾”这台机器是否适合这个 job”:每个 job 都放在了比最合适的机器慢得多的机器上,不断累积。

6.5 指数势函数算法

两种贪心各有道理:

  • Greedy 1:完工后负载平衡(只看 );
  • Greedy 2:选最合适的机器(只看 最小)。

负载接近时应偏向第二条,负载差距大时应偏向第一条。用指数势函数统一二者。归一化使 (OPT 未知时用 doubling)。

定义:指数势函数算法(Aspnes et al. 1993)

取 ,机器 的势为 。job 到来时,选使势能增量 最小的机器, 为放入 job 前的负载。

是两项之积: 惩罚已经很高的机器, 惩罚不合适的机器。若改用线性势函数 ,增量就是 ,退化为 Greedy 2。

定理:取 ,

证明

记 为算法给 job 选的机器, 为 OPT 选的机器, 为最终势能。

总增量:按机器分组望远镜求和,

用 OPT 的选择控制每个增量:算法选的是增量最小的机器,负载又只增不减,所以 对 求和,按 OPT 的机器分组:

用 OPT :OPT 的每台机器上 ,每个 。由凸性, 时 (弦在凸函数上方),所以内层和 。于是 取 :,即 。每台机器 ,所以 。还原到原来的单位即得定理。

7. 小结

模型本讲的算法上界本讲的下界
列表到达 + 相同机器Greedy;MR;();已知
实时到达 + 相同机器在线 LPT()
列表到达 + 相关机器改进的 Greedy;slow fit + doubling;Greedy 的紧例子
列表到达 + 受限机器Greedy(随机也成立)
列表到达 + 不相关机器指数势函数同上
flowchart TD
  P["假设 ALG 很大"] --> E["效率界:工作量太多<br/>OPT ≥ 总工作量 / 总能力"]
  P --> C["组合界:大 job 太多<br/>m+1 个 > OPT/2 的 job"]
  E --> X["矛盾"]
  C --> X
  D["Doubling:去掉“已知 OPT”"] -.-> P
  G["分层:每层损失常数,共 log m 层"] -.-> P

练习