- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第19讲_关键路径与最短路径_C
7.5.2 关键路径 AOE-网 AOE-网(Activity On Edge Network):即边表示活动的网。AOE网是一个带权的有向无环图。其中: 顶点表示事件(Event) 弧表示活动(Activity) 权值表示活动持续的时间 通常可用AOE网来估算工程的完成时间。 依据AOE-网可以研究什么问题? (1)完成整项工程至少需要多少时间? (2)哪些活动是影响工程进度的关键? ve[j]和vl[j]可以采用下面的递推公式计算: (1)向汇点递推 ve(源点) = 0 ; ve(j) = Max{ ve(i) + dut(i, j)} (2) 向源点递推 由上一步的递推,最后总可求出汇点的最早发生时间ve[n]。因汇点就是结束点,最迟发生时间与最早发生时间相同,即vl[n]=ve[n]。从汇点最迟发生现时间vl[n]开始,利用下面公式: vl(汇点) = ve(汇点); vl(i) = Min{ vl(j) – dut(i, j) } 总之,关键路径的求解操作包括: 1)计算 ve[j] 和 vl[j] ① 向汇点递推 ve(源点) = 0 ; ve(j) = Max { ve(i)+ dut(i, j)} ② 向源点递推 vl(汇点) = ve(汇点); vl(i) = Min { vl(j) – dut(i, j)} 求最早发生时间ve的算法 Status TopologicalOrder(ALGraph G,Stack T){ //有向网G采用邻接表,求各顶点事件最早发生时间ve(全局变量) //T为拓扑序列顶点栈,s为零入度顶点栈。 ???? FindInDegree(G,indegree);//对各顶点求入度 ???? InitStack(S); //建零入度顶点栈S for(i=0;iG.vexnum; ++i)? ???? if(!indegree[i])Push(S,i) //入度为0者进栈 ?? count=0; InitStack(T); ve[0..G.vexnum-1]=0; //初始化 ???? while(!StackEmpty(S)){ ???????? Pop(S,j); Push(T,j);++count; ???????? for(p=G.vertices[j].firstarc;p;p=p-nextarc){ ???????????? k=p—adjvex; //对i号顶点的每个邻接点的入度减l ???????????? if(--indegree[k]==0)Push(S,k);//若入度减为0,入栈 ???????????? if(ve[j]+*(p-info)ve[k] ) ve[k]=ve[j]+*(p-info); ???????? } //for *(p-info)=dut(j,k)? ??? } //while ????if(countG.vexnum) return ERROR; //该有向网有回路 ????else return OK;} //TopologicalOrder 求关键路径的算法 Status CriticalPath (ALGraph G){ //G为有向网,输出G的各项关键活动 if(!TopologicalOrder(G,T)) return ERROR; ? vl[0..G.vexnum-1]=ve[G.vexnum-1]; //初始化顶点事件的最迟发生时间 while(!StackEmpty(T)) //按拓扑逆序求各顶点的vl值 for(Pop(T,j),p=G.vertices[j].firstarc;p;p=p-nextarc){ ???????????k=p-adjvex; dut=*(p—info); //dutj,k ??????????if(vl[k]-dutvl[j]) vl[j]=vl[k]-dut; ?} //for for(j=0;jG.vexnum;++j) //求ee,el和关键活动 for(p=G.vertices[j];p;p=p-nextarc){ ????????? k=p-adjvex; dut=*(p—info); ee=ve[j];el=vl[k]-dut;tag = (ee==e1) ? ‘*’:’’; ???????????printf(j,k,dut,ee,el,tag); //输出关键活动 ?} } //CriticalPath 总结: 有向无环图是描述一项工程或系统的进行过程的有效工具。
您可能关注的文档
- 介绍modular lattice的三种演算法.ppt
- 第一组成本会计第二次讨论.ppt
- 第五章 时间数列.doc
- 电路第一、二章习题课.ppt
- 第4章机械振动 A.ppt
- 线材基本常识介绍.ppt
- 英语四级15选10技巧.ppt
- 第三章项目投资决策方法.ppt
- 结构化学习题解答9(北大).ppt
- 英语四级15选10篇章词汇理解.ppt
- 某区纪委书记年度民主生活会“四个带头”个人对照检查材料.docx
- 某县纪委监委2024年工作总结及2025年工作计划.docx
- 某市场监督管理局2024年第四季度意识形态领域风险分析研判报告.docx
- 县委书记履行全面从严治党“第一责任人”职责情况汇报.docx
- 税务局党委书记2024年抓党建工作述职报告.docx
- 某市税务局副局长202X年第一季度“一岗双责”履行情况报告.docx
- 副县长在全县元旦春节前后安全生产和消防安全工作部署会议上的讲话.docx
- 某市委书记个人述职报告.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料1.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料.docx
文档评论(0)