贪心算法

简介

贪心算法就是,在每次操作时都做出当下最好的选择,从而使最后得到的结果是最优解。做出局部选择时,不考虑这个选择对将来的影响,而且做出选择之后不会回退到以前。因为全局结果是局部结果的简单求和,且局部结果互不相干,所以局部最优策略也就是全局最优策略。

但并不是所有问题都可以使用贪心算法得到最优解,重点是贪婪策略的选择,难点在于如何证明局部最优解就可以得到全局最优解。

贪心算法有点像动态规划,只不过,每个局部选择都只依靠另一个局部选择。要证明贪心算法能够得到全局最优解,只需要证明在填表 (动态规划的状态表) 的时候,每填一个格子我们只需要查询另一个格子,而不需要综合考虑几个格子。因为贪心算法每次只考虑一个子问题,所以解决问题的时间复杂度一般是线性的。

算法

  • 初始化结果数组

  • 在每一步中,把当前项加入结果数组中

  • 如果此时结果数组是一个可行解,那就保留当前项

  • 如果不是,那就去除当前项,并且之后不再考虑这一项

相关题目类型

分配问题

区间问题

TODO

Last updated

Was this helpful?