- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计报告
贪心算法:任务调度问题
专业 计算机科学与技术(软件工程) 学生姓名 陈亮 班级 BM计算机091 学号 0951401134 指导教师 吴 素 芹 起止日期 2011.1.10-2011.1.14
目 录
1 简介 1
2算法说明 2
3测试结果 2
4分析与探讨 8
5小结 11
参考文献 11
附 录 12
附录1 源程序清单 12
贪心算法
1 简介
贪心算法通过一系列的选择来得到一个问题的解。它所做的每一个选择都是当前状态下某种意义的最好选择,即贪心选择。希望通过每次所做的贪心选择导致最终结果是问题的一个最优解。这种启发式的策略并不总奏效,然而许多情况下确能达到预期的目的。
下面来看一个找硬币的例子。假设有四种面值的硬币:一分、两分、五分和一角。现在要找给某顾客四角八分钱。这时,一般都会拿出四个一角、一个五分、一个两分和一个一分的硬币递给顾客。这种找硬币的方法与其他的方法相比,它所给出的硬币个数是最少的。在这里,就是下意思的使用了贪心算法(即尽可能地先考虑大币值的硬币)。贪心算法并不是从整体最优加以考虑,它所做出的选择只是局部最优选择。一些问题中,使用贪心算法得到的最后结果并不是整体的最优解,这时算法得到的是一次最优解(Suboptimal Solution)。在上述的问题中,使用贪心算法得到的结果恰好就是问题整体的最优解。
对于一个具体的问题,怎么知道是否可用贪心算法来解此问题,以及能否得到问题的一个最优解呢?这个问题很难给予肯定的回答。但是,许多可以用贪心算法求解的问题中一般具有两个重要的性质:贪心选择性质和最优子结构性质。
所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择即贪心选择来达到,这是贪心算法可行的第一个基本要素。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做的贪心选择最终将会得到问题的一个整体最优解。首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。而且做了贪心选择后,原问题化简为一个规模更小的类似子问题。然后,用数学归纳法证明,通过每一步做贪心选择,最终可得到问题的一个整体最优解。其中,证明贪心选择后的问题简化为规模更小的类似子问题的关键在于利用该问题的最优结构性质。
得注意的是,贪心算法并不是完全不可以使用,贪心策略一旦经过证明成立后,它就是一种高效的算法。
贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很困难。
可惜的是,它需要证明后才能真正运用到题目的算法中。
一般来说,贪心算法的证明围绕着:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的。2算法说明
有n项任务,要求按顺序执行,并设定第i项任务需要t[i]单位时间。如果任务完成的顺序为1,2,。。。,n,那么第i项任务完成的时间为c[i]=t[1]+….+t[i],平均完成时间即为(c[1]+....+c[n])/n.本题要求找到最小的任务平均完成时间。
输入要求:
输入数据中包含几个测试案例。每一个案例的第一行给出一个不大于2000000的整数n,接着下面一行开始列出n个肺负整数t(t=1000000000),每个数之间用空格相互隔开,以一个负数来结束输入。
输出要求:
对每一个测试案例,打印它的最小平均完成时间,并精确到0.01。每个案例对应的输出结果都占一行。若输入某一个案例中任务数目n=0,则对应输出一个空行。
输入例子:
4
4 2 8 1
-1
表示有四个任务,各自完成需要的时间单位分别是4,2,8,1,第三行输入-1表示输入结束。
输出例子:
要求程序运行后的输出结果为:6. 50
1.贪心选择性质?? 所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。?? 动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。 ?? 对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。2.最优子结构性质?? 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。3.贪心算法与动态规划算法的差异??? ?? 贪心算法和动态规划算法都要求问题具有最优子结构
文档评论(0)