贪心算法基本概念及思维导图

1.思维导图

第四章主要学习了贪心算法的相关内容,思维导图如下:

贪心算法基本概念及思维导图_第1张图片

2. 贪心算法

贪心算法(greedy algorithm,又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。

特点:

  1. 贪心法在解决问题的策略上“目光短浅”,只根据当前己有的求解信息就做出局部最优选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。
  2. 贪心法每次所做出的选择只是在某种意义上的局部最优选择, 这种局部最优选择并不总能保证获得问题 的整体最优解, 但通常能获得近似最优解。

可用贪心算法求解问题的特征:

  1. 最优子结构性质:一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质,也称此问题满足最优性原理。 这是贪心算法可行的第一个基本要素。 最优子结构性质是某问题可用动态规划算法或贪心算法求解的关键特征。
  2. 贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优的选择(贪心选择)得到。 这是贪心算法可行的第二个基本要素,也是贪心算法与动态规划算法的主要区别。 贪心算法通常以自顶向下的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题,然后再求解一次贪心选择后产生的子问題解。 一个具体问题,要确定它是否具有贪心选择性质,须证明每一步所作的贪心选择最终导致问题的 整体最优解。

设计要点:

  1. 按照贪心选择策略对数据进行预处理(排序),有时候贪心算法的主要时间复杂度受到排序算法的影响;
  2. 贪心法求解过程是多步局部最优选择的判断过程,最终的贪心选择序列对应于问题解;
  3. 局部最优选择判断依据某种贪心选择策略,贪心选择策略的好坏决定算法成败;
  4. 贪心选择性质须进行正确性证明。

3. 相关问题

  • 哈夫曼编码
  • 单源最短路径:迪杰斯特拉算法
  • 最小生成树 

你可能感兴趣的:(算法,贪心算法,动态规划)