贪心算法:
总是作出当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,他所做出的选择只是在某种意义上的局部最优选择。但对许多问题它能产生整体最优解。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。
应用贪心思想的常用问题:单源最短路径问题,最小生成树问题,哈夫曼编码问题。
可以用贪心算法求解的问题一般具有两个性质
1.贪心选择性质:
整体最优解可以通过一系列局部最优的选择(即贪心选择)来达到,这是贪心算法的第一个基本
要素,也是贪心算法与动态规划算法的主要区别。动态规划是自底向上的方式解决各子问题,而
贪心算法则通常以自顶向下的方式进行。每做一次贪心选择就将所求问题简化为规模更小的问题
2.最优子结构性质:
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结
构性质是该问题可用动态规划或贪心算法求解的关键特征。
DP:01背包问题
贪心:背包问题
贪心算法的一些基本问题:(感兴趣的同学可以自己搜索一下问题详细了解贪心思想)
1.找零问题
2.背包问题
3.拼接最大数字问题
4.活动选择问题