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