欢迎来到天天文库
浏览记录
ID:33858875
大小:239.50 KB
页数:16页
时间:2019-03-01
《贪心算法:任务调度问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实用标准文案数据结构课程设计报告贪心算法:任务调度问题专业计算机科学与技术(软件工程)学生姓名陈亮班级BM计算机091学号0951401134指导教师吴素芹起止日期2011.1.10-2011.1.14精彩文档实用标准文案目录1简介12算法说明23测试结果24分析与探讨85小结11参考文献11附录12附录1源程序清单12精彩文档实用标准文案贪心算法1简介贪心算法通过一系列的选择来得到一个问题的解。它所做的每一个选择都是当前状态下某种意义的最好选择,即贪心选择。希望通过每次所做的贪心选择导致最终结果是问题的一个
2、最优解。这种启发式的策略并不总奏效,然而许多情况下确能达到预期的目的。下面来看一个找硬币的例子。假设有四种面值的硬币:一分、两分、五分和一角。现在要找给某顾客四角八分钱。这时,一般都会拿出四个一角、一个五分、一个两分和一个一分的硬币递给顾客。这种找硬币的方法与其他的方法相比,它所给出的硬币个数是最少的。在这里,就是下意思的使用了贪心算法(即尽可能地先考虑大币值的硬币)。贪心算法并不是从整体最优加以考虑,它所做出的选择只是局部最优选择。一些问题中,使用贪心算法得到的最后结果并不是整体的最优解,这时算法得到的是一
3、次最优解(SuboptimalSolution)。在上述的问题中,使用贪心算法得到的结果恰好就是问题整体的最优解。对于一个具体的问题,怎么知道是否可用贪心算法来解此问题,以及能否得到问题的一个最优解呢?这个问题很难给予肯定的回答。但是,许多可以用贪心算法求解的问题中一般具有两个重要的性质:贪心选择性质和最优子结构性质。所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择即贪心选择来达到,这是贪心算法可行的第一个基本要素。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做的贪心选
4、择最终将会得到问题的一个整体最优解。首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。而且做了贪心选择后,原问题化简为一个规模更小的类似子问题。然后,用数学归纳法证明,通过每一步做贪心选择,最终可得到问题的一个整体最优解。其中,证明贪心选择后的问题简化为规模更小的类似子问题的关键在于利用该问题的最优结构性质。得注意的是,贪心算法并不是完全不可以使用,贪心策略一旦经过证明成立后,它就是一种高效的算法。 贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很困难。 可惜的
5、是,它需要证明后才能真正运用到题目的算当一个问题的最优解包含着它的子问题的最优解时,称此问题具有最优子结构性质,这个性质是该问题可用贪心算法求解的一个关键特征法中。 一般来说,贪心算法的证明围绕着:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的。精彩文档实用标准文案2算法说明有n项任务,要求按顺序执行,并设定第i项任务需要t[i]单位时间。如果任务完成的顺序为1,2,。。。,n,那么第i项任务完成的时间为c[i]=t[1]+….+t[i],平均完成时间即为(c[1]+....+c[n])/n.
6、本题要求找到最小的任务平均完成时间。输入要求:输入数据中包含几个测试案例。每一个案例的第一行给出一个不大于2000000的整数n,接着下面一行开始列出n个肺负整数t(t<=1000000000),每个数之间用空格相互隔开,以一个负数来结束输入。输出要求:对每一个测试案例,打印它的最小平均完成时间,并精确到0.01。每个案例对应的输出结果都占一行。若输入某一个案例中任务数目n=0,则对应输出一个空行。输入例子:44281-1表示有四个任务,各自完成需要的时间单位分别是4,2,8,1,第三行输入-1表示输入结束。
7、输出例子:要求程序运行后的输出结果为:6.501.贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。 动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。 对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。2.最优子结
8、构性质 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。3.贪心算法与动态规划算法的差异 精彩文档实用标准文案贪心算法和动态规划算法都要求问题具有最优子结构性质,这是2类算法的一个共同点。但是,对于具有最优子结构的问题应该选用贪心算法还是动态规划算法求解?是否能用动态规划算法求解的问题也能用贪心算法
此文档下载收益归作者所有