贪心算法:每一步都做出当前看起来最佳的选择。贪心算法一般都是自顶向下的设计:做出一个选择,然后求解剩下的那个子问题。
贪心算法设计步骤:
(1):将最优化问题转化为这样的形式:对其作出一次选择后,只剩下一个字问题需要求解。
(2):证明做出贪心选择后,原问题总是存在最优解,既贪心选择总是最安全的。
(3):证明做出贪心选择后,剩余的子问题满足性质:其最优解与贪新选择组合即可得到原问题的最优解,这样就得到了最优子结构。
贪心算法进行选择时可能依赖之前做出的选择,但不依赖任何将来的选择或是子问题的解。
最优子结构:
如果一个问题的最优解包含其子问题的最优解,则称此问题具有最优子结构性质。