欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    算法设计与分析课程大作业.docx

    • 资源ID:5113663       资源大小:137.98KB        全文页数:11页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    算法设计与分析课程大作业.docx

    1、算法设计与分析课程大作业 题 目 作业调度问题及算法分析 学院名称: 计算机与信息工程学院 专业名称: 计算机科学与技术 一动态规划算法解决流水作业调度 41、问题描述 42、算法分析 43. 算法的描述 54、部分算法实现 65. 运行结果 86、时空效率分析 8二贪心算法解多机调度问题 81、问题描述 82、算法分析 93.部分算法实现 94.计算复杂性分析 115. 运行结果 12三回溯法解决批作业调度问题 121.问题描述 122.算法思想 133. 部分算法实现 144.运行结果 155.时间复杂性分析 15四作业调度算法比较 16五课程学习总结 17摘要: 在现代企业中,作业调度已

    2、成为提高资源利用率、从而提高企业运行效益的关键环节之一。把各个作业分配到车间现有的设备上,并确定它们的先后次序,这是一项复杂的工作 本文就作业调度排序问题进行了研究,通过对几个经典作业调度算法的分析讨论,总结了各个算法对作业调度的求解过程,并给出了每个算法的复杂度及性能分析。关键词:作业调度;动态规划;贪心算法;回溯法;一动态规划算法解决流水作业调度1、问题描述 给定n个作业,每个作业有两道工序,分别在两台机器上处理。一台机器一次只能处理一道工序,并且一道工序一旦开始就必须进行下去直到完成。一个作业只有在机器1上的处理完成以后才能由机器2处理。假设已知作业i在机器j上需要的处理时间为ti,j。

    3、流水作业调度问题就是要求确定一个作业的处理顺序使得尽快完成这n个作业。2、算法分析 直观上,一个最优调度应使机器M1没有空闲时间,且机器M2的空闲时间最少。在一般情况下,机器M2上会有机器空闲和作业积压2种情况。 在一般情况下,机器M1开始加工S中作业时,机器M2还在加工其他作业,要等时间t后才可利用。将这种情况下完成S中作业所需的最短时间记为T(S,t)。流水作业调度问题的最优值为T(N,0)。由流水作业调度问题的最优子结构性质可知, (1)(2) 从公式(1)可以看出,该问题类似一个排列问题,求N个作业的最优调度问题,利用其子结构性质,对集合中的每一个作业进行试调度,在所有的试调度中,取其

    4、中加工时间最短的作业做为选择方案。将问题规模缩小。 公式(2)说明一般情况下,对作业集S进行调度,在M2机器上的等待时间,除了需要等该部件在M1机器上完成时间,还要冲抵一部分原来的等待时间,如果冲抵已成负值,自然仍需等待M1将作业做完,所以公式取maxt-ai,0。3. 算法的描述 从分析可知,流水作业调度问题一定存在满足Johnson法则的最优调度,且容易由下面的算法确定。流水作业调度问题的Johnson算法:(1)令;(2)将中作业依的非减序排列;将中作业依的非增序排列;作业接种作业构成满足Johnson法则的最优调度。4、部分算法实现int FlowShop(int n,int a,in

    5、t b,int c)int i; Jobtype *d = new Jobtypen; for( i=0; ibi?bi:ai;/按Johnson法则分别取对应的bi或ai值作为关键字 di.job = ai=bi;/给符合条件aibi的放入到N1子集标记为true di.index = i; BubbleSort(d,n); /对数组d按关键字升序进行排序 int j = 0,k = n-1; for( i=0; in; i+) if(di.job) cj+ = di.index; /将排过序的数组d,取其中作业序号属于N1的从前面进入 else ck- = di.index; /属于N2的

    6、从后面进入,从而实现N1的非减序排序,N2的非增序排序 j = ac0; k = j+bc0; for( i=1; in; i+) j += aci; /M1在执行ci作业的同时,M2在执行ci-1号作业,最短执行时间取决于M1与M2谁后执行完 k = jk?k+bci:j+bci;/计算最优加工时间 delete d; return k;5. 运行结果 6、时空效率分析 算法Flowshop的主要计算时间花在对作业集的排序上。在这里,我们使用冒泡排序法(BubbleSort),因此,在最坏情况下算法FlowJob所需要的计算时间为。所需要的空闲显然是。二贪心算法解多机调度问题 1、问题描述

    7、多机调度问题要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。约定,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断处理。作业不能拆分成更小的子作业。这个问题是NP完全问题,到目前为止还没有有效的解法。对于这一类问题,用贪心选择策略有时可以设计出较好的近似算法。 2、算法分析 贪心算法只需按顺序以数组方式提供各作业的加工时间和机器的台数;求出作业的个数,若小于机器台数,就将作业逐个分配给就近的机器,所需要的加工时间,即为最长作业所需时间。 若作业数大于机器台数,将作业按加工时间的多少降序排序,以机器数建立最小堆,先将前m个作业分配给m个机器,最小堆顶

    8、是最小的元素(即m个作业中加工时间最少的作业),将其移出并加上后续作业的加工时间,再插入堆,这时会改变原来的状态,升到堆顶的机器加工总时间最少,它再移出加后续作业的加工时间,在插入堆,依此类推,直到全部作业结束。堆中的最大值就是完成所有作业所需的最短时间。 3.部分算法实现 typedef struct Node int ID, avail;manode; /ID 机器编号 avail 每次作业的初始时间 manode machineN; jobnode jobN; /* 找出下个作业执行机器 */ manode* Find_min(manode a, int m) manode* temp

    9、= &a0; for (int i = 1; im; i+) if (ai.availavail) temp = &ai; return temp; /* 对作业时间由大到小进行排序 */ void Sort(jobnode t, int n) jobnode temp; for (int i = 0; ii; j-) if (jobj.timejobj - 1.time) temp = jobj; jobj = jobj - 1; jobj - 1 = temp; void main() for (i = 0; ijobi.time; jobi.ID = i + 1; printf(输入机器

    10、数目(机器编号按输入顺序处理)n); cinm; for (i = 0; im; i+)/给机器进行编号并初始化 machinei.ID = i + 1; machinei.avail = 0; putchar(n); if (n = m) printf(为每个作业分配一台机器,可完成任务!n); return; Sort(job, n); for (i = 0; i %d 的时间段分配给作业: %dn, putchar(n); printf(该批作业处理完成所需加工时间为: %dn, temp); 4.计算复杂性分析当nm 时,所有作业可以一次安排给各机器,算法greedy需要o(1) 时间

    11、。当nm 时,排序耗时O(nlogn)。初始化堆需要O(m) 时间。关于堆的removeMin和put运算共耗时O(nlogm),因此算法greedy 所需的计算时间为O(nlogn+nlogm)=O(nlogn)。5.运行结果三回溯法解决批作业调度问题 1.问题描述 输入:1. 任务数N2. 机器数M3. 随机序列长度ti,其中ti=x表示第i个任务完成需要时间单位x,输出:1. 开销时间besttime,表示最佳调度需要时间单位2. 最佳调度序列bestx,其中bestxi=x,表示将第i个任务分配给第x个机器执行。2.算法思想 解空间的表示:一个深度为N的M叉树。ti:第i个任务的时间x

    12、i=j:当前输出结果Resi=j:表示第i个任务要运行在第j台机器上time_machinei:第i个机器上的运行时间基本思路: 1、搜索从开始结点(根结点)出发,以DFS搜索整个解空间。2、每搜索完一条路径则记录下time_min和Resi序列,开始结点就成为一个活结点, 同时也成为当前的扩展结点。在当前的扩展结点处向纵深方向移至一个新结点, 并成为一个新的活结点,也成为当前扩展结点。 3、如果在当前的扩展结点处不能再向纵深方向扩展,则当前扩展结点就成为死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点;直至找到一个解或全部解。3.部分算法实现bool p

    13、lacetest(int k)int time_max_K = time_machine1; for(int i=2;i time_max_K ) time_max_K = time_machinei; if(time_max_K time_min) return false; else return true; void Backtrack(int k,int t,int x) if(k N ) int time_max_K = time_machine1; for(int i=2;i time_max_K ) time_max_K = time_machinei; if(time_max_

    14、Ktime_min) time_min = time_max_K; for(int i=1;i=N;i+) Resi = xi else for(int i=1;i=K;i+) xk = i;/将第k个任务放到第i个机器上面 if( placetest(k) ) time_machinei += tk; Backtrack(k+1,t,x); time_machinei -= tk; 4.运行结果5.时间复杂性分析由于没有使用限界函数进行优化,算法时间和空间复杂度呈指数级增长。所以该算法不适合较大规模的计算。蓝线表示机器数一定M=3时,n增大时求解最佳调度对所消耗的时间,该趋势随着指数增加。四

    15、作业调度算法比较 在流水作业调度中,Johnson算法这是在只有两台设备情况下的最优排序算法,同时说明工件的第一道工序和最后一道工序的加工时间对排序的影响是主要的。 贪心算法只需按顺序以数组方式提供各作业的加工时间和机器的台数;求出作业的个数,若小于机器台数,就将作业逐个分配给就近的机器,所需要的加工时间,即为最长作业所需时间复杂度为O(nlogn)。 回溯算法解决批作业调度问题与前面两个问题不同,前两个是求所有作业在M2机器上加工完成的最后时间,而这里要求的是求所有作业在机器M2上完成处理时间的总和达到最小。这种调度算法可用于计算加工费用。批处理作业调度问题属于排列树的解空间问题,因此时间复

    16、杂度为(n!) 五课程学习总结 算法分析与设计是一门非常重要的课程,很多问题的解决,程序的编写都要依赖它,算法的学习对于培养一个人的逻辑思维能力是有极大帮助的,它可以培养我们养成思考分析问题,解决问题的能力。但是算法的学习同时也需要较强的理解能力,有些算法程序不易读懂,这时需要在理解问题的本质上对算法程序进行解读。在对一个问题进行算法设计时,要了解问题的特点,找到适合的方法才能得到理想的结果。 在本门课程过程中, 我深刻体会到算法是建立在解法基础之上的,是在某个具体问题解法过程的分析之后,归纳出的解决一类相关问题的程序或步骤;如果一个具体问题具有代表性,其解法又具有程序性,那么这样的解法也能体现算法思想在学习过程中老师起到了极大的引导及指导作用,也让我们明白了在算法学习中我们要多了解一些问题的最新解法及关注算法在实际问题中的应用。在本次学习过程中还发现了自己的很多不足,在以后的学习中更要弥补不足,要熟练掌握一些算法思想及其应用。


    注意事项

    本文(算法设计与分析课程大作业.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开