Project activities and logical dependencies between pairs of activities are modelled as an *activity network*. Each node represents an activity. Each link represents a dependency from a predecessor activity to a successor activity. The dependency between a pair of activities is assigned a weight equal to the free float computed according to the relationship type using the predecessor’s calendar.

The activity network representing the project schedule is augmented with a dummy project start milestone `S`

and a dummy project finish milestone `F`

. `S`

is assigned a start date equal to the Must-Start-By (MSB) date of the project. If such a date does not exist in the schedule, this dummy start `S`

is assigned the start date of the earliest starting activity. `S`

is connected via a predecessor FS relationship (`S → x`

) to all root activities (i.e., without any predecessors). `F`

is assigned a finish date equal to the Must-Finish-By (MFB) date of the project. If this date doesn’t exist explicitly in the date, this dummy end `F`

is assigned the finish date of the latest ending activity. It is connected to all leaf activities (i.e., without any successors) via a successor FS relationship (`x → F`

).

To calculate both critical and near critical paths, we must first find all paths that lead to the activity you select, and then find a way to rank them to reflect their relative importance.

Whether a path is a critical or near-critical path can be defined by the sum of free floats that exist within the pair of activities contained within that path. Technically speaking, the critical path is a path where all the relationships within that path have free float that sum to zero. We refer to this sum of free float as the path float. We can use this notion to further define near-critical paths as paths which have a path float of greater than zero and greater than the path float of the path with the lowest path float.

First, we use a proprietary implementation of a peer-reviewed algorithm [1] to find all paths that end to the activity you select. We then filter paths that are almost identical, calculate each path float, and then rank them. Once we have our paths, we rank them based on the path float, and give you the top 5, ranked from the most critical to the least critical one.

If two paths have the same path float, we rank higher the path that has more activities from the two, since having more activities means that the individual free float components are smaller and therefore, more critical. Sometimes you may see fewer than 5 paths - this is because there are not enough paths that drive that particular activity you have selected.

[1] Yen, J.Y. (1971), “Finding the K Shortest Loopless Paths in a Network”, *Management Science*, Vol. 17, No. 11, pp. 712-716.

Once we have those 100 top paths, we use a proprietary method to group them together in a way so that we can reduce the number of almost identical paths, and help you focus on paths that are truly distinct.

The example below shows a simple case where in theory, we have two paths - the path of activities 1,2,3,4 and the path 1,A,3,4. In this case, the algorithm will group these two paths together, and visualise the archetype path in the Paths screen i.e., the path with the minimum path float from that group of similar paths. In this case, this archetype path is 1,2,3,4 because 1,A,3,4 has more path float.

Not necessarily. The concept of the project critical path - the sequence of activities that has the smallest path float, typically 0 - is distinct. The project’s critical project starts at the start of the project (dummy node `S`

) and ends at the end of the project (dummy node `F`

). However, the critical path of the activity you have selected starts at the start of the project (summy node S) and ends at the activity you have selected.

Therefore, if you select the last activity in a project, then the most critical path you will see will be identical to the overall project’s critical path. There can also be cases where the activity you select is on the project’s critical path, and therefore the path that you see is a part of the project’s critical path, but that is due to the fact that your activity’s path overlaps with the project’s critical path.