Definition · A project network and its four timesA project is a set of activities, each with a duration and a list of predecessors that must finish before it starts. For each activity: ES is the earliest start, EF = ES + d the earliest finish, LF the latest finish that does not delay the project, and LS = LF − d the latest start.
The slack of an activity is LS − ES, equivalently LF − EF. An activity with zero slack is critical: any delay to it delays the whole project.
Nothing flows here. The arcs are precedence, the numbers on the nodes are times, and the quantity being computed is a longest path rather than a cheapest one. It is on this course because it is a network with a duality reading of its own: the critical path is the certificate that the project cannot be finished sooner, in the same way that a cut certifies a flow.
A 3 | B 2 after A | C 4 after A | G 5 after A | D 2 after B
E 3 after C | H 2 after G | F 1 after D E | I 1 after F H
forward pass ES EF backward pass LS LF
A 0 3 0 3
B 3 5 6 8
C 3 7 3 7
G 3 8 4 9
D 5 7 8 10
E 7 10 7 10
H 8 10 9 11
F 10 11 10 11
I 11 12 11 12
slack = LS - ES A 0 B 3 C 0 G 1 D 3
E 0 H 1 F 0 I 0
project length 12 durations add to 21
critical A C E F I one critical path
Read the forward pass off the predecessors: F waits for both D and E, which finish at 7 and 10, so F starts at 10 and not at 7. The maximum is the whole of the rule. The backward pass is the mirror image: G is followed only by H, which must start by 9, so G must finish by 9 — and since G can finish at 8, it has a unit of slack.
Acting on it, and the point where it stops paying
Example · One day off C, and then nothingC is critical, so shortening it by one takes the project from 12 to 11. Shorten it by two, three or four and the project stays at 11. The lab draws the curve 12, 11, 11, 11, 11 and reports that the return stopped after one unit.
The reason is on the screen at the moment it happens: with one day off C the project has two critical paths rather than one, and past that the length is held by A, G, H, I — a chain that C is not on. Every further day taken off C is spent on an activity that no longer controls the finish date.
This is the single most useful thing the method produces and it is not the critical path itself. Knowing which activity to shorten is easy; knowing when to stop shortening it, and which chain has become binding instead, is what keeps a schedule from absorbing money for nothing. The lab reports the slack of the chosen activity, what shortening it is worth, and after how many units it stops paying.
Example · A project where the first day already buys nothingSix activities: A for 3, then two chains of two activities each, joining at F. Both chains take the same time, so the project length is 8 and every activity is critical — two distinct critical paths, A B D F and A C E F.
Shorten B by one and the project is still 8, because A C E F is untouched and still takes 8. The return stops after zero units. With parallel critical paths, shortening one activity is not enough; you have to shorten one on each path, or shorten a shared activity like A or F.
When there is nothing to compute
The forward pass needs an order in which every predecessor comes before its activity, and such an order exists exactly when the precedence graph has no cycle. Write A after C, B after A, C after B and there is no order at all: each of the three is waiting for one of the others. The lab names the loop rather than reporting a length, because “the project takes zero” would be a lie and “error” would not say what to fix.
Two smaller refusals are worth the same treatment. An activity waiting on something that is not in the project is refused by name, and so are two activities sharing a name. Both are typing errors, and both would otherwise produce a schedule that looks complete.
What this lesson does not do is cost anything. Real project crashing trades money for time, with a cost per day for each activity and a budget, and that is a linear programme of its own — a perfectly good one, and not this course's. What is here is the structural half: which activities can be shortened usefully at all, and for how long.