The Critical Path Method (CPM) was developed jointly by DuPont and Remington Rand in 1957 to plan large industrial projects. It's a deterministic algorithm: given a network of activities, their durations, and the logic links between them, it computes the earliest and latest possible start and finish for every activity — and identifies which chain of activities has zero room to slip.
The forward pass
The forward pass moves left to right through the network. Each activity's Early Start (ES) is the latest Early Finish (EF) among all of its predecessors — it can't start before every activity feeding into it has finished. Its Early Finish is simply ES plus its own duration. Where an activity has multiple predecessors (like D, fed by both B and C), its ES is governed by whichever predecessor finishes latest.
The backward pass
The backward pass moves right to left, starting from the project's overall finish. Each activity's Late Finish (LF) is the earliest Late Start (LS) among all of its successors — it must finish in time for every activity depending on it to still start on schedule. Its Late Start is LF minus its own duration.
What the critical path actually is
Total float for any activity is LS minus ES (equivalently LF minus EF). The critical path is the chain of activities where that number is zero — not the activities someone judges "most important," but literally the longest path through the network, the one with no spare time between its earliest and latest possible dates. In this network, A→B→D is critical; A→C→D carries 5 days of float because C is shorter than B.
How P6 implements this
P6's scheduling engine runs exactly this algorithm, but calendar-aware: every date it produces respects each activity's assigned calendar (working days, non-working days, exceptions), so "duration 5" means 5 working days on that calendar, not 5 calendar days. The algorithm itself is fully deterministic — the same network, durations and calendars will always produce the same dates and float, which is why a re-run of the same schedule should never silently change your critical path.