[]splay

$\newcommand{s}[1]{\text{siz}_{#1}}$tarjan is god

论文

势能分析的思路大概是这样:

设总共对数据结构进行$m$次操作,第$i$次操作耗费的时间为$t_i$,要证$\sum\limits_{i=1}^mt_i$不大

引入势能$\Phi$,设第$i$次操作结束后的势能为$\Phi_i$,设$\Delta_i=t_i+\Phi_i-\Phi_{i-1}$,那么$\sum\limits_{i=1}^mt_i=\Phi_0-\Phi_m+\sum\limits_{i=1}^m\Delta_i$

如果能证明$\Phi$比较小(比如$O(n\log n)$),$\Delta_i$也比较小(比如$O(\log n)$),那么就证明了原问题的时间复杂度

对于splay,定义$r(x)=\log_2\s x,\Phi=\sum\limits_xr(x)$,显然$\Phi=O(n\log n)$

只用分析$\Delta_i$,分别考虑三种旋转

单旋:$1$次旋转

$t+\Delta\Phi=1+r'(y)-r(x)\leq1+r'(x)-r(x)$

下面要用到一个结论:当$x+y\leq1,x,y\gt0$时,$\log_2x+\log_2y\leq-2$,证明很简单,只需考虑$x+y=1$,此时有$\log_2x(1-x)\leq-2$

zig-zig:$2$次旋转

$t+\Delta\Phi=2+r'(y)+r'(z)-r(x)-r(y)\leq2+r'(x)+r'(z)-2r(x)$

因为$\s x+\s z'\leq \s x'$,所以$r'(x)+r'(z)-2r'(x)\leq-2$,加到上面就得到$t+\Delta\Phi\leq3(r'(x)-r(x))$

zig-zag:$2$次旋转

$t+\Delta\Phi=2+r'(y)+r'(z)-r(x)-r(y)\leq2+r'(y)+r'(z)-2r(x)$

类似地,因为$\s y'+\s z'\leq\s x'$,所以$r'(y)+r'(z)-2r'(x)\leq-2$,加起来得到$t+\Delta\Phi\leq2(r'(x)-r(x))$

因为$r'(x)\geq r(x)$,所以把上面三种情况全部放缩到$3(r'(x)-r(x))$,求和得到$\Delta_i\leq1+3(r'(rt)-r(x))=O(\log n)$

所以,$m$次splay操作的总时间复杂度为$O((n+m)\log n)$

猜你喜欢

转载自www.cnblogs.com/jefflyy/p/10678982.html