AN8, AN9 - Critical path analysis
Use activity-on-arc networks to turn precedence requirements into a project model. AN8 constructs the network; AN9 finds event times, critical activities and float, then tests whether a resource schedule can achieve the minimum completion time.
Build an activity-on-arc network
Two activities each appear to have spare time. Can you use all that spare time on both? Sometimes they share the same allowance. A precedence network shows where delays can be absorbed and where one delay consumes another activity's flexibility.
You already know
A digraph uses arrows to specify permitted directions. A path follows consecutive arcs. A model must retain the dependencies needed for the question; weights must have a stated meaning.
For a project, draw each activity on an arc, with its duration as the weight. A vertex is an event: it occurs only when every activity entering it has finished. Activities leaving it may then start. Use a single start and finish, and arrows that preserve all required precedences without introducing extra ones.
Activity-on-arc and dummy activity
An activity-on-arc network represents activities by directed arcs and events by vertices. A dummy is a zero-duration, zero-resource arc used to express a dependency or distinguish activities that would otherwise share the same start and finish events. Draw it dashed and include its direction.
A dummy is not optional merely because it takes no time. Removing it can allow an activity to begin before a required predecessor is complete. Give real activities different ordered pairs of endpoint events; add an event and dummy when identification requires it.
| Activity | Duration / hours | Immediate predecessors |
|---|---|---|
| None | ||
| None | ||
[DIAGRAM: asset_name: A dummy preserves the exact predecessors; asset_slug: cpa_dummy_precedence; caption: The dummy makes D wait for A and B, while C waits only for A; description: An activity-on-arc network has events 1 through 5, with A from 1 to 2 of duration 3, B from 1 to 3 of duration 2, a dashed zero-duration dummy from 2 to 3, C from 2 to 4 of duration 4, D from 3 to 4 of duration 2, and E from 4 to 5 of duration 3. A second panel removes only the dummy when D is changed to depend on B alone.]

Worked example 1: different predecessor sets
Question. Construct an activity-on-arc model for the table, using one dummy.
Plan. Give its own completion event so can start, then merge with before .
Why this step? Merging and before both and would wrongly make wait for .
Answer. The six arcs shown in the first diagram, with the stated durations and the dummy of duration zero.
Check. waits for ; waits only for ; waits for . No real activities share both endpoint events.
Change only 's predecessor requirement: it now depends on alone.
Worked example 2: remove a dependency
Question. Adapt the network for this changed requirement, leaving all durations and other dependencies unchanged.
Plan. Remove the dummy that carries the no-longer-required dependency from to .
Why this step? Removing an activity arc would change the work; removing this dummy changes only the precedence.
Answer. The second diagram, containing the five real activity arcs and no dummy.
Check. and can now start independently once their own predecessors finish.
Activity-on-arc conventions and dummy construction are not printed in the formula booklet. Before doing arithmetic, check the predecessor list against every merge in your drawing.
Watch out
Wrong: delete the original dummy because its duration is zero. That would let start after without waiting for . Correct: retain the dummy while requires both ; remove it only when that dependency changes.
Check the full predecessor list against the next drawing.
Make forward and backward passes
Return to the original project, including the dummy. An early event time is the earliest time that all incoming requirements can be complete. A late event time is the latest the event can occur without delaying the project's earliest possible finish, assuming resources are available.
Event-time passes
For an arc of duration ,
Start the forward pass with . Set , then work backwards. Include dummy arcs with duration zero in both passes.
Not in the formula booklet: learn it.
Take a maximum going forward because an event must wait for every incoming branch. Take a minimum backwards because all outgoing requirements must remain achievable. A critical path is a longest-duration start-to-finish path; its activities have no total float. There may be more than one critical path.
Worked example 3: the original project
Question. Carry out both passes for the original project and identify its completion time and critical activities.
Plan. Compute earliest events in dependency order, then reverse the process from the earliest finish.
| Event | |||||
|---|---|---|---|---|---|
| Early time | |||||
| Late time |
Why this step? Adding the durations of every activity would ignore work that can run in parallel.
Answer. Minimum completion time hours; critical path , with critical activities .
Check. along , while 's branch can finish earlier than event 's time .
Change only 's duration from to . The controlling branch may change, so redo both passes.
Worked example 4: a new critical branch
Question. Find the completion time, event times and critical activities after this change.
Plan. Keep earlier event times that are unaffected, then propagate the longer duration forwards and backwards.
| Event | |||||
|---|---|---|---|---|---|
| Early time | |||||
| Late time |
Why this step? Increasing a non-critical activity can consume its float and eventually change which branch determines completion.
Answer. Completion time hours; critical activities . Their critical path includes the zero-duration dummy from event to event .
Check. ; the old path still takes hours.
An activity is critical when . Equal early and late times at its endpoints alone are not enough unless the activity duration also fills the gap between them.
Watch out
Wrong: after increasing to five hours. Event must wait for both incoming activities, not the first to finish. Correct: ; use minima for the backward pass instead.
Choose maxima forward and minima backward in the next pair of passes.
Continue this lesson.
You’re previewing NovaLearn without an account. Create a free account to read the rest.
Create free account