“支配树研究的是单入口有向图中所有入口路径的必经关系,即使图本身有环也可定义;树宽动态规划则沿树分解处理一般图,不要求原图是 DAG。压缩强连通分量后得到的凝聚图必为 DAG,正是把有环输入接…”
形式陈述 ​
树宽动态规划是动态规划的结构化特例:状态沿树分解的 bag 传播,子问题边界由 bag 中至多
边界状态原则 ​
给宽度
Nice decomposition 转移 ​
leaf 给空状态;introduce vertex 加入一个 bag 顶点并枚举其局部状态;introduce edge 检查/更新边约束;forget vertex 在它离开边界前汇总所有可能;join 的两个孩子有同一 bag,要组合彼此内部独立但边界一致的状态。join 最容易重复计算 bag 顶点的权重,需只在固定引入/遗忘时计一次。
直觉
树分解的 bag 是已处理子图与未来部分之间唯一可见的边界。只要状态保存所有可能影响未来扩展的信息,内部细节便可被一个最优值摘要替代;宽度
例子与边界
独立集例子 ​
状态是 bag 的独立子集
边界 ​
分解树节点不是原图顶点。Hamilton cycle 等连通问题若直接记录 bag 的分区,状态可达 Bell 数;需 rank-based、Cut&Count 或代表集进一步压缩。算法输入若不含分解,还必须计求 tree decomposition 的 FPT/近似成本。
推论与应用
状态充分性的证明 ​
正确性通常按分解树归纳:两份已处理部分若在当前 bag 上具有相同状态,则对任何未处理上方图,它们可扩展为解的可能性和最佳代价相同。这个“可替换性”证明比列出转移更重要;若状态漏掉边界连通关系,join 后可能把两条路径错误拼成环。
Nice decomposition 可由普通分解在
独立集状态的完整转移 ​
对每个 bag
- introduce
:选择 时检查它与 无边; - forget
:在子状态含或不含 两者中取最大; - join:两孩子取同一
,相加后减去 bag 中被重复计算的 ; - leaf:从空 bag 的零值开始。
每个 bag 有
连通性问题的状态不只记录选中顶点,还要记录 bag 上的连通分区,状态数可能是
参考资料
- Hans Bodlaender, Treewidth: Algorithmic Techniques and Results, MFCS, 1997.
- Marek Cygan et al., Parameterized Algorithms, Springer, 2015.