贪心算法证明

贪心性质

用贪心算法解决的题目需要满足以下性质:

  • 最优子结构:一个问题的最优解包含其子问题的最优解。
  • 贪心选择性:所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。

对比动态规划

DP满足

  • 最优子结构:一个问题的最优解包含其子问题的最优解。
  • 重叠子问题:在问题的求解过程中,很多子问题的解将被多次使用。

贪心算法设计

  1. 设计贪心选择方法:
    • 贪心选择方法
    • 剩余子问题
  2. 证明:对于 1 中贪心选择来说 所求解的问题具有最优子结构
  3. 证明:对于 1 中贪心选择算法来说 所求解的问题具有贪心选择性
    • 归纳法:证明在每一步做得都比其它算法好 从而最终产生了一个最优解
    • 交换论证法:在保证最优性不变前提下 从一个最优解逐步替换 最终得到贪心算法的解
  4. 按照 1 中设计的贪心选择方法设计算法