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