文章目录

  • 前言
  • 一、贪心法设计思想
  • 二、贪心法的基本要素
  • 三、贪心法的优缺点
  • 四、贪心法的设计步骤
  • 五、贪心法示例
  • 总结

前言

大家好,越努力,越幸运,我是程序猿小猿。本篇文章小猿将跟您分享算法设计与分析中的贪心法,希望对您有所帮助。

一、贪心法设计思想

贪心法总是做出在当前看来最好的选择,一旦做出了选择,不管将来有什么结果,这个选择都不会改变。也就是说贪心法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心法得到的最终结果也是整体最优的。虽然贪心法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。

几点说明:
        1、问题的求解过程看作是一系列选择,每次选择一个输入,每次选择都是当前状态下的最好选择(局部最优解)。每做一次选择后,所求问题会简化为一个规模更小的子问题。从而通过每一步的最优解逐步达到整体的最优解。
        2、贪心法也是一个多阶段决策方法。每一步选择都能构成问题的一个可行解,同时使目标函数的值增加最快(求max)或增加最慢(求min),这种选择过程是以某些量度标准(贪心选择策略)为根据,而量度标准有时可以是目标函数本身,也可以是别的量度。
        3、量度标准的选择是贪心法的关键。

二、贪心法的基本要素

贪心法的基本要素是贪心选择性质和最优子结构性质。一个问题可用贪心法求得整体最优解,需要证明问题的贪心选择性和最优子结构性质!
        下面分别对贪心法的这两个基本要素进行介绍:

1、贪心选择性
        所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。
        注意点
        1、贪心选择性是贪心算法可行的第一个基本要素。
        2、贪心选择性是贪心算法与动态规划算法的主要区别。动态规划法:先求解出相关子问题的解,再做出选择;贪心法:先做出局部选择,再求解出由该选择产生的相应子问题的解。动态规划法通常以自底向上的方式解各子问题,而贪心法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每做一次贪心选择就将所求问题简化为规模更小的子问题。
        简单的说贪心法与动态规划法的区别是:
        贪心法是按一定顺序一定的策略,每一步得到一个结果传递到下一步,自顶向下,一步一步地作出贪心选择;只能解决通过局部最优的策略能达到全局最优的问题;
        动态规划法是根据一定的决策,每一步决策出的不是一个结果,而只是使问题的规模不断的缩小。
        3、确定一个问题是否具有贪心选择性质,需要证明问题的一个整体最优解是从贪心选择开始的。

2、最优子结构性质
        当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。
        注意点
        最优子结构性质是可用动态规划法或贪心法求解的关键特征。

三、贪心法的优缺点

优点
        求解速度快、时间复杂性有较低的阶。

缺点
        通常需要证明算法的最优性,即能够求得问题的最优解。

四、贪心法的设计步骤

设计步骤
1、确定求解问题的输入
        贪心法求解的问题往往有n个输入;
2、选择量度标准
        必须选择量度标准,以便求得可行解;
3、求可行解,并检验是否满足约束条件
        求解可行解的过程,以及可行解本身,必须满足约束条件;
4、设定目标函数
        设定目标函数,以便衡量一个可行解的"优劣";

设计过程中需要考虑的几个方面
        1、候选集合C:为了构造问题的解决方案,有一个候选集合C作为问题的可能解,即问题的最终解均取自于候选集合C。
        2、解集合S:随着贪心选择的进行,解集合S不断扩展,直到构成一个满足问题的完整解。
        3、解决函数solution:检查解集合S是否构成问题的完整解。
        4、选择函数select:即贪心策略,这是贪心法的关键,它指出哪个候选对象最有希望构成问题的解,选择函数通常和目标函数有关。
        5、可行函数feasible:检查解集合S中加入一个候选对象是否可行,即解集合扩展后是否满足约束条件。

注意点
        1、贪心法设计的关键是贪心策略的选择(量度标准)。
        2、选择的贪心策略要具有无后向性(即,某状态以后的过程和不会影响以前的状态,只与当前状态或以前的状态有关)。

贪心法的一般过程

五、贪心法示例

1、活动安排问题
2、背包问题
3、哈夫曼编码
4、Prim算法
5、Kruskal算法

总结

知识点总结
        1、贪心法的原理是:通过局部最优来达到全局最优,采用的是逐步构造最优解的方法。
        2、贪心法的基本思路:从问题的某一个初始解出发逐步逼近给定的目标,每一步都做一个不可回溯的决策,尽可能地求得最好的解。当达到某算法中的某一步不需要再继续前进时,算法停止。
        3、两大要素:贪心选择性、最优子结构性质
        4、贪心选择的结果不一定是最优结果,其求解问题的方式是"自顶向下"的。
        5、贪心法的最优性需要证明。

结语
        对贪心法的介绍就到这里啦,希望这篇文章能给予你一些帮助,感谢各位人才的:点赞、收藏和评论,我们下次见。

算法设计与分析之贪心法相关推荐

  1. 【算法设计与分析】-- 贪心法

    目录 一.基本思想 二.两个例子说明贪心算法的适用场景: 背包问题: 0-1背包问题: 三.活动安排问题(选择.调度问题) 问题描述 算法设计 算法复杂度 算法正确性证明 四.最优装载问题 问题描述 ...

  2. 算法设计与分析(贪心法)

      目录 一.贪心法的基本思想 二.贪心法的基本要素 1.最优子结构性质 2.贪心选择性质 三.贪心法的解题步骤及算法设计模式 步骤: 1.分解: 2.解决: 3.合并: 设计模式: 四.会场安排问题 ...

  3. 算法设计与分析-----贪心法

    算法设计与分析-----贪心法(c语言) 一.贪心法 1.定义 2.贪心法具有的性质 1.贪心选择性质 2.最优子结构性质 3.贪心法的算法框架 5.求解活动安排问题 6.求解最优装载问题 二. 贪心 ...

  4. 算法设计与分析入门篇----贪心法3

    正在网易云课堂学习王宏志老师的算法设计与分析入门篇课程视频,将学习中的作业问题发上来与大家一同讨论.这篇是对第五周的作业第三题个人的一些思路,希望与大家一同学习. 课程调度 题目内容: 有 n 个人, ...

  5. 算法设计与分析课程的时间空间复杂度

    算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...

  6. 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案

    <计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...

  7. 算法设计与分析-----动态规划

    算法设计与分析-----动态规划(c语言) 一.动态规划 1.定义 2.动态规划问题的解法 3.动态规划求解的基本步骤 4.动态规划与其他方法的比较 5.求解整数拆分问题 6.求解最大连续子序列和问题 ...

  8. 算法设计与分析练习题

    第一章 下列关于算法的说法中正确的有( ). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊 Ⅳ.算法执行后一定产生确定的结 ...

  9. 第一章 算法设计与分析基础知识

    系列文章目录 第一章 算法设计与分析基础知识 第二章 算法的分治策略 第三章 算法的动态规划 第四章 算法的贪心法 -- @[TOC](这里写目录标题) # 一级目录 ## 二级目录 ### 三级目录 ...

最新文章

  1. php函数剩余时间,php计算剩余时间的自定义函数
  2. 组件命名方式||局部组件注册:局部组件只能在注册他的父组件中使用
  3. cf769D(枚举位或运算)
  4. opencv3-Mat对象
  5. maven一键部署tomcat war包
  6. NPM酷库:cheerio,服务端jQuery接口实现
  7. jQuery height()、innerHeight()、outerHeight()函数的区别详解
  8. Oracle 进程 说明
  9. allego如何输出pdf_[LaTeX 尝试] 利用 PDF 附件和终端输出,从 Overleaf 里获得更多信息...
  10. linux进程加载和运行,linux进程管理之可执行文件的加载和运行
  11. Java毕业设计-漫画管理系统
  12. EXCEL中怎样能复制公式得来的数据(选择性粘贴)
  13. yt-dlp教程如何下载高清视频
  14. 玩转 IDEA 系列教程——强烈推荐官方中文(汉化)插件!
  15. 魅族20pro参数配置 魅族20pro值得买吗
  16. zdm各命令的功能和作用_利用ZDM菜单管线设计工具绘制管线步骤
  17. 一文看懂“摩根系”,摩根士丹利、摩根大通、大摩、小摩到底有什么关系?
  18. nas 软件 性能测试,五款NAS存储性能测试_企业存储数据保护-中关村在线
  19. SCAU 软件工程 期末复习
  20. 三驾马车与两大引擎并行,欢聚时代全球市场还大有可为

热门文章

  1. DM8168芯片级资源(一)
  2. 电动取暖器、加热器、暖风机UL 1278
  3. 先锋机器人3(Pioneer3)的基础操控
  4. P620 网络编程概述、IP的理解与InetAddress类的实例化
  5. 大数据基础知识科普--数据分层(ETL、ODS、DW、DWD、DWM、DWS、DIM)
  6. Java条件语句之 switch
  7. vhdl文件添加c语言头文件,C语言对VHDL设计文件的协同仿真 - 基于Modelsim FLI接口的协同仿真技术...
  8. SAHI: Slicing Aided Hyper Inference
  9. 斯蒂夫乔布斯传札记:第四波
  10. 哈利波特4 哈利波特与火焰杯