“这种极简性使它成为 自调整结构:树形不在每次更新后保持显式平衡,效率来自后续配对规则与整段操作序列的摊还分析。”
序列模型 ​
对访问序列
Working-set 界按自上次访问
访问改变结构 ​
伸展树访问后把键旋到根。连续访问同一键,第一次可能沿长度
单次延迟仍可
开放边界 ​
“与任何离线 BST 常数竞争”的动态最优性是一个特定而开放的比较基准,不能附给所有自调整结构。只证明 working-set、dynamic-finger 或 access lemma 时,应准确报告对应定理。
Working-set 参数计算自上次访问该键之后出现过的不同键数,不是间隔操作数或全局频率。例如序列 ((a,b,c,a)) 的最后一次访问 a 对应集合 ({b,c}),参数为 2。缓存自适应索引还必须把重排成本计入,不能只展示热点移近后的查询。
伸展步骤的状态演化 ​
访问节点
在键链
Access lemma 的证明图像 ​
令
势可能在一次操作后大幅下降,所以实际线性成本仍可有对数摊还;把势能项丢掉就会错误得到最坏界。
与随机平衡和静态最优的对照 ​
Treap 在创建节点时随机决定形状,不因访问改变;最优静态 BST 假设频率已知,构建后固定;自调整结构从序列在线学习局部性,却为重排付费。三者的“常用键较浅”来源不同,概率和比较基准也不同。
参考资料
- Daniel Sleator, Robert Tarjan, “Self-Adjusting Binary Search Trees,” JACM, 1985.
- Sleator, Tarjan, “Amortized Efficiency of List Update and Paging Rules,” CACM, 1985.