“Top Tree 以边界不超过两个的 cluster 统一表达路径和整树摘要,代价是 join 类型、expose 重排和实现常数更复杂。三者都实现动态森林接口,却不是同一内部树的不同命名。”
抽象接口 ​
作为动态图模型的受限接口,结构维护 represented forest,支持 link((u,v))、cut((e))、connected、find-root,可选 evert、path aggregate 与 subtree aggregate。Link 前必须验证端点属于不同树,否则会成环;cut 是按边还是按父子关系也须固定。
例如维护网络骨架上两点路径最大边:link 接入新边,cut 删除故障边,path-max 支持 MST 替换判断。辅助结构可能是 link-cut tree 或 Euler-tour tree,但它不改变外部森林。
能力边界 ​
路径聚合和子树聚合并不自动等价。Link-cut tree 擅长换根后的路径;Euler-tour tree把子树变连续区间。加入非树边后 represented object 不再是森林,须由外层动态图算法选择生成森林并管理候选替代边。
根是否固定会改变 subtree 语义。复杂度还须注明摊还/最坏及聚合运算是否可逆。
Link 的契约是两端根不同,cut 的边必须存在;否则 represented forest 不变量立刻失效。路径最大值需规定权在边还是点及聚合单位元。Evert 改变父子方向但不改变无向路径,subtree 语义却随根改变,所以支持 path aggregate 不能推出支持 subtree aggregate。
从三棵单点树开始,link
状态轨迹 ​
初始三棵单点树,link
Evert
聚合维护 ​
路径聚合若为最大值,单位元是
Link-cut tree把 preferred paths 存为辅助 splay,擅长路径;Euler-tour tree把每棵树的 tour 存为可 split/join 序列,擅长子树/连通。接口重叠不代表摘要能力相同。
参考资料
- Sleator, Tarjan, “A Data Structure for Dynamic Trees,” JCSS, 1983.
- Henzinger, King, dynamic graph framework, STOC 1995.