- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法实训报告
陕西国防工业职业技术学院
算法实训报告
题 目: 最优时间表问题
班 级: 软件30**
姓 名: ***
学 号: #**
指导老师: *** ***
实训时间: 第16周
实训地点: 8-504
软件教研室制
最优时间表
问题描述
一台精密仪器的工作时间为 n 个时间单位, 与仪器工作时间同步进行若干仪器维修程序. 一旦启动维修程序, 仪器必须进入维修程序. 如果只有一个维修程序启动, 则必须进入该维修程序. 如果在同一时刻有多个维修程序, 可任选进入其中的一个维修程序. 维修程序必须从头开始,不能从中间插入. 一个维修程序从第 s 个时间单位开始, 持续 t 个时间单位, 则该维修程序在第 s+t-1 个时间单位结束. 为了提高仪器使用率, 希望安排尽可能少的维修时间. 对于给定的维修程序时间表, 计算最优时间表下的维修时间.
数据输入
输入数据的第 1 行有 2 个小于 10000 的正整数 n 和 k, n 表示仪器的工作时间单位, k 是维修程序数. 接下来的 k 行中, 每行有 2 个表示维修程序的整数 s 和 t, 该维修程序从第 s 个时间单位开始, 持续 t 个时间单位.
数据输出
在一行上输出最少维修时间.
Input
15 6
1 2
1 6
4 11
8 5
8 1
11 5
Output
11
问题分析
本题来说就是要求在所给的维修集合中选出某一极大相容维修子集合,使其所用时间最少。
对所有维修的起始时间进行排序。 (t0,t1,…,tk)(titj,ij)。R(tk,T)表示起始时间为tk,执行时间为T的维修
最优子结构性质
设( R(t0,T0) , R(t1,T1), … R(tm,Tn)) 是所给最优时间表问题的一个最优解,即不存在tj,使tm+Tntj, 则( R(t0,T0) , R(t1,T1), … R(tm-1,Tn-1))是ttm的最优时间表问题的一个最优解.
递归关系
设S(i)表示执行R(ti,Tj) 后用于维修的最少时间。则Min S(i) = Min S (i-1) +T(Ri)
算法描述
建立一个n位长的数组S,每位表示一个时间。对任意维修R(tk,T)(tk+Tn),它要么进行,要么不进行。 R(tk,T)要进行,则要么k=0,要么在tk-1到tk之间某点tx有某个维修完成。令S(tk+T-1)=S(tx)+T,表示执行R(tk,T)后所用的维修时间。则可求出所有执行R(tk,T)后的维修时间并求的最小值。以此类推,即可求出所有可能极大相容子集的最少维修时间。
算法时间复杂性:
算法的时间复杂性与工作时间的范围n及维修数k及起分布有关。
n+k=O(n,k)n×k,一般情况下,O(n,k)=n+k.
程序:
#include iostream
using namespace std;
int *worktime=0;
int **repairtime=0;
int n;
int k;
int mintime()
{
int temp;
int down=0,up=0;
int x,y;
int i,j;
int sign=0;
while((downk)(upk)(repairtime[up][0]==repairtime[down][0])) up++;
x=repairtime[down][0];
for(j=down;jup;j++){
y=repairtime[j][1];
worktime[x+y-2]=y;
}
for(i=0;in;i++)
{
x=repairtime[down][0]-1;
sign=0;
if ((ix)(worktime[i]!=n))
{
for(j=down;jup;j++)
{
y=repairtime[j][1];
if(x+y-1=n) y=n-x;
if (worktime[i]+yworktime[x+y-1])
worktime[x+y-1]=worktime[i]+y;
sign=1;
}
if (sign=1)
worktime[i]=n;
}
else if (i=x)
{
down=up;
if(down=k)break;
while((downk)(upk)(repairtime[up][0]=
您可能关注的文档
最近下载
- (高清版)B-T 17421.1-2023 机床检验通则 第1部分在无负荷或准静态条件下机床的几何精度.pdf VIP
- 先进人工智能算法.pptx VIP
- 教科版科学四年级下册第一单元 植物的生长变化 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一体化).docx VIP
- 第十五讲新时代与中华民族共同体建设(2012—-第十六讲文明新路与人类命运共同体-中华民族共同体概论专家大讲堂课件.pptx VIP
- 2021年一级造价工程师考试《建设工程技术与计量(水利工程)》真题及答案.pdf VIP
- PIRLS 阅读测试《小泥團》.pdf VIP
- 教科版科学四年级下册第二单元 电路 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一体化).docx VIP
- 缺血性卒中脑保护中国专家共识(2025)解读PPT课件.pptx VIP
- 2020年一级造价工程师考试《建设工程技术与计量(水利工程)》真题及答案.pdf VIP
- 2023年贵州省遵义市中考数学试题及解析.doc VIP
原创力文档


文档评论(0)