How do forward and backward scanning give the earliest and latest start times of each activity, and how is float calculated?
Perform forward and backward scanning to find earliest start, latest start, earliest finish, latest finish times and float for each activity
A focused answer to the HSC Maths Standard 2 dot point on forward and backward scanning. Computing earliest start, latest start, earliest finish, latest finish and float for each activity in a project network, with worked Australian construction and renovation examples.
Reviewed by: AI editorial process; not yet individually human-reviewed
Have a quick question? Jump to the Q&A page
What this dot point is asking
NESA wants you to use forward and backward scanning to find the earliest and latest start and finish times for each activity in a project network, compute float (slack), and confirm the critical path as the activities with zero float.
The answer
Walk through the boxes step by step
Each activity in the diagram above carries a box at its tail (where it starts): the left cell is its EST (earliest start time) and the right cell is its LST (latest start time). Fill every left cell first with a forward pass. Then fill every right cell with a backward pass. Then read the float straight off each box as right minus left.
Forward pass fills the EST (left) cells. An activity cannot begin until all of its predecessors have finished, so its EST is the largest "predecessor EST plus that predecessor's duration". Work left to right.
- opens the project, so . It lasts , so it finishes at .
- and both wait only on , so each starts when finishes: . They finish at and .
- waits on both and , so it takes the later of the two finishes: . It finishes at .
- waits on , so , finishing at . That final finish is the project duration, .
Backward pass fills the LST (right) cells. Now work right to left from the finish. An activity's latest finish is the earliest latest-start among the activities that follow it; subtract its own duration to get its own LST.
- is the last activity and must finish by , so . Its box now reads .
- feeds , whose latest start is , so . Box .
- and both feed , whose latest start is , so (box ) and (box ).
- feeds both and , so it must finish in time for the earlier latest start, ; thus . Box .
Read the float off each box as :
- : (critical)
- : (can slip up to unit)
- : (critical)
- : (critical)
- : (critical)
The four zero-float activities line up as the critical path ; only carries any slack.
See the scan build up, stage by stage
The diagram at the top of this page shows the finished scan. Below is the same network assembled one stage at a time, so you can see exactly where every number comes from. Each stage below adds one more layer and spells out the working behind it.
Stage 1, forward pass (fill the EST cells). Work left to right from the start. The start event is time , so starts at and finishes at . Both and wait only on , so both start at . Two activities feed the event before . finishes at and finishes at . An event cannot happen until every activity into it is done, so take the later time, . That becomes the EST of . Then finishes at , starts at , and the project finishes at .
Stage 2, backward pass (fill the LST cells). Now work right to left from the finish at . (duration ) must start by , and must start by . The split mirrors the merge from stage 1: the event after feeds both and , so it must be early enough for the tighter of the two. allows but allows , so take the smaller, . Hence must finish by and so must start by .
Stage 3, identify the critical path. With both cells filled, the critical activities are the ones with zero slack, where the EST and LST are equal. , , and all have matching numbers, so they form the critical path . Only , whose cells read then , sits off it.
Stage 4, read the float. Float is the gap between the two numbers in each box, . Every critical activity shows the same number twice, so its float is . Only differs: , so can start up to time unit late without delaying the finish. That single number is the point of the whole scan.
Forward scanning (earliest times)
Label each event (node) with the earliest time it can occur, computed by working forward from the project start.
- Start event: EST .
- Any other event: EST equals the maximum over all incoming activities of (EST of the activity's start event + the activity's duration).
If an event has multiple predecessors, take the maximum because all predecessors must finish before the event occurs.
The forward scan reaches the end event with the minimum project duration.
Backward scanning (latest times)
Label each event with the latest time it can occur without delaying the project, computed by working backward from the project end.
- End event: LFT = minimum project duration (from the forward scan).
- Any other event: LFT equals the minimum over all outgoing activities of (LFT of the activity's end event activity duration).
If an event has multiple successors, take the minimum because the event must complete in time for the earliest required successor.
Time computations for each activity
For activity from event to event with duration :
- EST (earliest start time) = (the EST of the activity's start event).
- EFT (earliest finish time) = .
- LFT (latest finish time) = (the LFT of the activity's end event).
- LST (latest start time) = .
Float
The float of an activity is the maximum delay possible without extending the project:
An activity with float is critical: any delay to it delays the project. An activity with positive float has slack; it can be delayed by up to its float without affecting the project end date.
Critical path
The critical path consists of activities with zero float. It is also the longest path through the network (the same path found in the previous dot point's analysis).
For activities not on the critical path, there is some flexibility in scheduling. This is useful in real project management for planning resource allocation, contingency, and parallel work.
Reading the EST and LST boxes
The diagram at the top of this page uses the standard activity-on-edge labelling: each activity gets a two-cell box at its tail, EST on the left and LST on the right.
| EST (left) | LST (right) |
|---|---|
| earliest the activity can start | latest it can start without delaying the project |
Because float is , any box whose two numbers are equal marks a critical activity (zero float). So the critical path shows up at a glance as the chain of equal-number boxes. Some questions instead tag each event (node) with its earliest and latest event time. The per-activity box is the cleaner version, because the float is then visible directly on every activity. Whichever style a question uses, label clearly so the marker can follow.
How exam questions ask about float
Float is the single most tested idea here, but questions rarely use the word "float" on its own. Learn to translate the wording:
- "By how much can activity be delayed without affecting the completion date?" - this is the float of ().
- "Which activities can be delayed?" - every activity with positive float; name them and give each one's float.
- "What is the latest activity can start (or finish)?" - read the LST (or LFT) straight off the scan.
- "What is the shortest time in which the project can be completed?" - the project duration from the forward scan (the EST of the end event).
- "Why is activity critical?" - because its float is zero, so any delay to it delays the whole project.
A subtle point worth a mark: an activity's float is the most it can slip, but only if everything else runs to its earliest schedule. Suppose a non-critical activity actually uses up its float. Then the activities after it can lose theirs. This is because float along a chain of non-critical activities is shared, not added together.
Exam-style practice questions
Practice questions written in the style of NESA exam questions on this dot point, with worked answer explainers. The year tag is the paper they imitate, not the source.
2022 HSC-style5 marksA project network has activities with the following durations and precedences. For each activity, find the earliest start time (EST), latest start time (LST), and float. Identify the critical path.Show worked answer →
Forward scan: for each node, set EST = max of (EST of predecessor + activity duration) over all predecessors. Start node has EST .
Backward scan: for each node, set LFT (latest finish time) = min of (LFT of successor successor activity duration) over all successors. End node has LFT = total project duration (from the forward scan).
For each activity:
- EST = EST of its start node.
- LFT = LFT of its end node.
- EFT (earliest finish time) = EST + duration.
- LST (latest start time) = LFT duration.
- Float = LST EST = LFT EFT.
Critical path consists of activities with float = .
Markers reward the forward scan, the backward scan, the float calculation for each activity, and identification of the critical path as the set of zero-float activities.
2023 HSC-style4 marksUse forward and backward scanning on the given project network to find the float of each activity. State which activities can be delayed without affecting the project duration.Show worked answer →
Forward scan gives EST for each event (node). Backward scan gives LFT.
For each activity (edge from event to event with duration ):
- EST = , EFT = .
- LFT = , LST = .
- Float = .
Activities with float can be delayed by up to their float without affecting the project duration. Activities with float are critical; any delay to them pushes the project end date.
List each activity with its float. Activities with positive float can be delayed.
Markers reward complete float table, identification of activities with positive float, and the maximum delay (= float) for each.
Practice questions
Original practice questions graded from foundation to exam level, each with a full worked solution. Try them before revealing the solution.
foundation2 marksA project has four activities in a single chain. (duration ) has no predecessor; (duration ) follows ; (duration ) follows ; (duration ) follows . By forward scanning, find the earliest start time (EST) of every activity and state the shortest time in which the project can be completed.Show worked solution →
Forward scan, start the chain. The first activity opens the project, so . With duration it finishes at .
Step along the chain. Each activity here has exactly one predecessor, so its EST is simply the predecessor's earliest finish.
- (when finishes), finishing at .
- , finishing at .
- , finishing at .
Read off the project duration. The last finish is the shortest project time: .
Check. With no merges, the duration is just the sum of the durations: , which matches.
foundation2 marksA project has activities (duration , no predecessor), (duration , follows ), (duration , follows ) and (duration , follows both and ). By forward scanning, find the earliest start time of and the shortest project duration.Show worked solution →
- Forward scan the opening activities
- opens the project, so and it finishes at .
- Both branches wait only on
- So . They finish at and .
- At the merge take the maximum
- needs both and finished, so its EST is the later of the two finishes:
Find the duration. finishes at , so the shortest project duration is .
Check. The two routes are and . The longer route is , matching the duration.
foundation3 marksA project has activities (duration , no predecessor), (duration , follows ), (duration , follows ) and (duration , follows both and ). By forward scanning, find the earliest start time (EST) and earliest finish time (EFT) of every activity.Show worked solution →
Forward scan from the start. opens the project, so and .
Activities that wait only on . Both and start when finishes, so .
- .
- .
Merge into , take the maximum. waits on both, so and .
Collect the results.
| Activity | EST | EFT |
|---|---|---|
Check. Each EFT is its EST plus duration, and takes the later predecessor finish (, from ). The project finishes at .
foundation3 marksA project has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ) and (duration , follows both and ). The forward scan gives a project duration of . By backward scanning, find the latest finish time (LFT) and latest start time (LST) of activity .Show worked solution →
- Set up the backward scan
- Work right to left from the finish at . At a split (one activity feeding several) take the minimum of the successors' latest start times.
- Last activity
- must finish by , so .
- Work back to
- feeds , and feeds .
- must start by , so . Hence .
- must finish in time for to start, so .
- .
State the answer. Activity has and .
Check. The EST of is (right after ), so its float is , a small positive slack, consistent with lying off the longest route .
core3 marksA landscaping project has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ) and (duration , follows both and ). Find the float of activity and state whether is critical.Show worked solution →
Forward scan for the EST of . , , so and .
Find the project duration (needed for the backward scan). The two routes to are:
- .
- .
So the duration is , and .
- Backward scan to the LFT of
- ; feeds , so and ; feeds , so .
- Compute the float
- .
- State the answer
- has float , so it is not critical: it can be delayed by up to unit without delaying the project.
- Check
- lies on the shorter route (, one less than ), so a slack of is exactly what we expect.
core4 marksA project has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows both and ) and (duration , follows ). Perform forward and backward scanning and set out a table of EST, EFT, LST, LFT and float for every activity. State the critical path and the project duration.Show worked solution →
Forward scan (earliest times). .
- and follow : both start at ; , .
- merges and : , .
- , . Project duration .
Backward scan (latest times) from . , ; , ; and both feed so .
Float is .
| Activity | EST | EFT | LST | LFT | Float |
|---|---|---|---|---|---|
Critical path. The zero-float activities are , , , , giving the critical path .
Check. Path equals the duration; only carries slack ().
core4 marksA project has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows both and ) and (duration , follows ). Using forward and backward scanning, list every activity that can be delayed without affecting the completion date and state the maximum delay (float) for each.Show worked solution →
Forward scan (earliest times). , .
- ; , .
- , .
- merges and : , .
- , . Duration .
- Backward scan (latest times) from
- , ; , ; , ; , so ; , .
- Float for each activity
- , , , , , .
- Answer
- Only has positive float, so is the only activity that can be delayed, by at most unit.
- Check
- Zero-float activities sum to , the project duration; alone holds slack.
core5 marksA construction project has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows both and ) and (duration , follows ). Perform forward and backward scanning, give a full table of EST, EFT, LST, LFT and float, and identify the critical path and project duration.Show worked solution →
Forward scan (earliest times). , .
- follow : , .
- , ; , .
- merges : , .
- , . Duration .
Backward scan (latest times) from . ; ; ; ; ; ; .
| Activity | EST | EFT | LST | LFT | Float |
|---|---|---|---|---|---|
Critical path. Zero-float activities give .
Check. equals the duration; the branch holds unit of slack.
exam6 marksA renovation project has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows both and ) and (duration , follows ). (a) Find the project duration and the critical path. (b) Find the float of and of . (c) Explain why delaying by units would not delay the project but delaying it by units would.Show worked solution →
- (a) Forward scan (earliest times)
- , ; , ; , ; merges : , ; . Duration .
- Backward scan (latest times) from
- ; ; ; ; , ; . The zero-float chain is .
- (b) Float
- : , , so float .
- : , , so float .
(c) Interpret the shared float on the chain . The units of float are shared along the chain , not held separately by each. Delaying by keeps the whole chain within that -unit slack, so still finishes by its latest finish () and the project ends at . Delaying by uses more than the available , pushing and then late, so the project would finish at .
Check. Critical path equals the duration, and the off-path branch measures , which is short of at , confirming the shared float of .
exam6 marksA project has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows both and ) and (duration , follows both and ). (a) Find the project duration and the critical path by forward and backward scanning. (b) Find the float of activity . (c) If is delayed by units, find the new project duration.Show worked solution →
- (a) Forward scan (earliest times)
- , ; , ; ; , ; merges : , ; merges : , . Duration .
- Backward scan (latest times) from
- , ; , ; ; ; . Now and , so . The zero-float chain is .
- (b) Float of
- .
- (c) Delay by
- This is beyond its float, so the project slips by : the new duration is . (Tracing it: now finishes at , then at , at , and at .)
- Check
- Critical path equals the original duration, and the delayed trace lands on , matching .
exam7 marksA large build has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows both and ), (duration , follows both and ) and (duration , follows ). Perform forward and backward scanning, give a full table of EST, EFT, LST, LFT and float, identify the critical path and project duration, and state which activities carry float and by how much.Show worked solution →
Forward scan (earliest times). , ; , ; , ; merges : , ; merges : here , so , ; . Duration .
Backward scan (latest times) from . ; ; ; , ; ; ; ; .
| Activity | EST | EFT | LST | LFT | Float |
|---|---|---|---|---|---|
Critical path and float. Zero-float activities give , duration . The activities with float are (), (), () and ().
Check. equals the duration, and every float equals in its row.
exam8 marksA commercial fit-out has activities (duration , no predecessor), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows ), (duration , follows both and ), (duration , follows both and ) and (duration , follows ). Perform forward and backward scanning, present a full table of EST, EFT, LST, LFT and float, identify the critical path and the project duration, and state the total of all the floats in the network.Show worked solution →
Forward scan (earliest times). , ; , ; , ; merges : , ; merges : here , so , ; . Duration .
Backward scan (latest times) from . ; ; ; , ; ; ; ; .
| Activity | EST | EFT | LST | LFT | Float |
|---|---|---|---|---|---|
Critical path and total float. Zero-float activities give the critical path at duration . Summing the float column: .
Check. equals the duration, and each row satisfies float .
