下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工程规划问题描述一个工程有不超过 100 个项目,有 SAS,FAS,SAF 四种可能的制约关系,求一种安排方案,使满足给定的制约关系,并且使工程在最短的时间内结束。输出所有工程最早的开始时间。如果不存在可行的方案,输出一个 0。算法分析读完题后觉得似乎和图论中的最短路径有一定的联系,然而条件给得比较抽象,如何构造图轮模型呢?要求的是各工程最早的开始时间,同时题目中的四种制约关系均可以表示为工程开始时间的相互制约关系,以每个工程的最早开始时间为顶点,设项目持续时间分别为tp,tq,按如下规则建立有向图:SAS p q FAS p q SAF p q FAF p q从q 向p 引一条权为 0 的
2、弧 从q 向p 引一条权为-tp 的弧从q 向p 引一条权为tq 的弧从q 向p 引一条权为tq-tp 的弧各条弧指向的方向表示一个不等关系,即spsq+弧上的权值。再虚设一个源点,从源点向每个点引一条权为 0 的弧,开始时,源点的开始时间为 0,求从源点到各点的最长路径,即为该点的最早开始时间。相应地很容易求出工程完成的总时间。即最晚完成的项目的时间。如何判断无解的情况呢?显然,如果图中存在一个圈,圈上的权和是一个正数,就无解。为方便判断,每个点再引一条权为 0 的自反弧。最后一个关键是,图中的权是存在负数的,如何求最长路呢?这里就要巧妙运用FLOYD 的动态规划了,不展开详述。该算法时间复
3、杂度为O(n*n*n),空间复杂度为 O(n*n),是完全可以承受的。n 在 100 以内,程序program t203; constMAXN=101;vard :array1.MAXN,1.MAXNof adj:array1.MAXN,1.MAXNofeger;两个点之间的最长距离;表示两个点只是否可以达到n :eger;项目总数lt :array1.MAXNof byte;每个项目的持续时间procedure init; 打开输入输出文件 vars1,s2:string;beginwrin(Input file name:);readln(s1);wrin(Input output fil
4、ename:);readln(s2); assign(input,s1); reset(input); assign(output,s2);rewrite(output);end;procedure over; 关闭文件 beginclose(input); close(output);end;function readed: varsln,s1,s2:string;codebegin:eger;readln(sln);while sln= do readln(sln); if sln=# thenreaded:=false elsebeginval(sln,n,code); readed:=
5、true;end;end;procedure readdata; vari:eger;p,q:eger;s:string;p0,code:eger;der:string3;beginfillchar(d,sizeof(d),0);距离表初始化fillchar(adj,sizeof(adj),0); 邻接矩阵初始化for i:=1 to n do adji,i:=true; 每个点添加自反弧 fillchar(lt,sizeof(lt),0);for i:=1 to n do readln(lti);读每个项目的消耗时间 readln(s);while s do beginder:=copy(s
6、,1,3);读入命令s:=copy(s,5,length(s)-4);p0:=( ,s);val(copy(s,1,p0-1),p,code);val(copy(s,p0+1,length(s)-p0),q,code); 分解出p 和 q 的序号adjq,p:=true;表示从 q 到 p 的路径已计算if if ififder=SAS der=FAS der=SAFder=FAFthen then thenthendq,p:=0; 添为 0dq,p:=-ltp;权为-tpdq,p:=ltq; 权为 tq dq,p:=ltq-ltp; 权为 tq-tpreadln(s);end;for i:=
7、1 to n do beginadjn+1,i:=true; dn+1,i:=0;end;从源点 n+1 向每个点引一条权为 0 的弧end;procedure main;vari,j,k:eger;finishtime:eger; beginfor k:=1 to n+1 dofor i:=1 to n+1 do for j:=1 to n+1 doif adji,k andadjk,j and(di,k+dk,jdi,j)or(adji,j=false) then beginif i=j then 若存在正圈,则无解 beginwrin(0); exit;end; adji,j:=true;di,j:=di,k+dk,j;更新距离表end;for i:=1 to n dowrin(i, ,dn+1,i);输出各项目的最早开始时间finishtime:=0; for i:=1 to n doif dn+1,i+ltifinishtime then finishtime:=dn+1,i+lti;结束时间为各项目完成时间中的最大值wrin(Finish at:,finishtime);输出工程的结束时间end;begininit;while readed do beginreaddata;m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品退货流程调整说明函5篇
- 体育教练员运动训练与竞赛组织指导书
- 航空制造公司研发工程师KPI考核表
- 文化艺术策划人员活动策划与执行成果绩效衡量表
- 环保行业项目经理环境效益及成本控制KPI考核表
- 品质检验员品质控制绩效考评表
- 网络运维与安全管理专家绩效衡量表
- 运营人员效率提升评价表
- 2026年度碳排放目标确认函4篇
- 电信业务技术支持与售后服务绩效考评表
- 2026四川甘孜州丹巴县选调事业单位人员9人笔试备考题库及答案详解
- 2026年征兵人格测试题及答案
- 海运提单管理制度
- 住房出租合同范本(7篇)
- 2026-2030中国南美白对虾养殖行业市场发展现状调研及投资前景分析报告
- 2026年度北京首都旅游集团有限责任公司管理培训生招募笔试历年难易错考点试卷带答案解析
- 一升二数学暑假作业每日一练60天附答案-一下
- 2026中国碳纤维复合材料汽车轻量化成本效益分析
- 2025-2026学年湖南省岳阳市岳阳楼区人教版五年级下学期期末数学检测试题 含答案
- JJF(川)148-2017 皮革颜色摩擦牢度测试仪校准规范
- 2026年生物科技农业育种报告及未来五至十年高效种植报告
评论
0/150
提交评论