关于贪心算法的一个小结

这篇具有很好参考价值的文章主要介绍了关于贪心算法的一个小结。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下面的内容主要参考了数据结构与算法之美。

贪心算法的应用有:

  1. 霍夫曼编码(Huffman Coding)

  2. Prim和Kruskal最小生成树算法

  3. 01背包问题(当允许取部分物品的时候)

  4. 分糖果
    我们有m个糖果和n个孩子。我们现在要把糖果分给这些孩子吃,但是糖果少,孩子多(m<n),所以糖果只能分配给一部分孩子。每个糖果的大小不等,这m个糖果的大小分别是s1,s2,s3,……,sm。除此之外,每个孩子对糖果大小的需求也是不一样的,只有糖果的大小大于等于孩子的对糖果大小的需求的时候,孩子才得到满足。假设这n个孩子对糖果大小的需求分别是g1,g2,g3,……,gn。
    如何分配糖果,能尽可能满足最多数量的孩子?
    我们可以把这个问题抽象成,从n个孩子中,抽取一部分孩子分配糖果,让满足的孩子的个数(期望值)是最大的。这个问题的限制值就是糖果个数m。
    我们现在来看看如何用贪心算法来解决。对于一个孩子来说,如果小的糖果可以满足,我们就没必要用更大的糖果,这样更大的就可以留给其他对糖果大小需求更大的孩子。另一方面,对糖果大小需求小的孩子更容易被满足,所以,我们可以从需求小的孩子开始分配糖果。因为满足一个需求大的孩子跟满足一个需求小的孩子,对我们期望值的贡献是一样的。
    我们每次从剩下的孩子中,找出对糖果大小需求最小的,然后发给他剩下的糖果中能满足他的最小的糖果,这样得到的分配方案,也就是满足的孩子个数最多的方案。

  5. 假设我们有n个区间,区间的起始端点和结束端点分别是[l1, r1],[l2, r2],[l3, r3],……,[ln, rn]。我们从这n个区间中选出一部分区间,这部分区间满足两两不相
    交(端点相交的情况不算相交),最多能选出多少个区间呢?
    这个问题的解决思路是这样的:我们假设这n个区间中最左端点是lmin,最右端点是rmax。这个问题就相当于,我们选择几个不相交的区间,从左到右将[lmin,rmax]覆盖上。我们按照起始端点从小到大的顺序对这n个区间排序。
    我们每次选择的时候,左端点跟前面的已经覆盖的区间不重合的,右端点又尽量小的,这样可以让剩下的未覆盖区间尽可能的大,就可以放置更多的区间。这实
    际上就是一种贪心的选择方法。

  6. 在一个非负整数 a 中,我们希望从中移除 k 个数字,让剩下的数字值最小,如何选择移除哪 k 个数字呢?
    由最高位开始,比较低一位数字,如高位大,移除,若高位小,则向右移一位继续比较两个数字,直到高位大于低位则移除,循环k次,如:
    4556847594546移除5位-》455647594546-》45547594546-》4547594546-》4447594546-》444594546

  7. 假设有 n 个人等待被服务,但是窗口只有一个,每个需要被服务的时间长度是不同的,如何安排被服务的先后顺序,才能让这 n 个人总的等待时间最短
    由等待时间最短的开始服务

注意:Dijkstra不是贪心算法,事实上它是动态规划算法,求得的解全局最优解文章来源地址https://www.toymoban.com/news/detail-591417.html

到了这里,关于关于贪心算法的一个小结的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Java注解的一些理解 小结

    目录 1. 常用注解和理解 2. 自定义注解 2.1 案例背景 2.2 设计思路 3 总结 注解在我的理解下,就是代码中的特殊标记,这些标记可以在 编译、类加载、运行时 被读取,并执行相对应的处理。 可能有些抽象,简单来说注解其实在开发中是非常常见的,比如我们在使用各种框架时

    2023年04月23日
    浏览(42)
  • 关于WiFi无线网络故障处理小结

    WiFi故障处理之软件:监视你的连接 尽管大部分优化WiFi网络的工作都只涉及硬件,但软件同样能发挥重要的作用。 还有一些软件程序可能也有帮助,可以显示你的IP地址以及数据能以多快的速度进出你的电脑。 如果你电脑上的程序运行很慢的话,WiFi安全测试可能会帮你找出

    2024年02月08日
    浏览(46)
  • 小结笔记:多位管理大师关于管理的要素的论述

    最近在看《刘澜管理学》,其中有提到多位管理大师关于管理的要素的论述,笔记如下: 法约尔的管理五要素 这就是在前言中提到过的法约尔的管理五要素模型。 第一个“管理”学者 法约尔可以说是第一个专门的“管理”学者。在法约尔之前,没有人专门思考过 全面的、一

    2024年02月08日
    浏览(58)
  • [Java]关于基本数据类型与引用类型赋值时的底层分析的小结(简述)

    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17969159 出自【进步*于辰的博客】 目录 1、关于赋值 1.1 基本数据类型赋值 1.2 String类型赋值 2、关于String赋值 2.1 情形一 2.2 情形二 3、关于String与char[]的比较 4、不同类型引

    2024年01月17日
    浏览(42)
  • 关于使用SSM+JSP开发时setter、getter隐式调用问题的小结

    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17977495 出自【进步*于辰的博客】 之前使用SSM+JSP做网站开发,由于没有注意setter、getter的隐式调用问题,出现了多次bug,对开发进度影响挺大。因此,特来作这篇文章跟大

    2024年01月21日
    浏览(58)
  • 蚁群算法小结及算法实例(附Matlab代码)

    目录 1、基本蚁群算法 2、基本蚁群算法的流程 3、关键参数说明 3.1 信息素启发式因子 α 3.2 期望启发因子 β 3.3 信息素蒸发系数 ρ 3.4 蚂蚁数目 m 3.5 信息素强度 Q 对算法性能的影响 3.6 最大进化代数 G 4、MATLAB仿真实例 4.1 蚁群算法求解旅行商问题(TSP) 蚁群算法求解旅行

    2023年04月08日
    浏览(56)
  • 机器学习小结之KNN算法

    ​ KNN (K-Nearest Neighbor)算法是一种最简单,也是一个很实用的机器学习的算法,在《 机器学习实战 》这本书中属于第一个介绍的算法。它属于基于实例的 有监督学习 算法,本身不需要进行训练,不会得到一个概括数据特征的 模型 ,只需要选择合适的参数 K 就可以进行应用。

    2024年02月06日
    浏览(78)
  • 算法笔记day1小结

    最近在通过胡凡的算法笔记一书学习算法,准备开个帖子记录下每日学习进展,话不多说那就开始吧! 定义:内存地址称为指针 , 指针变量即存储地址的变量。(虽然有点绕口,但可以理解为指针就是一个地址,对应着内存中的一个存储单元。unsigned类型的整数)。 指针的

    2024年02月19日
    浏览(50)
  • 贪心算法问题实验:贪心算法解决TSP问题

    TSP问题是指旅行商问题,即给定一组城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中有着广泛的应用。 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最

    2024年02月03日
    浏览(44)
  • 算法竞赛备赛之贪心算法训练提升,贪心算法基础掌握

    905.区间选点 给定N个闭区间[ai, bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量,位于区间端点上的点也算作是区间内。 将每个按区间的右端点从小到大排序 从前往后依次枚举每个区间 如果当前区间中已经包含点,则直

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包