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