Self-Adjusting Top Tree 学习笔记

· · 个人记录

参考资料 1

参考资料 2

一、SATT 能干什么?

它可以维护一个森林,支持如下操作:

举个例子?P5649 Sone1。

二、SATT 怎么干?

使用树收缩。

我们定义两种操作:\operatorname{Compress}(v),\operatorname{Rake}(v),例子:

显然,\operatorname{Compress}(v) 消除一个度为 2 的节点,\operatorname{Rake(v)} 消除一个度为 1 的节点。在进行 \operatorname{Compress}(v) 后,我们将 v 的信息、uv 的信息和 vw 的信息放到 uw 中存储。在进行 \operatorname{Rake}(v) 后,我们将 v 的信息、vx 的信息放到 xw 中存储。

感性理解一下,我们可以将一棵树收缩成一条边和两个点,比如某论文中的例子:

再次感性理解,在收缩过程中一条边存储了原树中一个连通块,比如原树中 im 这条边就存储了 i,m,o,k 的导出子图。

我们将这样的子图称作树簇 \text{cluster},显然至多两个节点和原树的其他节点项链,这两个节点称作界点 \text{boundary node},其他在树簇中的店称作内点 \text{internal node},两个界点之间的路径称作簇路径 \text{cluster path}