Решение: Параллельное выполнение процессов
В файле содержится информация о совокупности $N$ вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Будем говорить, что процесс $B$ зависит от процесса $A$, если для выполнения процесса $B$ необходимы результаты выполнения процесса $A$. В этом случае процессы $A$ и $B$ могут выполняться только последовательно.
Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы — время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс независимый, то в таблице указано значение 0.
Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно. Для выполнения задания используйте данные из прилагаемого файла.
Решение по шагам
4 шагаПредставим процессы в виде ориентированного графа: из процесса $A$ ведём ребро в процесс $B$, если $B$ зависит от $A$.
Для независимого процесса время завершения равно его длительности. Для зависимого процесса время завершения вычисляется как сумма его длительности и максимального времени завершения всех предшественников.
$$T_B = t_B + \max(T_{A_1}, T_{A_2}, \ldots)$$Вычисляя времена завершения процессов по таблице из приложенного файла, находим максимальное время завершения всей совокупности процессов.
Максимальное время завершения равно 29 миллисекундам.
Где здесь ошибаются
Складывают времена всех процессов, хотя независимые процессы выполняются параллельно.
При наличии нескольких зависимостей выбирают минимальное, а не максимальное время завершения предшественников.
Не учитывают длительность самого завершаемого процесса.