贪心算法是以动态规划方法为基础的,在每个贪心算法之下,几乎总有一个更繁琐的动态规划算法。
贪心算法和动态规划不同之处在于:是否需要考虑子问题的解
贪心算法并不考虑子问题,直接在当前步骤中做出选择
动态规划无论是自底向上,
贪心算法设计步骤
- 将最优化问题转化为这样的形式:对其做出一次选择后,只剩下一个子问题需要求解。
- 证明做出贪心选择后,原问题总是存在最优解,即贪心选择总是安全的。
- 证明做出贪心选择后,剩余的子问题满足性质:其最优解与贪心选择组合即可得到原问题的最优解,这样就得到了最优子结构。