“全动态连通性通常把一组非树边围绕动态生成森林组织;动态森林问题提供 link、cut、连通查询和路径/层级聚合接口。难点在删除树边后从非树边中寻找替代边,而不只是维护一棵森林。”
形式陈述
抽象接口
作为动态图模型的受限接口,结构维护由树组成的 represented forest,核心支持 link
例如维护网络骨架上两点路径最大边:link 接入新边,cut 删除故障边,path-max 支持 MST 替换判断。辅助结构可能是 link-cut tree 或 Euler-tour tree,但它不改变外部森林。
直觉
能力边界
路径聚合和子树聚合并不自动等价。Link-cut tree 擅长换根后的路径;Euler-tour tree 把整分量表示为循环序列;要把指定根下的子树定位成区间,还需相应的进入/退出标记和边界维护。加入非树边后 represented object 不再是森林,须由外层动态图算法选择生成森林并管理候选替代边。
路径最大值需规定权在边还是点上,以及空路径的聚合单位元。复杂度则按接口注明最坏界或摊还界。
Evert 改变父子方向,但保持无向路径的边集合,因此路径最大值不变。子树由根的方向决定,换根后会改变;支持路径聚合的结构还需额外设计才能维护子树摘要。
例子与边界
状态轨迹
初始有三棵单点树。执行 link
先以 1 为根,subtree
推论与应用
三类实现对应不同的聚合接口。Link–Cut Tree把 preferred path 表示为辅助伸展树,适合 link、cut、evert 与路径聚合;Euler Tour Tree把每棵树编码成可分裂合并的 Euler 序列,直接支持连通性和分量摘要;支持有根子树时须另行维护区间语义;Top Tree以至多两个边界点的 cluster 分层合并,更对称地承载路径、直径和树上动态规划。选择结构前必须先固定查询是路径型、子树型还是 cluster 型。
聚合维护
按边取权时,空路径的最大值单位元可取
参考资料
- Sleator, Tarjan, “A Data Structure for Dynamic Trees,” JCSS, 1983.
- Henzinger, King, dynamic graph framework, STOC 1995.