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