算法分析之贪心算法

Posted by Surflyan on 2017-07-10

1. 算法思想

求解优化问题通常可以一步一步来选择求解,贪心算法处理优化问题时,在每一步都选择当前最佳策略,希望通过局部优化来达到全局优化的效果。一般情况下,贪心算法仅会得到一个可行解,并非最优解。如 0-1背包问题 (这里不包括分数背包问题)。


2. 前提条件

任何问题只要其具备了贪心选择性和优化子结构就可通过贪心算法获得该问题的最优解。

贪心选择性 : 如果一个优化问题的贪心选择必然出现在该问题的一个最优解中,称该问题具备贪心选择性;
优化子结构 : 如果一个优化问题的贪心选择和贪心选择之后剩下的子问题的解一起构成该问题的一个优化解,称该问题具有贪心子结构;

这两条性质,通常可通过反证法证明之。


3. 典型问题

贪心算法在一些经典问题求解上的应用:

  1. 活动选择问题
  2. 哈夫曼编码问题
  3. 最小生成树问题