软考-软件设计师:软件工程-项目管理:进度管理PERT 图

PERT 图

弥补GATT图的缺点

PERT图是一个 有向图,由以下组成:

  • 箭头
  • 结点
  • 空任务
  • 虚线箭头

箭头

表示 任务,有以下内容:

  • 所需时间:在箭头上面
  • 松弛时间(总时差):在箭头下面,最大延期时间。与结点的最早开始时间 和 最迟开始时间 有关

结点(事件)

本身不消耗时间和资源,它仅表示某个时间点

  • 箭头指向该结点:表示流入结点的任务,已经结束

  • 从该结点出去的箭头:表示流出结点的任务,已经开始

只有当流入该结点的所有任务都结束时,结点所表示的事件才出现,流出结点的任务才可以开始

结点有以下部分:

  • 事件号
  • 最早时刻:流出结点的任务,最早的开始时间
  • 最迟时刻:流出结点的任务,最迟开始的时间,否则工程不能如期完成。

空任务、虚线箭头

表示任务间的 顺序关系,用 虚线箭头 表示,完成空任务的时间为 0

例子

上面是PERT图,该图中松弛时间为 0 的这些任务是完成整个工程的 关键路径

其事件流为 1→2→3→4→6→8→10→11

优点

  • 任务的开始时间、结束时间
  • 完成该任务所需的时间
  • 任务之间的关系,即哪些任务完成后才能开始另外一些任务
  • 如期完成整个工程的 关键路径
  • 松弛时间:反映了完成某些任务时可以 推迟 其开始时间或延长其所需完成的时间。

缺点

  • 不能反映任务之间的并行关系

关键路径、最长的路径、项目工期

  • 关键路径,松弛时间为 0 的任务连起来

  • 最长路径:就是关键路径,因为 松弛时间 为 0 的任务,所需时间 肯定最多(所需时间 少的任务,都需要等待这个任务,所以 松弛时间 必不为 0),所以将这些任务连接起来,路径最长

  • 项目工期:完成项目的最少时间,由 最长路径(关键路径)决定

总时差(松弛时间)的计算

在 不延误总工期 的前提下,该活动的机动时间

公式:

活动的总时差 = 最迟开始时间 - 最早开始时间

或

活动的总时差 = 最迟完成时间 - 最早完成时间

表示法(做题)

做题时,为了方便计算,将结点画成下图:

例子

下图显示各个节点的最早开始时间、最迟开始时间、最早完成时间、最迟完成时间、松弛时间:

下图是问题中的图,有一些节点 的 各个时间没有给出,需要自己算

公式

松弛时间

松弛时间 = 最迟开始时间 - 最早开始时间
松弛时间 = 最迟完成时间 - 最早完成时间

最大松弛时间

最大松弛时间 = 关键路径时间 - 该路径时间

最早开始时间

提示:水平计算与 所需时间 有关

最早开始时间 = 最早完成时间 - 所需时间

提示:垂直计算与 松弛时间 有关

最早开始时间 = 最迟开始时间 - 松弛时间
通过前驱结点计算(关键)

当前结点 最早开始时间 = 前驱结点的 最早完成时间 的最大值

提示:因为该前驱结点执行时间长,需要等待该前驱结点完成,才能执行当前结点

最迟开始时间

提示:水平计算与 所需时间 有关

最迟开始时间 = 最迟完成时间 + 所需时间

提示:垂直计算与 松弛时间 有关

最迟开始时间 = 最早开始时间 + 松弛时间

最早完成时间

提示:水平计算与 所需时间 有关

最早完成时间 = 最早开始时间 + 所需时间

提示:垂直计算与 松弛时间 有关

最早完成时间 = 最迟完成时间 - 松弛时间

最迟完成时间

提示:水平计算与 所需时间 有关

最迟完成时间 = 最迟开始时间 + 所需时间

提示:垂直计算与 松弛时间 有关

最迟完成时间 = 最早完成时间 + 松弛时间
通过后续结点的计算(关键)
当前结点 最迟完成时间 = 后续结点的 最迟开始时间 的最小值

正向计算

由于不知道 松弛时间,所以根据图正向计算,只能算出 最早开始时间、最早完成时间

记忆:只能算上面的时间

计算 A结点 最早完成时间、最迟完成时间

因为 A结点有 最迟开始时间,所以能算出 松弛时间、最迟完成时间

公式:

最早完成时间 = 最早开始时间 + 所需时间 = 0 + 5 = 5

所以:A结点 最早完成时间是 5

松弛时间 = 最迟开始时间 - 最早开始时间 = 0 - 0 = 0
最迟完成时间 = 最早完成时间 + 松弛时间 = 5 + 0 = 5

等价于

最迟完成时间 = 最早完成时间 + 最迟开始时间 - 最早开始时间 = 5 + 0 - 0 = 5

所以:A结点 最迟完成时间是 5

计算 B结点 最早开始时间

该结点 最早开始时间 = 上一结点的 最早完成时间 = 5

所以,B结点 最早开始时间是 5

计算 B结点 最早完成时间

公式见 A结点 最早完成时间

最早完成时间 = 最早开始时间 + 所需时间 = 5 + 2 = 7

计算 C结点 最早开始时间

公式见 B结点 最早开始时间

该结点 最早开始时间 = 上一结点的 最早完成时间 = 5

计算 C结点 最早完成时间

最早完成时间 = 最早开始时间 + 所需时间 = 5 + 8 = 13

计算 D结点 最早开始时间

技巧:因为上一结点有多个,所以用 最早完成时间 的 最大值

如上图,任务D 依赖 任务B 和 任务C,任务B 最早完成时间是 7,任务C 的最早完成时间是 13,以 最大时间 13 为准,任务D 的最早开始时间是 13

任务B 要等待 任务C 完成,所以最迟完成时间是 13

反向计算

根据图正向计算,可以算出 最迟开始时间、最迟完成时间

当前结点的 最迟完成时间 = 后面节点的 最早开始时间

记忆技巧: 反向计算得到下面时间

计算 H结点 最早开始时间、最迟开始时间

H结点有 最早开始时间、最迟开始时间,能够算出 松弛时间

公式:

H结点 最早开始时间 = 最早完成时间 - 所需时间 = 48 - 10 = 38
松弛时间 = 最迟完成时间 - 最早完成时间 = 48 - 48 = 0
H结点 最迟开始时间 = 最早开始时间 + 松弛时间 = 38 + 0 = 38

等价于

最迟开始时间 = 最早开始时间 + 最迟完成时间 - 最早完成时间 = 38 + 48 - 48 = 38

计算 F结点 最迟完成时间(关键)

F结点 最迟完成时间 = 后续结点的 最迟开始时间 的最小值 = 38

计算 F结点 松弛时间

提示: 最早完成时间 已经通过 正向计算 得到

F结点 松弛时间 = 最迟完成时间 - 最早完成时间 = 5

计算 F结点 最迟开始时间

F结点 最迟开始时间 = 最迟完成时间 - 所需时间

F结点 最迟开始时间 = 38 - 10 = 28

同理 计算 G结点 的时间

计算 D结点 最迟完成时间(此处与希赛不同)

D结点 最迟完成时间 = 下一结点的 最早开始时间 = 38

题

某项目的活动持续时间及其依赖关系如下表所示则完成该项目的最少时间为()天。

A、43
B、45
C、50
D、55

分析1

笨方法

先根据题目画出下面的图,

不知道 最迟开始时间、最迟完成时间,所以用反向方式计算:

所以 关键路径(最长路径):A1 -> A3 -> A19 -> A11 -> A12,长度是 55

分析2

技巧:根据各个选项中的数字,从图中凑这个数,最后能凑出的最大值就是 关键路径(最长路径)

先根据题目画出下面的图,

最大能够凑出 55,所以选择 D

题

下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的权重表示活动的持续时间(天),则关键路径长度为()天。在该活动图中,活动()晚16天开始不会影响工期。

A、20
B、25
C、27
D、48

A、AC
B、BE
C、FI
D、IH

第一问答案

计算图中各个路径的长度,看结果符合哪个选项,最终算出下面路径最长,是 48:

第二问答案

将各个选项代入图中,在相交点比较时间的差是否大于等于 16

选项A,时间差是 8,错:

选项B,时间差 大于等于 16,正确:

选项C,有两个路径,时间差都小于等于 16,错误:

选项D,时间差小于等于 16,错误:


原文出处:/show_1GWys6eKEqc.html