c++课堂——贪心算法

本文介绍了贪心算法的概念,包括其基本思路(建立数学模型、子问题分解和合成解)、适用条件(局部最优解导出全局最优)、实现框架以及贪心策略的选择。通过硬币找零问题举例,阐述了如何判断问题是否适合采用贪心算法。
摘要由CSDN通过智能技术生成

一、贪心算法

如果找出局部最优解并可以推出全局最优解,就是贪心
如果有四种硬币:二角五分、一角、五分、一分
现在要找给某顾客六角三分钱,哪种找钱方法拿出的硬币个数最少呢?
如果要找的是4角呢?

二、概念

        所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择 。也就是说,
不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
        贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪
心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状
态以后的过程不会影响以前的状态,只与当前状态有关。
        所以对所采用的贪心策略一定要仔细分析其是否满足无后效性。

三、介绍

        一、基本思路
                1.建立数学模型来描述问题。
                 2.把求解的问题分成若干个子问题。
                3.对每一子问题求解,得到子问题的局部最优解。
                4.把子问题的解局部最优解合成原来解问题的一个解。
        二、适用问题
                贪心策略适用的前提是: 局部最优策略能导致产生全局最优解
        三、实现框架
                从问题的某一初始解出发;
                while (能朝给定总目标前进一步){
                        利用可行的决策,求出可行解的一个解元素;
                }
                由所有解元素组合成问题的一个可行解; 四、贪心策略的选择
                因为用贪心算法只能通过 解局部最优解 的策略来达到全局最优解,因此,一定要注意断
                问题是否适合采用贪心算法策略,找到的解是否一定是问题的最优解。
相关作品:mjyleon的博客系列作品​​​​​​​
  • 25
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值