№22 — примеры решений

Один эталонный разбор.

📐 Формулы и краткие пояснения
шпаргалка
В №22 ответ зависит от точной формулировки в условии. Найди в задаче ключевую фразу и определи, к какому из трёх случаев она относится.
🔒 Двигать нельзя
Триггер в условии время завершения каждого процесса минимально
  • Каждый процесс стартует сразу после того, как завершилась его последняя зависимость.
  • Процессы фиксированы во времени — двигать запрещено.
  • Строим диаграмму, считаем для каждого процесса старт = max(окончание зависимостей) и финиш = старт + длительность.
  • На полученной диаграмме ищем максимальный отрезок, где одновременно работает наибольшее число процессов — это и есть ответ.
↔️ Двигать в пределах границы
Триггер в условии время окончания работы всех процессов минимально
  • Сначала находим итоговое время T = длина критического пути (как в случае «двигать нельзя»).
  • Это граница: ни один процесс не может закончиться позже T.
  • В пределах T процессы можно сдвигать вправо (ставить позже самого раннего старта), не нарушая зависимости и не выходя за T.
  • Сдвигаем процессы так, чтобы максимизировать перекрытие. Считаем самый длинный отрезок одновременной работы.
♾️ Двигать как угодно
Триггер в условии процессы могут выполняться параллельнобез требования минимизации времени окончания.
  • Никакой общей границы итогового времени нет — диаграмму можно растянуть сколько угодно вправо.
  • Зависимости по-прежнему обязаны соблюдаться (B после A).
  • Свободные (без общих зависимостей) процессы можно сдвинуть так, чтобы они полностью перекрывались.
  • Ответ — длительность самого короткого процесса в группе наибольшего одновременного выполнения (на сколько хватит самого короткого, столько они и будут параллельно).
💡 Алгоритм действий: сначала прочитай последнее предложение условия — обычно ключевая фраза там. Если её нет вовсе — это случай «двигать как угодно».
#2219 Время завершения
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы A и B могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс независимый, то в таблице указано значение 0. Определите максимальное количество процессов, которые параллельно выполняются на 6-й мс. Считать, что каждый процесс начинается в самое раннее допустимое время. Нумерация миллисекунд начинается с 1. Типовой пример организации данных в файле
ID процесса BВремя выполнения процесса B (мс)ID процесса(-ов) A
130
241
322; 4
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.
По файлу строим для каждого процесса наиболее раннее время старта: независимые процессы стартуют в момент 0, остальные стартуют после завершения всех процессов, от которых зависят.
На 6-й миллисекунде процесс выполняется, если start < 6 <= finish.
Для файла подходят процессы 7, 8, 14, 18, 20 и 23.
Ответ: 6.
Ответ:6