贪心算法

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。该算法求解问题需要满足贪心选择性质和最优子结构。通过活动安排问题举例说明了贪心算法的应用,活动按结束时间升序排列,每次选取结束最早的活动,直至无法再选择。
摘要由CSDN通过智能技术生成

1.贪心算法定义
    贪心算法求解问题时,在每一步都采用当时看起来的最佳选择,它总是作出局部最优选择。决策一旦作出,就不可再更改。这个局部最优决策依照的标准称为贪心准则。

2.贪心算法求解问题的前提条件
(1)贪心选择性质
    在求解一个问题的过程中,如果每一个阶段的选择都是当前状态下的最优选择,即局部最优选择,并且最终能够求得问题的整体最优解,则该问题可以通过贪心选择来求解,这时就说此问题具有贪心选择性质。
(2)最优子结构性质
    当一个问题的最优解包含了这个问题的子问题的最优解,就说这个问题具有最优子问题结构。

3.贪心算法与动态规划
    动态规划每一次选择都依赖于子问题的解。采用自底向上的方式求解,先求解较小的子问题,然后是较大的子问题。因此,动态规划要先求解子问题才能进行第一次选择。
    贪心算法是自顶而下求解的。先作出当前看来最佳的选择,然后求解剩下的唯一的子问题。贪心算法在第一次选择之前不需要求解任何子问题。

4.例子

4.1 活动安排问题
    有n项活动需要使用同一个会场,任意两个活动不能同时使用这个会场。每个活动都有一个开始时间si和结束时间fi,活动i占用会场的时间是[si,fi)。如果两个活动[si,fi)和[sj,fj)的区间不相交,则活动i和活动j能够在同一会场的不同时间段进行。我们的目的是通过贪心算法使得尽可能多的活动可以在会场中进行。假设活动已经按照结束时间的单调递增顺序排序。
                           f1≤f2≤f3≤…≤fn
    活动集S如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值