Skip to content

算法Algorithm

分页的随机 Marking 算法

施工中 · 内容逐步修订

randomized marking algorithm · Marking paging

按 phase 标记请求页,并从未标记缓存页中随机淘汰,以调和数期望竞争比处理分页。

形式陈述 ​

算法与 phase ​

在分页问题中,缓存容量为整数 k≥1,初始缓存可为空或任意固定,所有标记初始清空。一 phase 从所有标记清空开始,持续到请求将引入第 k+1 个不同页之前;请求某页后把它标记。若 miss 且缓存未满就装入;若已满,作为随机算法从当前缓存中均匀选择一个未标记页淘汰。由于当前 phase 至多出现 k 个不同页,发生 miss 时总有未标记受害者。

Clean 与 stale 分析 ​

固定一个不随算法随机选择而改变的请求序列。除首个 phase 外,阶段开始时缓存恰好包含上一阶段的 k 个页。本阶段出现而上一阶段未出现的页称 clean,设共有 ℓ 个;上一阶段出现、尚未在本阶段请求的页称 stale。

每个 clean 页首次请求都会缺页。对尚未请求的 stale 页,均匀淘汰使它们处于对称地位:若已有 c 个 clean 页到达、还有 u 个 stale 页尚未请求,则其中恰有 c 个不在缓存,下一个指定 stale 页的缺页概率为 c/u。

这里对固定请求前缀平均全部算法随机性,不是再条件于已经揭示的具体缓存。每次均匀淘汰以及随后删除已请求的 stale 页,都保持未请求页中缺失集合的均匀对称性。用 c≤ℓ 逐项求和,可将 stale 缺页期望上界为 ℓ∑u=ℓ+1k1/u。因此本阶段总缺页期望至多

ℓ(1+Hk−Hℓ)≤ℓHk,Hk=∑j=1k1j.

结合相邻阶段的离线成本下界,得到 2Hk 的竞争比,首阶段成本计入加性常数。

直觉

标记保护本 phase 已请求的页,只在尚未请求的旧页之间随机淘汰。随着 stale 页逐个被请求,仍可能被淘汰的对称候选数不断减少,fault 概率形成调和和;clean 页则连接相邻 phases,并为 OPT 提供不可避免的下界。

标记保护与随机未标记淘汰
例子与边界

一 phase 图像 ​

缓存含上一 phase 的 k 页。新 phase 首次请求一个 clean 页时随机淘汰某个未标记旧页;若该旧页稍后被请求就 fault 并再随机淘汰。随着页被请求并标记,可淘汰集合缩小,调和概率由此出现,而不是每次都在全部缓存中随机。

对手边界 ​

上述保证针对 oblivious adversary,即先固定请求序列,再对算法随机性取期望。若对手观察缓存后专门请求刚被淘汰的页,就会破坏 stale 页的对称性。Hk 随 k 以对数量级增长,所以这里的竞争比随缓存容量变化。

推论与应用

OPT 下界与 phase 衔接 ​

第 i 阶段有 ℓi 个 clean 页时,它与前一阶段共请求了 k+ℓi 个不同页。OPT 在这两阶段开始时最多已缓存 k 个,因此至少缺页 ℓi 次。把这些相邻阶段的不等式相加,每次 OPT 缺页至多被计算两次,故 ∑i≥2ℓi≤2OPT。首阶段算法至多缺页 k 次,由此得到

E[ALG]≤Hk∑i≥2ℓi+k≤2HkOPT+k.

所有页都 marked 时不应立即随机淘汰 marked 页,而应在下一次将出现新 distinct 页时结束 phase、清标记,再按未标记规则处理。实现边界错一请求会破坏 clean/stale 定义。

一阶段缓存怎样变化 ​

设 k=3,新 phase 请求依次为 a,b,c,b,d。前三个不同页被标记;第二次 b 命中且仍保持标记。请求 d 会开启下一 phase,而不是在已有三个标记页中强行找“未标记页”淘汰;清空标记后再处理 d,算法不变量才成立。

随机抽样的候选集合应恰好是当前未标记的缓存页。最直接实现逐请求扫描至多 k 个槽,维护命中与标记,缺页时列出候选并均匀抽样;长度 T 的序列共用 O((T+1)k) 次基本操作和 O(k) 个页标识与标记。这个成本按页标识比较与抽取一个均匀候选为单位操作;若只有公平随机位,可用拒绝采样实现候选抽取,并另计随机位与预期抽样成本。输入结束后输出最终缓存及缺页账单;竞争比分析的是缺页数,独立于这些内部处理费用。

参考资料
  • Amos Fiat et al., Competitive Paging Algorithms, Journal of Algorithms, 1991,§3:Marking 的 2Hk 竞争界。
  • Allan Borodin, Ran El-Yaniv, Online Computation and Competitive Analysis, 1998.
关系图谱9 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

实现的抽象