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