问题:设 T 是一棵以某个节点 r 为根的 n 节点树。我们希望在 T 的节点上放置尽可能少的保护,以便 T 的每条边都受到保护:如果在这两个节点 v 中的至少一个上放置保护,则父节点 v 与其子节点 w 之间的边受到保护, w。给出一个 O(n) 时间算法来找到问题的最优解。
我的方法是从根进行后序遍历,并在一个节点上放置一个防护,该节点是一个无防护边的一部分,除非该节点是叶子......但是如果所有节点都排列在一个线性链,因为我的算法会在每个节点上放置保护,除了链的末端。
我在网上查看并检查了 DP 解决方案,这对我来说很有意义,但我想知道是否有一个贪心算法来找到一棵树的顶点覆盖