浅谈:树形动态规划中的换根技巧

什么是换根DP

如大家所熟悉的,‌换根DP(Re-rooting DP)是树形动态规划的一种优化技巧,用于在一次预处理后,高效计算以树中每个节点为根时的某种全局答案,避免对每个根单独做一次 O(n) 树形 DP(否则总复杂度 O(n²))

‌核心思想‌:

先任选一节点(如 1)为根,‌第一次 DFS(自底向上)‌ 计算其子树相关状态(如子树大小、子树内距离和等);再‌第二次 DFS(自顶向下)‌ 利用"换根公式"从父节点状态推导出子节点作为新根时的答案。

树形 DP

树形 DP 分为两部分。分别为树形操作和DP(Dynamic Programming,动态规划)操作。

一般来说,对树形操作都会伴随广度或者深度优先搜索的操作。

而在这搜索中还伴随动态规划的状态转移,这就是树形 DP。

换根 DP

换根 DP 是树形 DP 中的一个再度细分类型。

通常的场景是要求算出所有点作为根时,树的状态。如果是用普通的树形 DP 操作 n 次,则时间复杂度通常会高达 。这个效率非常低。

而换根 DP 可以通过单次 dfs 的过程中,以 复杂度的消耗,算出孩子节点的状态。

因此换根 DP 也会被称为二次扫描的树形 DP。综合时间复杂度可以维护在 的数量级。

相关推荐
To_OC8 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_841495649 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
爱刷碗的苏泓舒13 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽15 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米15 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
REST_302716 小时前
告别Excel孤岛:一款任务链路可视化工具带来的真实改变
大数据·微服务·云计算·编辑器·excel·动态规划
星空露珠16 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA18 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel18 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构