概述
贪心算法又称为贪婪算法,是一种着眼局部的简单而适应范围有限的优化策略。当一个问题具有最优子结构性质时,贪心算法有时比动态规划法求解更为简单有效。
贪心算法在求解最优化问题时,从初始阶段开始,每个阶段总是做一个使局部最优的贪心选择,不断把问题转化为规模更小的子问题。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是局部最优选择,这样处理,对大多数优化问题来说能得到最优解,但是并不总是这样。
贪心策略的选择
贪心算法没有固定的算法框架,算法设计的关键在于贪心策略的选择与确定。贪心算法的基本思想是通过一系列选择步骤来构建问题的解,每一步都是对当前部分解的一个扩展,直至获得问题的完整解。
应用贪心算法所做的每一步选择都必须满足:
1. 可行的:必须满足问题的约束条件
2. 局部最优:当前所有可能的选择中选择使局部最优的决策
3. 不可取消的:选择一旦做出,在后面的步骤中无法改变
贪心算法是通过做一系列的选择来求出某一问题的最优解,对算法的每一个决策点,做一个当时看起来是最佳的选择,这种启发式策略并不总能产生出最优解。
示例
1. 删数字问题,在给定的n个数字的数字串中,删除其中k(k<n)个数字后,剩下的数字按照原次序组成一个新的正整数。请确定删除方案,使得剩下的数字组成的新正整数最大,例如在整数79502867154829179316中删除8个数字后,所得最大整数为大?

贪心算法是一种求解局部最优解的策略,常用于解决具有最优子结构的问题。本文介绍了贪心算法的概念、策略选择及其在删数字问题和哈夫曼编码中的应用,并提供了Python和C代码示例。虽然贪心算法在某些情况下可得到最优解,但并非总能保证全局最优。
最低0.47元/天 解锁文章
301

被折叠的 条评论
为什么被折叠?



