Bootstrap

Splay时间复杂度证明

高能预警! 需要前置知识“摊还分析”和“splay”

前置小结论

log ⁡ x + log ⁡ y ≤ 2 l o g ( x + y ) − 2 \log x+\log y \le 2log (x+y)-2 logx+logy2log(x+y)2
容易看出这其实与 4 x y ≤ ( x + y ) 2 4xy\le (x+y)^2 4xy(x+y)2等价,即与 ( x − y ) 2 ≥ 0 (x-y)^2\ge0 (xy)20等价。

一些约定

对每个节点 x x x,设其大小为 c ( x ) c(x) c(x)(一个正数,此处取一即可),其子树的大小为 s ( x ) = ∑ u ∈ s u b t r e e ( x ) c ( u ) s(x)=\sum_{u\in subtree(x)}c(u) s(x)=usubtree(x)c(u),这个节点对势函数的贡献为 ϕ ( x ) = log ⁡ s ( x ) \phi(x)=\log s(x) ϕ(x)=logs(x)
定义整棵树的势函数 Φ ( T ) = ∑ x ∈ T ϕ ( x ) \Phi(T)=\sum_{x\in T} \phi(x) Φ(T)=xTϕ(x)。显然 Φ ( T ) > 0 \Phi(T)>0 Φ(T)>0

各种情形下势函数变化量

zig/zag

因为两种情况对称,所以图只画了 z i g zig zig情形

   Y        X'
 X  C  ->  A  Y'
;