Решение: Минимальное время процессов
В файле содержится информация о совокупности $N$ вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Процесс $B$ зависит от процесса $A$, если для выполнения процесса $B$ необходимы результаты выполнения процесса $A$. В этом случае процессы $A$ и $B$ могут выполняться только последовательно.
В файле процессы представлены таблицей: указаны идентификатор процесса, время его выполнения в миллисекундах и идентификаторы процессов, от которых он зависит. Для независимого процесса указано значение 0.
Определите минимальное время в миллисекундах, за которое завершатся 22 процесса. Считать, что каждый процесс начинается в самое раннее допустимое время. Минимальное время отсчитывается непрерывно с первой миллисекунды.
Решение по шагам
4 шагаПредставим процессы в виде ориентированного графа: ребро направлено от каждого процесса-зависимости к зависящему от него процессу.
Для независимого процесса время окончания равно его длительности. Для остальных процессов время окончания вычисляется как сумма собственной длительности и максимального времени окончания всех его предшественников.
$$T_i = t_i + \max\limits_{j \in P_i} T_j$$Последовательно обработав процессы в порядке зависимостей, получаем времена их наиболее раннего окончания. Так как процессы, не связанные зависимостями, выполняются параллельно, общее время равно максимуму среди этих значений.
Для набора из 22 процессов максимальное время окончания, то есть длина критического пути, составляет 21 мс.
Где здесь ошибаются
Складывают длительности всех 22 процессов, не учитывая возможность параллельного выполнения.
Берут сумму длительностей только непосредственных зависимостей, не учитывая цепочку предшествующих процессов.
Используют минимум вместо максимума при выборе времени окончания нескольких предшественников.