“全动态连通性通常把一组非树边围绕动态生成森林组织;动态森林问题提供 link、cut、连通查询和路径/层级聚合接口。难点在删除树边后从非树边中寻找替代边,而不只是维护一棵森林。”
形式陈述 ​
抽象接口 ​
作为动态图模型的受限接口,结构维护由树组成的 represented forest,支持 link
例如维护网络骨架上两点路径最大边: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
Evert
推论与应用
三类实现对应不同的聚合接口。Link–Cut Tree把 preferred path 表示为辅助伸展树,适合 link、cut、evert 与路径聚合;Euler Tour Tree把每棵树编码成可分裂合并的 Euler 序列,天然支持连通性和可组合的子树摘要;Top Tree以至多两个边界点的 cluster 分层合并,更对称地承载路径、直径和树上动态规划。选择结构前必须先固定查询是路径型、子树型还是 cluster 型。
聚合维护 ​
路径聚合若为最大值,单位元是
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.