Алгоритм Форда

Шаг 0. Полагаем Ri =0, i=1,…,6.

Шаг 1. Последовательностно просматриваем дуги (работы) и пересчитываем ранги их концевых вершин:

S = 1 ð (1, 2): R2 = max {R2, R1 +1} = max {0, 0+1} = 1;

S = 2 ð (1, 6): R6 = max {R6, R1 +1} = max {0, 0+1} = 1;

S = 3 ð (2, 3): R3 = max {R3, R2 +1} = max {0, 1+1} = 2;

S = 4 ð (3, 4): R4 = max {R4, R3 +1} = max {0, 2+1} = 3;

S = 5 ð (4, 5): R5 = max {R5, R4 +1} = max {0, 3+1} = 4;

S = 6 ð (6, 4): R4 = max {R4, R6 +1} = max {3, 1+1} = 3;

S = 7 ð (6, 3): R3 = max {R3, R6 +1} = max {2, 1+1} = 2.

 

Шаг 2

S = 1 ð (1, 2): R2 = max {R2, R1 +1} = max {0, 1+1} = 1;

S = 2 ð (1, 6): R6 = max {R6, R1 +1} = max {1, 0+1} = 1;

S = 3 ð (2, 3): R3 = max {R3, R2 +1} = max {2, 1+1} = 2;

S = 4 ð (3, 4): R4 = max {R4, R3 +1} = max {3, 2+1} = 3;

S = 5 ð (4, 5): R5 = max {R5, R4 +1} = max {4, 3+1} = 4;

S = 6 ð (6, 4): R4 = max {R4, R6 +1} = max {3, 1+1} = 3;

S = 7 ð (6, 3): R3 = max {R3, R6 +1} = max {2, 1+1} = 2.

Конец работы алгоритма, т.к. значения на шаге 2 совпадают со значениями на шаге 1.

Получили ранги событий:

R1 =0; R2 =1; R3 =2; R4 =3; R5 =4; R6 =1.

Опр Нумерация сети правильная, если i(j) < k(j) для каждой дуги (работы) j = 1,…,n.

Правильная нумерация:

Ø Вход (вершина нулевого ранга) ð 1;

Ø Вершинам ранга 1 ð 2,…,m1;

Ø Вершинам ранга 2 ð m1+1,…,m2 и т.д.

Ø Выход сети ð m.