Сетевое планирование: построение сетевого графика
Сетевое планирование - это способ описать проект в виде графа, где узлы (события) фиксируют моменты завершения работ, а дуги (работы) показывают, что одни задачи нельзя начать, пока не закончены другие. Ключевой результат построения сетевого графика - нахождение критического пути: самой длинной цепочки последовательно зависимых работ, которая определяет минимальный срок всего проекта. Любое опоздание на критической работе немедленно сдвигает дату окончания, тогда как некритические работы имеют резерв. Чтобы сразу увидеть механику метода, поиграйте с калькулятором ниже: он выполняет прямой и обратный проходы и показывает критический путь для шести работ при любых введённых продолжительностях.
Что такое сетевой граф и его элементы
Сетевой граф в методе критического пути (CPM, Critical Path Method) - это ориентированный ациклический граф. Его элементы:
- Событие (вершина, кружок на схеме) - факт завершения одной или нескольких работ, открывающий возможность начать следующие. Событие не имеет продолжительности.
- Работа (стрелка) - процесс, требующий времени и ресурсов. Каждая работа характеризуется продолжительностью , где - начальное событие, - конечное.
- Фиктивная работа (пунктирная стрелка) - зависимость между событиями без затрат времени (); используется для отображения логических связей, которые нельзя выразить прямой стрелкой.
Граф строится слева направо: начальное событие (одно) - слева, завершающее (одно) - справа. Нумерация узлов не обязана быть последовательной, но обычно удобно нумеровать так, чтобы для каждой работы выполнялось - это облегчает ручной проход и исключает путаницу.
Прямой проход: ранние времена событий
Прямой проход вычисляет - самое раннее время, когда событие может наступить. Начальному событию приписывают . Для каждого следующего события:
Максимум берётся по всем работам, входящим в событие : чтобы оно наступило, должны завершиться все предшествующие работы. Проход ведётся в топологическом порядке (от меньших номеров к большим при правильной нумерации).
Пример для шести работ (топология из калькулятора выше, продолжительности по умолчанию: A=4, B=5, C=6, D=3, E=4, F=5):
| Событие | Входящие работы | |
|---|---|---|
| 0 | - | 0 |
| 1 | A(0-1)=4 | 4 |
| 2 | B(0-2)=5, D(1-2)=3 | max(5, 4+3)=7 |
| 3 | C(1-3)=6, E(2-3)=4 | max(4+6, 7+4)=11 |
| 4 | F(3-4)=5 | 11+5=16 |
Таким образом, самый ранний срок завершения всего проекта - 16 дней.

Обратный проход: поздние времена событий
Обратный проход вычисляет - самое позднее допустимое время события , при котором проект ещё укладывается в срок. Завершающему событию присваивают (или директивный срок, если он задан). Для остальных событий, двигаясь справа налево:
Минимум берётся по всем работам, исходящим из события : если хоть одна последующая работа требует начала раньше, чем мы планировали, поздний срок сдвигается влево.
Для нашего примера:
| Событие | Исходящие работы | |
|---|---|---|
| 4 | - | 16 |
| 3 | F(3-4)=5 | 16-5=11 |
| 2 | E(2-3)=4 | 11-4=7 |
| 1 | C(1-3)=6, D(1-2)=3 | min(11-6, 7-3)=4 |
| 0 | A(0-1)=4, B(0-2)=5 | min(4-4, 7-5)=0 |
Резервы событий и критический путь
Резерв события показывает, на сколько можно сдвинуть наступление события без нарушения срока. Событие критическое, если .
Критический путь проходит через все критические события и состоит из критических работ. Работа критическая, если:
В нашем примере: , , , , . Проверяем работы:
- A(0-1): - да, критическая.
- C(1-3): - нет.
- D(1-2): - критическая.
- E(2-3): - критическая.
- F(3-4): - критическая.
Критический путь: 0-1-2-3-4 через работы A-D-E-F, длина 4+3+4+5=16 дней.
Резервы работ
Для каждой работы рассчитывают два вида резервов:
Полный резерв - максимальное время, на которое можно задержать начало работы, не увеличивая общую длительность проекта. Использование полного резерва «съедает» резервы других работ на том же пути.
Свободный резерв - время, на которое можно задержать работу, не затрагивая ранние времена последующих событий. Свободный резерв принадлежит только данной работе.
Для работы C(1-3) при дефолтных значениях:
Для работы B(0-2):
Пример построения сетевого графика шаг за шагом
Рассмотрим полный расчёт при продолжительностях A=4, B=5, C=6, D=3, E=4, F=5.
Шаг 1. Прямой проход:
Шаг 2. Обратный проход:
Шаг 3. Резервы событий: , , , , - все нулевые в данном примере.
Шаг 4. Критический путь: работы A, D, E, F; события 0-1-2-3-4; длина 16 дней.
Шаг 5. Резервы работ:
- A, D, E, F: (критические).
- B(0-2): , .
- C(1-3): , .
Обратите внимание: если увеличить продолжительность работы C до 8 дней, то вырастет до 12, а критический путь перейдёт на цепочку 0-1-3-4 = 4+8+5 = 17 дней. Попробуйте это в калькуляторе выше.
Частые ошибки
- Неверный порядок прямого прохода. При наличии нескольких путей к событию берётся максимум, а не минимум. Ошибка «взяли первый попавшийся» ведёт к занижению и, как следствие, к нереалистичному расписанию.
- Смешение прямого и обратного проходов. Обратный проход выполняется строго после прямого и двигается справа налево. Попытка совместить оба прохода в один проход приводит к ошибкам в .
- Забытые фиктивные работы. Фиктивная работа необходима, когда два события должны совпасть логически, но у них нет общей реальной работы. Её отсутствие искажает зависимости.
- Директивный срок меньше длины критического пути. В этом случае , и резервы событий становятся отрицательными - это сигнал, что проект не укладывается в заданный срок ни при каком планировании.
- Путаница между полным и свободным резервом. Полный резерв показывает максимальный сдвиг без нарушения срока всего проекта, но за счёт резервов других работ; свободный резерв - безопасный сдвиг только данной работы. Использовать полный резерв без согласования с менеджером проекта опасно.
FAQ
Что такое критический путь и как его найти? Критический путь - самый длинный путь от начального до конечного события в сетевом графе. Его длина определяет минимальный срок проекта. Находят его через прямой и обратный проходы: критические события имеют нулевой резерв , а критические работы соединяют только критические события с условием .
Может ли в сетевом графике быть несколько критических путей? Да. Если несколько путей от начала до конца имеют одинаковую максимальную длину, они все критические. Это усложняет управление проектом: задержка на любом из них сдвигает срок. При увеличении продолжительности одной из некритических работ до уровня критических путей появляется ещё один критический путь.
Чем метод CPM отличается от метода PERT? CPM (Critical Path Method) использует фиксированную детерминированную продолжительность каждой работы. PERT (Program Evaluation and Review Technique) применяет три оценки для каждой работы: оптимистичную, наиболее вероятную и пессимистичную, вычисляя ожидаемую продолжительность по формуле . CPM удобен, когда продолжительности известны точно (строительство, производство); PERT - когда они неопределённы (R&D, исследования).
Коротко
Построение сетевого графика сводится к трём шагам: прямой проход (ранние времена событий через максимум), обратный проход (поздние времена через минимум) и вычисление резервов. Критический путь проходит через события с нулевым резервом и определяет минимальный срок проекта; его длина равна завершающего события. Полный резерв работы показывает, насколько безопасно сдвинуть задачу, не выходя за дедлайн.
Читайте также

Абстрактный класс и интерфейс: в чём отличие
Абстрактный класс и интерфейс: чем отличаются в ООП, когда наследовать поведение, а когда задавать контракт, как выбрать на примерах Java, C# и Python.

Алгоритм AdaBoost: как слабые классификаторы дают сильный
Алгоритм AdaBoost простыми словами: адаптивный бустинг, перевзвешивание объектов, формула веса классификатора, итоговый ансамбль и разбор шага на примере с формулами.

Алгоритм CatBoost: бустинг с обработкой категорий
Алгоритм CatBoost простыми словами: упорядоченный бустинг против сдвига прогноза, кодирование категориальных признаков через ordered target statistics, симметричные деревья и разбор типовых задач.