贪心算法

一,贪心算法的思想

贪心算法通过一系列的选择得到问题的最优解,它做出的每一个选择都是当前状态下的局部最优解,即贪心选择。


二,贪心算法的基本要素

贪心算法求解的问题的一般特征

1,贪心选择性质

是指所解问题的最优解可以通过一系列局部最优解的选择,即贪心选择来达到。


2,最优子结构性质

当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。


三,贪心算法与动态规划的区别

1,贪心算法和动态规划算法都要求问题具有最优子结构性质,这是两类算法的共同点。

2,贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。在动态规划算法中,每步所作出的选择往往依赖于相关子问题的解,因而只有在解出相关子问题后,才能作出选择。在贪心算法中,仅在当前状态下作出最优选择,即局部最优选择,然后再去解出做出这个选择后产生的相关子问题。正是由于这种差别,动态规划算法通常以自底向上的方式解各个子问题,而贪心算法通常以自顶向下的方式进行,以迭代方式做出相继的贪心选择,每做一次贪心选择就将所求问题转换为规模更小的子问题。


四,常见的使用贪心算法求解的问题

1,活动安排问题

struct Interval{
    int start;
    int end;
};

void GreedySelector(vector<Interval> &intervals, vector<bool> &A){
    int pre = 0;
    A[0] = true;
    for(int i = 1; i < intervals.size(); i ++){
        if(intervals[i].start >= intervals[pre].end){
            A[i] = true;
            pre = i;
        } else {
            A[i] = false;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值