相关笔记

本章节笔记:

  • 27.1 等电梯 — 在线算法与竞争分析的基本框架、Ski-Rental 问题、确定性/随机化竞争比
  • 27.2 维护搜索列表 — 自组织线性搜索、Move-to-Front 策略、4-竞争比证明
  • 27.3 在线缓存 — LRU/FIFO/Marking 算法、k-Server 问题、势能分析法

前置章节汇总:

后续章节:

  • 暂无

概览

第27章系统介绍了在线算法(online algorithm)的设计与分析方法。全章以竞争分析(competitive analysis)为核心评估框架,通过将在线算法的代价与最优离线算法的代价进行最坏情况比较,为在信息不完全条件下做决策的算法提供严格的理论保证。

三节内容从入门到进阶:(1) 等电梯问题引入竞争比概念,证明确定性最优竞争比为 2、随机化最优竞争比为 ;(2) 维护搜索列表问题展示 Move-to-Front 策略的 4-竞争比证明(位反转论证 + 势函数方法);(3) 在线缓存问题分析 LRU/FIFO 的 -竞争比和 Marking 算法的 随机化竞争比,并介绍 k-Server 问题作为一般化框架。


知识结构总览

flowchart TD
    CH["第27章 在线算法"] --> S1["27.1 等电梯"]
    CH --> S2["27.2 维护搜索列表"]
    CH --> S3["27.3 在线缓存"]

    S1 --> S1A["在线算法 vs 离线算法"]
    S1 --> S1B["竞争比定义"]
    S1 --> S1C["Ski-Rental 问题"]
    S1 --> S1D["确定性竞争比 = 2"]
    S1 --> S1E["随机化竞争比 = e/(e-1)"]

    S2 --> S2A["自组织线性搜索"]
    S2 --> S2B["Move-to-Front (MTF)"]
    S2 --> S2C["位反转论证"]
    S2 --> S2D["势函数方法(逆序对)"]
    S2 --> S2E["MTF 竞争比 = 4"]

    S3 --> S3A["Belady 最优离线算法"]
    S3 --> S3B["LRU / FIFO(竞争比 = k)"]
    S3 --> S3C["Marking 算法(O(log k))"]
    S3 --> S3D["k-Server 问题"]

    S1B --> S2
    S1B --> S3
    S2D --> S3B

    style CH fill:#e1f5fe,stroke:#0288d1,stroke-width:2px
    style S1 fill:#fff3e0,stroke:#ef6c00
    style S2 fill:#e8f5e9,stroke:#2e7d32
    style S3 fill:#fce4ec,stroke:#c62828

核心概念回顾

三节内容对比

维度27.1 等电梯27.2 维护搜索列表27.3 在线缓存
核心问题引入竞争分析框架自组织线性搜索缓存页面置换
在线策略 天租用后购买Move-to-FrontLRU / FIFO / Marking
确定性竞争比2(最优)4(最优)
随机化竞争比(Marking)
核心证明技术对抗性论证(对手构造)位反转论证 + 势函数势能法 + 分阶段分析
最优离线策略知道总次数后选择租/买按频率降序排列Belady(furthest-in-future)
一般化k-Server 问题

算法选型指南

  • 需要确定性保证:LRU/FIFO 在缓存问题中达到最优确定性竞争比
  • 需要更好的竞争比:随机化算法(Marking)可将竞争比从 降到
  • 实际工作负载:竞争比是最坏情况保证,实际中 LRU 通常远优于 (利用局部性)
  • 自组织搜索:MTF 在具有时间局部性的访问序列上表现优异,优于频率计数策略

核心定理汇总

  1. 竞争比定义,对所有 成立
  2. Ski-Rental 确定性下界:竞争比 ,当 时趋近于 2
  3. Ski-Rental 随机化最优:竞争比
  4. MTF 竞争比(势函数法证明)
  5. LRU/FIFO 竞争比,且确定性下界也是 (最优)
  6. Marking 竞争比:期望

跨章关联

与第15章(贪心算法)的关系

  • 15.4 离线缓存 的 Belady 最优策略是在线缓存分析的基准线——所有在线算法的竞争比都相对于 Belady 算法定义
  • 替换论证 技术在贪心算法(证明贪心选择性质)和竞争分析(证明竞争比上界)中都有应用
  • 离线缓存是贪心算法的经典应用,在线缓存是其在线版本

与第16章(摊还分析)的关系

  • 势能方法是摊还分析和竞争分析的共同核心工具
  • 竞争分析可以视为摊还分析在”在线 vs 离线”场景下的扩展:摊还分析比较同一算法不同操作的代价,竞争分析比较在线算法与最优离线算法的代价
  • MTF 的 4-竞争比证明和 LRU 的 -竞争比证明都使用了势能方法

与第5章(概率分析与随机化算法)的关系

  • 随机化竞争比的定义 依赖概率分析
  • Ski-Rental 的最优随机化策略设计使用了概率分布构造(与 成正比的购买概率)
  • Marking 算法的 竞争比通过分析随机淘汰的期望代价得到

与第26章(并行算法)的关系

  • 两者都关注算法在特定约束下的性能保证:并行算法受限于处理器数 ,在线算法受限于信息不完全
  • Work/Span/Parallelism 框架为并行算法提供了类似竞争比的性能度量

综合复习题


常见误区

误区1:竞争比越小意味着算法在所有情况下都接近最优

竞争比衡量的是最坏情况下的性能保证。一个 2-竞争的算法在大多数实际输入上可能表现得非常好(甚至接近最优),但在某些精心构造的对抗性输入上,其代价可能达到最优解的 2 倍。竞争比是一种保守的度量,类似于最坏情况时间复杂度。

误区2:随机化在线算法一定优于确定性在线算法

随机化算法的竞争比是在期望意义下成立的,对于特定的随机比特序列,实际代价可能远超竞争比所保证的值。此外,随机化算法需要可用的随机源,在某些场景下(如确定性硬件、可重复性要求高的系统)可能不适用。

误区3:竞争分析 vs 摊还分析是同一回事

竞争分析比较的是在线算法 vs 最优离线算法,摊还分析比较的是同一算法不同操作的代价。两者的共同工具是势能方法,但分析目标和结论不同。竞争分析的结果更”悲观”(因为对手可以构造最坏输入),摊还分析的结果更”乐观”(因为比较的是同一算法自身的代价分摊)。

误区4:增加缓存容量一定能减少未命中次数

对于 FIFO 策略,增加缓存容量可能导致未命中次数反而增加(Belady 异常)。LRU 不会出现这种现象。这说明缓存策略的选择比缓存容量的大小更重要。


学习要点总结

学习目标掌握程度对应笔记
理解在线算法与离线算法的区别★★★★★27.1 等电梯
掌握竞争比的严格定义★★★★★27.1 等电梯
掌握 Ski-Rental 问题的竞争比分析★★★★★27.1 等电梯
理解随机化竞争比的优势★★★★☆27.1 等电梯
掌握 MTF 策略的执行流程★★★★★27.2 维护搜索列表
理解位反转论证的直觉★★★★☆27.2 维护搜索列表
掌握势函数法证明 MTF 的 4-竞争比★★★★★27.2 维护搜索列表
掌握 LRU/FIFO 的 -竞争比证明★★★★★27.3 在线缓存
理解 Marking 算法的设计与分析★★★★☆27.3 在线缓存
了解 k-Server 问题及其与缓存的关系★★★☆☆27.3 在线缓存

参见Wiki


第27章-在线算法 章节汇总