贪心算法解决活动安排问题研究.doc_第1页
贪心算法解决活动安排问题研究.doc_第2页
贪心算法解决活动安排问题研究.doc_第3页
贪心算法解决活动安排问题研究.doc_第4页
贪心算法解决活动安排问题研究.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

贪心算法解决活动安排问题研究摘要:利用贪心算法解决如何使用最少的资源安排一系列活动。并证明了贪心算法解决此问题的有效性,且进行了实例验证,并进行了复杂度分析,此算法是解决资源组合规划问题较好的方法。关键词:贪心算法;java程序;复杂度分析;活动安排问题中图分类号:tp312文献标识码:a文章编号:16727800(2011)012004302基金项目:广西研究生教育创新计划(2011106020812m58)作者简介:苏方方(1986-),女,河南商丘人,广西师范大学计算机科学与信息工程学院硕士研究生,研究方向为自然语言处理和算法;张金玲(1986-),女,山东菏泽人,广西师范大学计算机科学与信息工程学院硕士研究生,研究方向为远程教育和算法。0引言假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。这里就需要选用合适的算法来解决类似的问题。虽然计算机的计算能力每年都在飞快增加,但是,需要处理的信息量更是呈指数级的增长。互联网的信息流量在飞快进步,数据量更是达到了前所未有的程度。无论是三维图形,海量数据处理等都需要极大的计算量。在网络时代,越来越多的挑战需要靠卓越的算法来解决。1贪心算法以及贪心算法的基本要素贪心算法是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值(或较优解)的一种解题方法。并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解。贪心算法可以简单描述为:对一组数据进行排序,找出最小值,进行处理,再找出最小值, 再处理。也就是说贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望得到结果是最好或最优的算法。贪心算法解题步骤:从问题的某个初始解出发;采用循环语句,就根据局部最优策略,得到一个部分解,缩小问题的范围或规模;将所有部分解综合起来,得到问题的最终解。另外它也是一种某种度量意义下的最优解的分级处理方法。对于一个具体的问题,怎么知道是否可用贪心算法来解决问题,以及能否得到问题的一个最优解呢?从许多可以用贪心算法求解的问题中可以看到它们一般具有两个重要的性质:贪心选择性质;最优子结构性质。另外,同一个问题可用不用算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。一个算法的评价主要从时间复杂度和空间复杂度来考虑。2用贪心算法描述问题贪心算法高效地解决了一系列活动争用某一个公共资源的问题,本文主要研究的是n个活动全部安排所需要的最少资源数。面对资源的日益紧缺,如何有效合理地利用资源一直是专家学者研究的热点问题。用贪心算法解决本题的思想是:资源足够多,但要使用最少的资源安排全部活动,同时保证每个资源中安排的活动集在时间上不能发生冲突。如果第一个资源中尽可能安排最多的活动,则这个资源得到了充分的利用,而且剩下的活动越少,第二个资源也尽可能安排最多的活动,依次类推。以下我们证明该问题具有贪心算法的两个性质:(1)活动安排问题具有贪心选择性质证明:首先将活动安排问题数学化,设有n个活动的集合 e= 1 ,2 ,n ,每个活动 i 都有一个要求使用该资源的起始时问si 和一个结束时问fi 。即k是所需最少资源的个数。设活动已排序,( a1 , a2 , ,ak )是所需要的k个已安排了活动的资源。当k = 1时,也就是所有的活动在一个资源里相容,a1 是满足贪心选择性质的最优解;当k = 2时,取b1=a1,bk=ak (即bk是安排了m个活动的一个资源,(n-m)个活动都安排在b1 到bk-1个资源里)。就是(n-m)个活动安排需要(k -1)个资源。则(b1,b2 ,bk-1 )是(n - m)个活动可行解。另一方面,由( a1 ,a2,ak)-ak=(b1,b2,bk-1)知,(b1,b2,bk-1)也是满足贪心选择性质的最优解,所以,活动安排问题具有贪心选择性质。(2)活动安排问题具有最优子结构性质证明:( a1,a2, ,ak )是n个活动的集合e= 1,2 ,n 所需资源的最优解。设a1中安排了m个相容的活动,那么也就是说(n-m)个活动完全安排需要k-1个资源。假设(n - m)个活动安排只需要k-2个资源或则更少的资源。也就是说n个活动安排只需要k-1个资源就可以安排完,则前后出现矛盾。一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。3程序清单及复杂性分析算法的复杂性是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性,需要空间资源的量称为空间复杂性,由于计算机的快速发展,计算机的空间资源很少作为考虑的对象,目前最为关注的就是时间复杂性。利用数组解决活动安排问题。程序的思想:设有n个活动等待安排,这些活动的起始时间和结束时间分别存放在数组 start和 finish中,定义了一个整型变量flag用于标记活动是否被分配了资源。要对活动的开始时间与已分配的资源里最后被添加进去的活动的结束时间进行比较,如果大于,则把该活动添加进此资源,否则继续与其他资源的最后被添加的活动的结束时间进行比较,如果所有的已分配资源均安排不了,则分配一个新资源来安排此活动。程序清单如下:public class needsourcestatic int start =1,3,0,5,3,5,6,8,8,2,12;/活动开始时间数组;static int finish=4,5,6,7,8,9,10,11,12,13,14;/活动结束时间数组 public static void main(string args) int i,j,flag=0; int num=new int11;int m=new int100; /有足够多的资源 int source=1; /初始化,n个活动至少需要一个资源 int n=start.length; /活动的个数(一共有多少个活动) num0=1; /numi=j;编号为i的活动安排在第j个资源里 m1=0; /资源1中最后被添加进来的活动编号是0;for(i=1;i=finishmj) /最后被添加进来的活动结束时间相比;numi=j;/把i活动安排在j资源里;mj=i; /记录最后被添加到j中的i活动;flag=1; /标记活动已被分配到了资源 ;h=j; /j的值是变化的。赋值h以记录值;if(flag=1)/活动被安排了,则跳出循环;break; ;if(flag=1)else numi=h+1;/所有的资源都不能安排,则添加新资源 mh+1=i; /记录最后添加到j+1中的活动isource+; flag=0; system.out.println(source); 结果及分析:程序实现了在控制台打印出所需要资源的个数。运行程序结果显示5,与手工测算结果相同。复杂性分析:语句、是给数组赋值语句,是0操作;语句的循环控制变量i要从1增加到n,故它的频度是n。语句的循环控制变量j是从1增加到source,但是source无论什么情况下都小于n,则语句最多循环了(1+2+3+n)=(n2)/2,而语句的循环体中语句因为每次都需要判断,所以频度也是0(n2);语句、执行的次数是一样的。并且和语句else循环体中的执行次数加起来正好是0(n2);语句、执行次数是0(n2);语句最多执行n次;语句的频度n;该算法中所有语句的频度之和(即算法的时间耗费)为: t(n)=0(1)+ 20(1)+0(n)+0(n2)+0(n2)+30(n2)+20(n2)+20(n);所以时间复杂度是0(n2);4结束语本文对初步资源规划问题的思考,可以对多个资源组合规划问题的基础研究提供有效的参考作用。目前多个资源组合规划问题在现实研究中仍有许多不尽人意的地方,如何设计实用的算法解决多个资源组合规划问题,是值得我们不断研究探讨的课题。 参考文献:1肖衡浅析贪心算法j办公自动化杂志,2009(10).2常又渠,肖贵元贪心算法的探讨与研究j重庆电力高等专科学校学报,2008(2).3王晓东计算机算法设计与分析m北京:电子工业出版社, 2007research on greedy algorithm to solve the activity arrangementabstract: to use the greedy algorithm solves how to arrange a series of activities with minimal resources. it proves that it is effective to solve this problem with greedy algorithm and a examp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论