Шешімі: Минимальное время процессов
В файле содержится информация о совокупности $N$ вычислительных процессов, которые могут выполняться параллельно или последовательно. Процесс $B$ зависит от процесса $A$, если для выполнения процесса $B$ необходимы результаты выполнения процесса $A$. В этом случае процессы могут выполняться только последовательно.
В файле данные представлены в виде таблицы: в первом столбце указан идентификатор процесса ($ID$), во втором — время его выполнения в миллисекундах, в третьем — через разделитель «;» перечислены $ID$ процессов, от которых зависит данный процесс. Если процесс является независимым, указано значение 0.
Определите минимальное время, через которое завершится выполнение всей совокупности процессов, если все независимые друг от друга процессы могут выполняться параллельно. Используйте данные из прилагаемого файла.
Шешім по шагам
4 қадамПредставим процессы в виде ориентированного графа: ребро направлено от процесса-зависимости к процессу, который можно запустить после него.
Для независимого процесса время завершения равно его длительности. Для остальных процессов сначала определяем время завершения всех предшественников.
Если процесс зависит от нескольких предшественников, его старт возможен только после завершения последнего из них. Поэтому время завершения вычисляется как сумма собственной длительности и максимального времени завершения предшественников.
$$T_i = t_i + \max\limits_{j \in P_i} T_j$$После обработки всех строк файла максимальное время завершения среди процессов равно 136 миллисекундам.
Где здесь ошибаются
Складывают длительности всех процессов, хотя независимые процессы выполняются параллельно.
Берут минимум времени завершения предшественников вместо максимума.
Не учитывают собственное время выполнения текущего процесса.