- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Good morning! 贪心算法 -----总是作出现在看来最好的选择。 顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。 虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。 8.1 活动安排问题 活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。 8.1 活动安排问题 8.1 活动安排问题 策略:每次总是选择具有最早完成时间的相容活动。 前提: 把所有活动以其完成时间的非减序排列。 分析:直观上,按这种方法选择相容活动为未安排活动留下尽可能多的时间。也就是说,该算法的贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。 8.1 活动安排问题 例:设待安排的11个活动的开始时间和结束时间按结束时间的非减序排列如下: 8.1 活动安排问题 templateclass Type void GreedySelector(int n, Type s[], Type f[], bool A[]) { A[1]=true; int j=1; for (int i=2;i=n;i++) { if (s[i]=f[j]) { A[i]=true; j=i; } else A[i]=false; }} 8.1 活动安排问题 若被检查的活动i的开始时间Si小于最近选择的活动j的结束时间fi,则不选择活动i,否则选择活动i加入集合A中。 贪心算法并不总能求得问题的整体最优解。但对于活动安排问题,贪心算法greedySelector却总能求得的整体最优解,即它最终所确定的相容活动集合A的规模最大。这个结论可以用数学归纳法证明。 8.2 贪心算法的基本要素 对于一个具体的问题,怎么知道是否可用贪心算法解此问题,以及能否得到问题的最优解呢?这个问题很难给予肯定的回答。 但是,从许多可以用贪心算法求解的问题中看到这类问题一般具有2个重要的性质:贪心选择性质和最优子结构性质。 8.2 贪心算法的基本要素 1、贪心选择性质 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。 贪心算法和动态规划算法都要求问题具有最优子结构性质,这是2类算法的一个共同点。 但是,对于具有最优子结构的问题应该选用贪心算法还是动态规划算法求解?是否能用动态规划算法求解的问题也能用贪心算法求解? 下面研究2个经典的组合优化问题,并以此说明贪心算法与动态规划算法的主要差别。 8.2 贪心算法的基本要素 0-1背包问题: 给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 背包问题: 与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,1≤i≤n。 首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。 void Knapsack(int n,float M,float v[],float w[],float x[]) { Sort(n,v,w); int i; for (i=1;i=n;i++) x[i]=0; float c=M; for (i=1;i=n;i++) { if (w[i]c) break; x[i]=1; c=c-w[i]; } if (i=n) x[i]=c/w[i];} 对于0-1背包问题,贪心选择之所以不能得到最优解是因为在这种情况下,它无法保证最终能将背包装满,部分闲置的背包空间使每公斤背包空间的价值降低了。 8.3 单
您可能关注的文档
- 基于SOA的科研管理系统的分析和设计.pdf
- 第七章 Lch13_光盘存储格式.pdf
- 2007年第一次临时股东大会会议材料文件目录详解.pdf
- 第七章 LCH-XZCS-I蓄电池在线监测装置.doc
- 2007年计算机过级考试详解.doc
- 基于STM32光照篇能系统.doc
- 2007年监理工程师执业资格考试《合同管理》真题与答案.pdf
- 基于TMS320VC5509的数据处理与其USB传输系统.pdf
- 第七章 LCM 液晶模组 文字解决方案.pdf
- 基于UDDI的应用服务注册中心的设计和实现.pdf
- 仙桃市2026年公费师范生、“国优计划”等优秀师范生专项招聘备考题库及1套参考答案详解.docx
- 仙桃市2026年公费师范生、“国优计划”等优秀师范生专项招聘备考题库及一套答案详解.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库带答案详解.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库完整答案详解.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库有答案详解.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库完整参考答案详解.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库及答案详解1套.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库及答案详解一套.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库及答案详解1套.docx
- 仁怀市九仓镇卫生院2026年乡村医生公开招聘备考题库及参考答案详解一套.docx
原创力文档


文档评论(0)