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