一、贪心算法 (Greedy Algorithm)

属于简单启发式算法。

贪心算法是指一种在求解问题时总是采取当前状态下最优的选择从而得到最优解的算法。

自顶向下的求解,可以在子问题求解之前贪婪的做出选择

二、贪心算法的基本步骤:

  1. 确定问题的最优子结构。

  2. 设计递归解,并保证在任一阶段,最优选择之一总是贪心选择。

  3. 实现基于贪心策略的递归算法,并转换成迭代算法。

看一个最简单的贪心算法:

ALgorithm Greedy(A,n){    solution := ϕ; //Initializing the solution    for i:= 1 to n do    {        x := select(A);        if Feasible(solution,x) then            solution := Union(solution, x);    }    return solution;}
  • A是一个大小为 n 的数组。

  • solution保存最终解

  • select 函数从数组中获取一个输入并将其删除。 我们将这个选定的输入值分配给 x。

  • Feasible是一个布尔函数,它决定我们是否可以将 x 包含在最终解中。

三、适用的场景

对于利用贪心算法求解的问题需要包含如下两个重要的性质:

  1. 所求问题具有最优子结构性质。

  2. 所求问题的整体最优解可以通过一系列局部最优的选择 (即贪心选择) 来达到。

https://leovan.me/cn/2019/04/heuristic-algorithms/

https://techvidvan.com/tutorials/greedy-algorithm/

零基础学启发式算法(1)-贪心算法(Greedy Algorithm)相关推荐

  1. 动态规划(Dynamic Programming)与贪心算法(Greedy Algorithm)

    文章目录 动态规划算法(Dynamic Programming) 动态规划问题的属性 应用实例:最长公共子序列问题(Longest Common Subsequence, LCS) 贪心算法(Gree ...

  2. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...

  3. 贪心算法 (Greedy Algorithm)

    贪心算法 如果要简要得描述这个算法的话就是,首先边的权重排序.(从小到大)循环的判断是否需要选择这里的边.判断的依据则是边的两个顶点是否已经连通,如果连通则继续下一条.不连通就选择使其连通. http ...

  4. 零基础学启发式算法(2)-局部搜索(Local Search)和爬山算法(Hill Climbing)

    一.局部搜索(Local Search) 局部搜索是一种近似算法(Approximate algorithms),是一种简单的贪心搜索算法.从一个候选解开始,持续地在其邻域中搜索,直至邻域中没有更好的 ...

  5. 冒泡排序python例题_零基础学python 15 经典算法:冒泡排序法(课后习题答案)...

    这节课我们对于冒泡排序法的课后习题进行一下解答: 回顾一下我们的题目: 上节课我们学习的冒泡排序法,是让我们的list从小到大进行排列,这次我们的任务是,请对冒泡排序法进行一定的修改,加一个参数,让它 ...

  6. 集成学习精讲02 - Bagging方法:多个基模型的聚合(SAP大神黄佳新作《零基础学机器学习》节选)

    我们将分为5篇文章介绍集成学习,分别是: 集成学习基础知识:偏差和方差 - 戳此阅读 Bagging - Boosting - 戳此阅读 Stacking/Blending - 戳此阅读 Voting ...

  7. 数据结构视频教程 -《零基础学算法》

    打包下载请访问:史上最全的数据结构视频教程系列分享之<零基础学算法>,转载请保留出处和链接! 更多优秀资源请访问:我是码农 本教程主要分为上.下两部分,共10章.上篇用5章的篇幅介绍了算法 ...

  8. 零基础学python培训需要学习多久?

    Python是一种入门比较简单的编程语言,但是如果是零基础学员,学习起来还是需要时间的,那么零基础学python培训需要学习多久呢?我们来看看小编的详细介绍吧. 零基础学python培训需要学习多久? ...

  9. python入门到精通需要学多久-廖雪峰python教程要学多久-零基础学Python需要多久...

    零基础学python大约需要多久 看不同的人,不同的学习能和基础. 像我通java,vc ,javascript,groovy,vb,c 接触过c#,delphi,asp,E语言, 用过dreamwa ...

  10. python零基础看什么视频和书籍-资料│最适合大学生零基础学的Python视频+电子书...

    原标题:资料│最适合大学生零基础学的Python视频+电子书 月最热资源下载 (▲点击阅读) 已经不少童鞋跟播妞咨询了python的资源 今天播妞将整理好的部分python资源发布 是最适合零基础大学 ...

最新文章

  1. 分布式事务seate-server的docker镜像的制作与部署
  2. 模板:二维凸包(计算几何)
  3. vba上传文件到ftp服务器指定目录下面
  4. 可优比和aag哪个好_火花塞多级和单级哪个性能更好?多就等于好?这可未必
  5. 要Java显示script文字_Javasrcipt---HTML中使用Javascript
  6. 百度编辑器复制微信图片无法保存
  7. paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.
  8. 【信号与系统|吴大正】4:信号分解、傅里叶变换与信号谱(下)
  9. win10任务栏开始菜单等系统图标点击无反应的解决方法
  10. 「深度」视觉的层次化处理过时了吗?
  11. R软件做线性回归分析
  12. 百度搜索框的测试点:
  13. 如何关闭 Linux 中的嘟嘟声
  14. NOI2009 诗人小G
  15. 汇编语言机器语言c语言区别,高级语言和汇编语言_机器语言的区别
  16. mysql bd2_mysqldbd
  17. 数理思维——数学运算
  18. 造血干细胞最新研究进展
  19. ANDROID以流形式上传文件
  20. 公文专用计算机,[计算机]常用公文写作方法.doc

热门文章

  1. 新闻发布系统,我学会了什么?
  2. OSPF中 HELL0包解析
  3. iOS 6 SDK: 在应用内展示App Store
  4. 我的计时软件TimeDogV13
  5. NOIP Day -151
  6. Long型转换成IP段String、StringIP段转换成Long型
  7. wannafly-day1 Problem A - Birthday
  8. Win10系统80端口被系统进程占用
  9. 九度OJ1451题-信封错装
  10. 简单易懂的排序算法演示