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