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