- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件算法设计
实验报告
题目:作业调度问题
院(系): 计算机科学与工程
专 业:
班 级:
学 生:
学 号:
2015年 11 月
问题描述:
n个作业{1,2,…,n}要在由n台机器M1,...,Mn完成加工作业调度问题,要求确定这n个作业的最优加工顺序,使得从第一个作业在机器,到最后一个作业在机器上加工完成所需的时间最少。
算法设计:
贪心算法思想:
贪心选择性质:
所谓贪心选择性质是指应用同一规则f,将原问题变为一个相似的。但规模更小的子问题,而后的每一步都是当前看似最佳的选择。这种选择依赖于已做出的选择,但不依赖于未作出的选择。从全局来看,运用贪心策略解决的问题在程序中无回溯过程。
局部最优解:
我们通过特点2向大家介绍了贪心策略的数学描述。由于运用贪心策略解题在每一步都取得了最优解,但能够保证局部最优解的不一定是贪心算法。
设7个独立作业{1,2,3,4,5,6,7}由3台机器M1,M2和M3加工处理。各作业所需的处理时间分别为{2,14,4,16,6,5,3}。按算法greedy产生的作业调度如下图所示,所需的加工时间为17。
序号 1 2 3 4 5 6 7 时间 2 14 4 16 6 5 3
序号 4 2 5 6 3 7 1 时间 16 14 6 5 4 3 2 假设有三台机器,建立最小堆
程序中标识符说明
类别 名称 作用 类 Fac4_7_1 ? 类 MinHeap 最小堆类用于优先队列 类 jobNode 定义作业结点(序号及加工时间) 类 MachineNode 定义机器结点(机器号和可用时间) 方法 mergesort 按处理作业加工时间降序排序 方法 greedy 贪心法解多机调度问题 数组 a[] 按作业顺序填写加工时间
算法实现:
运行环境:
Myeclipse 8.5 java project
2.源代码:
//基于最小堆的贪心算法解多机调度问题,
//heapsort on minheap
import java.io.*;
class MinHeap
{ //Min-heap impmentation
static jobNode[] Heap; //Pointer to the heap array
static int size; //Maximum size of the heap
static int n; //Number of intents now in heapheapsoet
public MinHeap(jobNode[] h,int num,int max)//constructor
{ Heap=h;n=num;size=max;buildheap();}
public int heapsize()//return current size of the heap
{ return n;}
public static boolean isLeaf(int pos)//true if pos is a leaf position
{ return(pos=n/2)(posn);}
public static void Assert_notFalse(boolean p,String q)
{if(!p)System.out.println((String)q);}
public static int key( int [] q,int p)
{ return q[p];}
//return position for left child of pos
public static int leftchild(int pos)
{ Assert_notFalse(posn/2,position has no left child);
return 2*pos+1;
}
//return position for right child of pos
public static int rightchild(int pos)
{Assert_notFalse(
您可能关注的文档
最近下载
- 四年级上道德与法治《学会识别广告》教学设计.pdf VIP
- 2024融合大语言模型DeepSeek技术新人教版语文七年级上册《第四单元》大单元整体教学设计[2022课标].pdf
- 监控系统项目完整技术标书.docx VIP
- 临床合理用药解读-质子泵抑制剂的处方和医嘱审核要点解读(PPT课件).pptx VIP
- 山东省化工装置安全试车工作规范 DB37_T 1854—2020 山东.pdf VIP
- 安徽—夏凯月—课件—直线的倾斜角与斜率.pptx VIP
- 房屋租赁合同,房屋租赁合同,房屋租赁合同.docx VIP
- 安徽—夏凯月—设计—直线的倾斜角与斜率.docx VIP
- 业务学习-子宫脱垂.pptx VIP
- 海尔风冷模块样册.pdf
文档评论(0)