- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高中信息竞思赛贪心算法
贪心策略 引 例 贪心算法 贪心的定义:指从问题的初始状态出发,向给定的目标推进。但不同的是,推进的每一步不是依据某一固定的递推式,而是作一个当时看似最佳的贪心策略,不断地将问题实例归纳为更小的相似的子问题,并期望通过所做的局部最优选择产生出一个全局最优解。 重点:贪心策略的选取。 贪心与递推的区别是:推进的每一步不是依据一个固定的递推式,而是做一个当时看似最优的贪心选择。 贪心是一种解题策略,也是一种解题思想 使用贪心方法需要注意局部最优与全局最优的关系,选择当前状态的局部最优并不一定能推导出问题的全局最优 几个简单的贪心问题 应用举例1---部分背包问题 贪心策略求解的问题 应用举例2---删数问题 应用举例3---纪念品分组2005 应用举例3---纪念品分组2005 方法一:用快排 方法二:用桶排序 应用举例4---排队打水问题 应用举例5---取数游戏2341 方法与技巧 应用举例6---混合牛奶1648 应用举例7---数列极差问题1647 应用举例7---均分纸牌 应用举例8---均分纸牌 应用举例7---均分纸牌 贪心的经典应用 一、不相交的区间选择 【培训试题】活动选择1649 二、区间选点 【培训试题】整数区间1650 三、区间覆盖 【培训试题】线段覆盖1893 四、流水作业调度 五、任务时间表问题 六、最优合并问题 七、Huffman编码 Description: 给出数轴上N条线段,第i条线段用两个数表示Ai,Bi(AiBi),表示从Ai到Bi的一条线段。现在请求出它们覆盖数轴上的多长距离 (Ai、Bi的绝对值可能达到10^9) 。 Input: 第一行:N,以后N行,每行两个数:Ai Bi Output: 一个数,表示覆盖长度 Sample Input 3 2 8 -1 1 5 10 Sample Output: 10 ? n个作业要在由两台机器M1和M2组成的流水线上完成加工. 每个作业i必须先在M1上然后在M2上加工, 时间分别为ai和bi; ? 确定这n个作业的加工顺序, 使得从第一个任务开始在M1上加工到最后一个任务在M2上加工完成的总时间尽量小; ? 直观上, 最优调度一定让M1没有空闲, M2的空闲时间尽量少; ? Johnson算法. 设N1为ab的作业集合, N2为a=b的作业集合, 将N1的作业按a非减序排序, N2中的作业按照b非增序排序, 则N1作业接N2作业构成最优顺序. ? 程序易于实现, 时间O(nlogn), 关键在于正确性证明。 例:加工生产调度 【问题描述】:某工厂收到了n个产品的订单,这n个产品分别在A、B两个车间加工,并且必须先在A车间加工后才可以到B车间加工。 某个产品i在A、B两车间加工的时间分别为Ai、Bi。怎样安排这n个产品的加工顺序,才能使总的加工时间最短。这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在A、B两车间加工完毕的时间。 【输入】:第一行仅—个数据n(0n1000),表示产品的数量。接下来n个数据是表示这n个产品在A车间加工各自所要的时间(都是整数)。最后的n个数据是表示这n个产品在B车间加工各自所要的时间(都是整数)。 【输出】:第一行一个数据,表示最少的加工时间;第二行是一种最小加工时间的加工顺序。 【样例输入】: 5 3 5 8 7 10 6 2 1 4 9 【样例输出】:34 【算法分析】:本题求一个加工顺序使得加工总时间最短,要使时间最短,则就是让机器的空闲时间最短。一旦A机器开始加工,则A机器将会不停的进行作业,关键是B机器在加工过程中,有可能要等待A机器。很明显第一个部件在A机器上加工时,B机器必须等待,最后一个部件在B机器上加工,A机器也在等待B机器的完工。 可以大胆猜想,要使总的空闲的最少,就要把在A机器上加工时间最短的部件最先加工,这样使得B机器能以最快的速度开始加工;把在B机器上加工时间最短的部件放在最后加工。这样使得A机器能尽快的等待B机器完工。于是我们可以设计出这样的贪心法: 设Mi=min{ai, bi} 将M按照从小到大的顺序排序。然后从第1个开始处理,若Mi=ai,则将它排在从头开始的已经作业后面,若Mi=bi,则将它排在从尾开始的作业前面。 例如:N=5 (a1,a2,a3,a4,a5)=(3,5,8,7,10) (b1,b2,b3,b4,b5)=(6,2,1,4,9) 则(m1,m2,m3,m4,m5)=(3,2,1,4,9) 排序之后为(m3,m2,m1,m4,m5) 处理m3:∵m3=b3 ∴m3排在后面;加入m3之后的加工顺序为( , , , ,3);
您可能关注的文档
最近下载
- 2023年云南大学滇池学院网络工程专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
- 油水井动态分析方法.pptx VIP
- 风机吊装安全技术交底交底.docx VIP
- 2023年云南大学滇池学院计算机科学与技术专业《数据结构与算法》科目期末试卷B(有答案).docx VIP
- 高考志愿填报样表.doc VIP
- 论剧版《繁花》的叙事策略与主题.docx VIP
- 阳煤丰喜肥业(集团)有限责任公司临猗分公司“8·31”煤气过滤器导淋排液中毒事故调查报告.doc VIP
- 人工智能引论知到智慧树期末考试答案题库2025年浙江大学.docx VIP
- 2023年广东珠海中考地理真题及答案.doc VIP
- 2022年云南大学滇池学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
文档评论(0)