贪心算法总是作出在当前看来最好的选择,所作出的选择只是在某种意义上的局部最优选择。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。
贪心算法和动态规划算法的比较:
这两种算法都是选择性算法,就是从一个候选集合中选择适当的元素加入解集合。
贪心算法的选择策略即贪心选择策略,通过对候选解按照一定的规则进行排序,然后就可以按照这个排好的顺序进行选择了,选择过程中仅需确定当前元素是否要选取,与后面的元素是什么没有关系。
动态规划的选择策略是试探性的,每一步要试探所有的可行解并将结果保存起来,最后通过回溯的方法确定最优解,其试探策略称为决策过程。
共同点:
最优子结构性质是选择类最优解都具有的性质,即全优一定包含局优
不同之处:
贪心算法具有贪心选择特性。贪心算法求得局部最优解(局部最优,不一定是全局最优)
动态规划算法从全局最优考虑问题