В компьютерной системе необходимо выполнить некоторое количество задач, которые могут выполняться параллельно или последовательно. Для запуска некоторых задач необходимы данные, которые получаются как результаты выполнения другой задачи — поставщика данных. Если зависимая задача получает данные от другой задачи (поставщика данных), то выполнение зависимой задачи не может начаться раньше завершения задачи-поставщика. Длительность выполнения задачи не зависит от других параллельно выполняемых задач, приостановка выполнения не допускается.
Для выполнения некоторых задач в системе необходимо запустить несколько параллельно выполняемых процессов. Все такие процессы запускаются в момент старта соответствующей задачи и заканчиваются в момент её завершения.
В таблице представлены идентификатор (ID) каждой задачи, её длительность в секундах и количество процессов, а также ID поставщика данных для зависимых задач. Для независимых задач в качестве ID поставщика данных указан 0.
Одновременно может выполняться не более 6 процессов. Задача может стартовать только, если возможен запуск всех необходимых для этой задачи процессов. Например, если в какой-то момент времени выполняется 5 процессов, то можно начать выполнение задачи, требующей запуска одного процесса, но нельзя начать выполнение задачи, требующей запуска двух и более процессов.
Если в какой-то момент к запуску готовы несколько задач, в первую очередь запускается задача с меньшим ID.
За какое время будут выполнены все задачи?
В ответе напишите число — требуемое время в секундах.
Нарисуем время выполняемых процессов. Если количество требуемых процессов более 1, покрасим процесс в красный цвет:
Начнем двигать вправо процессы так, чтобы всегда было только 6 выполняемых процесса. Первыми будут выполняться процессы 1,2, 3 и 7. Больше запустить процессов нельзя, так как 1 и 2 процессы занимают по 2 процесса. Как только завершиться самый короткий процесс (в этой задаче процессы 3 и 7), запускаем следующий процесс. Помним, что запущенный процесс должен иметь минимальный ID. Запускаем следующий по ID процессы 5 и 8. Расставляем далее процессы, следя за тем, чтобы одновременно выполнялось не более 6 процессов (с учетом количества процессов), запускались независимые процессы от текущих и с минимальным ID. Получаем следующую таблицу:
Все процессы будут выполнены за 26 мс.
Ответ: 26.

