“跳表在底层全量链表之上随机建立稀疏快车道,以期望对数搜索换额外指针;Move to Front按访问重排链表,用竞争分析而非最坏查找界评价。两者都不是普通链表常数插删性质的直接推论。指针机模…”
成本模型与算法 ​
在竞争分析采用的 full-cost 模型里,无序列表中访问第
逆序势 ​
同时观察 MTF 列表与离线 OPT 列表。令
势同时比较两个算法状态,这不只是单结构摊还分析。
热点例子 ​
字典列表最初把某命令放在尾部;它第一次访问昂贵,移到表头后连续访问均为 1。若热点切换,新的热点也会前移,不需要预知静态频率。这个序列敏感性不同于事先按频率排好的 static optimum。
边界 ​
若允许访问后免费任意重排整个列表,或交换成本不同,2-competitive 证明不再对应模型。摊还便宜不代表每次延迟低;长尾元素首次访问仍线性。static optimum 只选一个固定排列,dynamic optimum 可随请求付费调整,比较基准必须写明。
势变化的对象 ​
访问
Transpose 规则只把访问项向前交换一位,虽然更保守,却没有同样的 2-competitive 保证;自调整规则不能仅凭“热点会前移”互换定理。
一次访问的逆序账本 ​
设 MTF 当前列表为 [c,a,b,d],比较算法 [a,b,c,d],访问 b。MTF 支付位置 3 后把 b 移到头部;势只需检查 b 与它越过的 c,a 两对,以及
标准证明取势
免费交换模型只允许刚访问元素向前移动;任意其他重排要逐相邻交换计费。若实现允许一次免费把任意元素搬动,竞争比证明比较的已不是经典 List Update 问题。
参考资料
- Daniel Sleator, Robert Tarjan, Amortized Efficiency of List Update and Paging Rules, CACM, 1985.
- Allan Borodin, Ran El-Yaniv, Online Computation and Competitive Analysis, list update chapter.