贪心法是一种不追求最优解只希望得到较为满意解的方法。贪心法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪心法常以当前情况为基础做最优选择,而不考虑各种可能的整体情况,所以,贪心法不要回溯。
贪心法与动态规划法的不同之处在于,它对每个子问题的解决方案都作出选择,不能回溯。动态规划法则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回溯功能。
一旦一个问题可以通过贪心法来解决,那么贪心法一般是解决这个问题的最好方法。由于贪心法的高效性,以及它所求得的解比较接近最优结果,因此,贪心法也可以用作辅助算法,或者直接解决一些要求结果不特别精确的问题。
使用贪心法的一般步骤如下:
- 从问题的某个初始解出发。
- 采用循环语句,当可以向求解目标前进一步时,就根据局部最优策略,得到一个部分解,缩小问题的范围和规模。
- 将所有部分解综合起来,得到问题最终解。