贪心算法解决活动安排问题研究.doc

上传人:b****2 文档编号:393170 上传时间:2022-10-09 格式:DOC 页数:7 大小:28.50KB
下载 相关 举报
贪心算法解决活动安排问题研究.doc_第1页
第1页 / 共7页
贪心算法解决活动安排问题研究.doc_第2页
第2页 / 共7页
贪心算法解决活动安排问题研究.doc_第3页
第3页 / 共7页
贪心算法解决活动安排问题研究.doc_第4页
第4页 / 共7页
贪心算法解决活动安排问题研究.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

贪心算法解决活动安排问题研究.doc

《贪心算法解决活动安排问题研究.doc》由会员分享,可在线阅读,更多相关《贪心算法解决活动安排问题研究.doc(7页珍藏版)》请在冰豆网上搜索。

贪心算法解决活动安排问题研究.doc

贪心算法解决活动安排问题研究

摘要:

利用贪心算法解决如何使用最少的资源安排一系列活动。

并证明了贪心算法解决此问题的有效性,且进行了实例验证,并进行了复杂度分析,此算法是解决资源组合规划问题较好的方法。

关键词:

贪心算法;java程序;复杂度分析;活动安排问题

中图分类号:

tp312文献标识码:

a文章编号:

16727800(2011)012004302

基金项目:

广西研究生教育创新计划(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用于标记活动是否被分配了资源。

要对活动的开始时间与已分配的资源里最后被添加进去的活动的结束时间进行比较,如果大于,则把该活动添加进此资源,否则继续与其他资源的最后被添加的活动的结束时间进行比较,如果所有的已分配资源均安排不了,则分配一个新资源来安排此活动。

程序清单如下:

publicclassneedsource{

①staticintstart[]={1,3,0,5,3,5,6,8,8,2,12};//活动开始时间数组;②staticintfinish[]={4,5,6,7,8,9,10,11,12,13,14};//活动结束时间数组publicstaticvoidmain(string[]args) {inti,j,flag=0;intnum[]=newint[11];intm[]=newint[100];//有足够多的资源intsource=1;//初始化,n个活动至少需要一个资源intn=start.length;//活动的个数(一共有多少个活动)num[0]=1;//num[i]=j;编号为i的活动安排在第j个资源里m[1]=0;//资源1中最后被添加进来的活动编号是0;③for(i=1;i=finish[m[j]]){//最后被添加进来的活动结束时间相比;⑥num[i]=j;//把i活动安排在j资源里;⑦m[j]=i;//记录最后被添加到j中的i活动;⑧flag=1;//标记活动已被分配到了资源};⑨h=j;//j的值是变化的。

赋值h以记录值;⑩if(flag==1){//活动被安排了,则跳出循环;break;}};if(flag==1){}else{num[i]=h+1;//所有的资源都不能安排,则添加新资源m[h+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].北京:

电子工业出版社,2007.

researchongreedyalgorithmtosolvetheactivityarrangement

abstract:

tousethegreedyalgorithmsolveshowtoarrangeaseriesofactivitieswithminimalresources.itprovesthatitiseffectivetosolvethisproblemwithgreedyalgorithmandaexamplegotovalidate.thispapergivesaneffectivemethod,whichportfoliomixofresourcesforplanning.

keywords:

greedyalgorithm;javaprogram;complexityanalysis;activityarrangements

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1