The task information are summarized in a timeline like the following example:
task

predecessor

time

A

–

6

B

–

5

C

A

4

D

B

6

E

C

5

F

A, D

6

G

E, F

4

Step 1: Building the graph from the timeline
 Determination of the levels of the tasks:
Level 0 will be assigned to tasks that do not have a previous task.
Level 1 will be assigned to tasks whose previous tasks are level 0.
We will build the graph by tracing the tasks by increasing level.
 Beginning, finishing, convergent tasks:
Before starting the construction of the graph, it will often be useful to detect socalled starting, finishing or convergent tasks.
Step 2: Determine dates and margins
Once the graph is built, we will determine the dates at the earliest and at the latest for the different vertices and the free and total margins for the tasks.
 Dates at the earliest:
For a vertex, the earliest date (noted t) represents the minimum time required to reach that summit. It will be determined step by step, in ascending order of vertex, from the entry of the graph, thanks to Ford’s search algorithm of the longest path.
t_{1} = 0 and t_{j} = Max ( t_{i} + d_{ij} ) for all i predecessor of j and d_{ij} = time between i and j.
In our example, t_{1} = 0, t_{2} = 0+6 = 6, t_{3} = 0+5 = 5, t_{4} = 6+4 = 10, t_{5} = max ( 6+0 , 5+6 ) = 11, t_{6} = max ( 11+6 , 10+5 ) = 17, t_{7} = 17+4 = 21.
The earliest date of the output of the graph represents the minimum duration achievable for the entire project (in our example, t_{7}= 21).
 Dates at the latest:
For a vertex, the date at the latest (noted T) concretely represents the date on which this state must be reached if one does not want to increase the total duration of the project. It will be determined analogously to t, but in descending order of vertex, from the output of the graph to the input.
T_{n} = t_{n} = Total time and T_{i} = Min ( T_{j} – d_{ij} ) for all j predecessor of i.
In our example, T_{7} = 21, T_{6} = 21 – 4 = 17, T_{5} = 17 – 6 = 11, T_{4} = 17 – 5 = 12, T_{3} = 11 – 6 = 5, T_{2} = min ( 110 , 124 ) = 8, T_{1} = min ( 86 , 55 ) = 0.
We always have t_{1} = T_{1} = 0 and t inferior or equal to T for each vertex. We call Tt the margin for every vertex.
 Margin of task:
The free margin of a task represents the maximum possible delay of a task without delaying the start of the following tasks, note ML. The total margin of a task represents the maximum possible delay for carrying out a task without delaying the whole project, it will be noted MT: ML_{ij} = t_{j} – t_{i} – d_{ij} et MT_{ij} = T_{j} – t_{i} – d_{ij}.
Given the calculation mode, the margins are always positive or zero and the free margin of a task will always be less than or equal to its total margin.
It is called critical, a task whose total margin is zero. A critical task must not be delayed if we do not want to increase the total duration of the project.
If the duration of a noncritical task increases, part of this increase will be absorbed by the margin of the task, only the surplus will affect the duration of the project.
Aside
Vertices can contain multiple pieces of information at the same time: