Решение: Минимальное время процессов
В файле содержится информация о совокупности $N$ вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Процесс $B$ зависит от процесса $A$, если для выполнения процесса $B$ необходимы результаты выполнения процесса $A$. В этом случае процессы $A$ и $B$ могут выполняться только последовательно.
Информация о процессах представлена в файле в виде таблицы: в первом столбце указан идентификатор процесса (ID), во втором — время его выполнения в миллисекундах, в третьем — через разделитель «;» перечислены ID процессов, от которых зависит данный процесс. Если процесс независимый, указано значение 0.
Определите минимальное время (в мс), за которое завершатся 18 процессов. Считать, что каждый процесс начинается в самое раннее допустимое время. Время отсчитывается непрерывно с первой миллисекунды. Используйте данные из прилагаемого файла.
Решение по шагам
3 шагаПредставим процессы в виде ориентированного графа: зависимость означает, что процесс-источник должен завершиться до начала зависимого процесса.
Для каждого процесса вычисляем его раннее время начала: оно равно нулю для независимых процессов, а для остальных — максимальному времени окончания всех процессов-предшественников.
$$t_{\text{нач}}(B)=\max_{A\in P(B)}t_{\text{ок}}(A)$$Время окончания процесса равно сумме его раннего времени начала и длительности. После обработки всех 18 процессов максимальное время окончания равно 15 мс.
$$t_{\text{ок}}(B)=t_{\text{нач}}(B)+\tau_B=15$$Где здесь ошибаются
Складывают длительности всех процессов, не учитывая возможность параллельного выполнения.
Для процесса с несколькими предшественниками берут минимальное, а не максимальное время их окончания.
Путают раннее время начала процесса с временем его окончания.