贪心算法
贪心算法在对问题求解时,总是做出在当前开来是最好的选择,它不从整体上考虑,它所做出的是某种意义上的局部最优解。(需要注意:贪心算法并不能对所有问题都求得全局最优解)。贪心算法的关键在于选择合适的贪心策略,选择的贪心策略必须具备无后效性(即某个状态以前的过程不会影响以后的状态)。
对于一个问题,首先要确定它有没有贪心选择的性质,我们必须保证每一次所做的贪心选择最终能得到问题的最优解(通常情况下,若原问题通过贪心选择后简化为一个类似的子问题,则可以通过贪心算法求解)。
与动态规划的区别
贪心算法的每一次操作都对结果产生直接影响,而动态规划则不是。贪心算法对每个子问题的解决方案都做出选择,不能回退;动态规划则会根据以前的选择结果对当前进行选择,有回退功能。动态规划主要运用于二维或三维问题,而贪心一般是一维问题 。