树上的独立集
关键:如果一个节点是叶子节点,则树上其中的一个最大独立集一定包含该节点。
证明:考虑叶子节点与其父亲节点,若两个都不属于最大独立集,则我们可以将叶子节点加入形成一个更大的独立集;如果只有叶子节点不属于,那么我们可以选择不将父亲节点加入而将叶子节点加入独立集,此时仍是一个最大独立集。
树上的贪心策略
如果树中还存在一条边,则将该边中属于叶子的节点加入最大独立集,删除两个顶点以及这两个顶点所邻接的所有边。重复上述操作,直到树中不存在边,所得集合为树的最大独立集。
树上带权独立集
关键:树中各子树之间没有直接联系,因此可以动态规划求解
分情况说明:
- 最大带权独立集为包含根节点,则与其连接的子树的根节点不能选择
- 最大带权独立集为不包含根节点,则与其连接的子树的根节点可以选,当然也可以不选,取选和不选中最大的。
目标:,其中:
顶点覆盖问题
2倍近似算法: