码迷,mamicode.com
首页 > 其他好文 > 详细

关键路径

时间:2016-07-30 14:53:09      阅读:478      评论:0      收藏:0      [点我收藏+]

标签:

拓扑排序

重要概念

  • AVO(Activity of Vertex Network):顶点表示活动,弧表示活动之间优先级的表示工程的有向图
  • 拓扑序列:有向图中的一条路径,路径中某些点的相对顺序有限制
  • 拓扑排序:对一个有向图构造拓扑序列

拓扑排序思路

利用临接表和栈,从AOV中寻阿泽一个入度为零的点,删除此点,并删除以该顶点为狐尾的弧,重复直到输出全部顶点或者AOV网中不存在入度为0为止

关键路径

重要概念

  • AOE:在AOV的基础上,边上有权值,代表活动耗费的时间。
  • AOE的工程应用:在活动之间的制约关系没有矛盾的基础之上,找出决定工程最短耗费时间的活动
  • 关键路径:源点到汇点的最大程度的路径

参数定义

我们把VOE网中的顶点当作事件,弧当作活动。
- 事件最早发生时间etv(earliest time of vertex)
顶点Vk的最早发生时间(逻辑上要求Vk之前发生的事件都结束之后的最早时间)
- 事件最晚发生时间ltv(latest time of vertex)。

顶点Vk的最晚发生时间
- 活动最早发生时间et e(earliest time of edge)

弧ak的最早发生时间。
- 活动最晚发生时间lte(earliest time of edge)

弧ak的最晚发生时间

算法原理

拓扑排序

  • 除了根据AOE进行基本的拓扑排序外,将要输出的拓扑序列压入全局栈stack2中。
  • 同时求出所有顶点的etv \[etv[k]= \left\{ \begin{array}{c} 0,当k=0 \\max\{etv[i]+len\langle v_i,v_k\rangle,当k\neq0,且\langle v_i,v_k\rangle \in p[k]\\end{array} \right. \] >AOE网中的事件是有发生顺序的限制的,因此k必须等待规定在\(v_k\)之前发生的事件都结束之后才能开始,所以选取最大值>

计算ltv

\[ltv[k]=
\left\{
\begin{array}{c}
etv[k],当k=n-1 \\
\min\{ltv[j]-len\langle v_k,v_j\rangle,当k < 0,且\langle v_k,v_j\rangle \in p[k]\\
\end{array}
\right.
\]

  • 计算ltv的时候,实际上是把拓扑序列倒过来进行的
  • ltv在两种可能中取最小值,是为了满足在执行\(v_k\)之后的所有事件不会延长整个工程的最短时间>

求关键路径

  • 令\(ete=etv[k]\) (只有弧的狐尾顶点发生了,弧才可以开始)
  • 令\(lte=ltv[j]-len\langle v_k,v_j\rangle\)(活动\(\langle v_k,v_j\rangle\)必须在事件\(v_j\)之前发生)
  • 如果ete与lte相等,则此活动为关键活动

关键路径

标签:

原文地址:http://www.cnblogs.com/rainySue/p/guan-jian-lu-jing.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!