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

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

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

Шаг 1. Открыть файл. Таблица содержит 14 процессов (ID 101–114) с колонками: ID, время выполнения, зависимости.

Шаг 2. Добавить колонку D «Наиболее ранний старт (EST)» и колонку E «Наиболее раннее завершение (ECT = EST + время)».

Шаг 3. Вычислить EST для каждого процесса вручную:
— Процессы без зависимостей (0 в столбце C) стартуют в момент 0.
— Остальные: EST = max(ECT всех зависимостей).

Результаты:
| ID | Dur | Deps | EST | ECT |
|-----|-----|---------|-----|-----|
| 101 | 14 | — | 0 | 14 |
| 102 | 13 | — | 0 | 13 |
| 103 | 1 | 101,102 | 14 | 15 |
| 104 | 3 | 103 | 15 | 18 |
| 105 | 17 | 103 | 15 | 32 |
| 106 | 13 | 104 | 18 | 31 |
| 107 | 1 | 105,106 | 32 | 33 |
| 108 | 2 | 107 | 33 | 35 |
| 109 | 8 | — | 0 | 8 |
| 110 | 6 | 111 | 14 | 20 |
| 111 | 6 | 109 | 8 | 14 |
| 112 | 5 | 110 | 20 | 25 |
| 113 | 9 | 111,114 | 22 | 31 |
| 114 | 14 | 109 | 8 | 22 |

Шаг 4. В пустой ячейке ввести формулу:
=СЧЁТЕСЛИМН(D2:D15;">=8";E2:E15;"<=22")

Шаг 5. Проверяем вручную — процессы с EST ≥ 8 И ECT ≤ 22:
× 101: EST=0 < 8 — не подходит
× 102: EST=0 < 8 — не подходит
✓ 103: EST=14 ≥ 8, ECT=15 ≤ 22 — подходит
✓ 104: EST=15 ≥ 8, ECT=18 ≤ 22 — подходит
× 105: ECT=32 > 22 — не подходит
× 106: ECT=31 > 22 — не подходит
× 107: ECT=33 > 22 — не подходит
× 108: ECT=35 > 22 — не подходит
× 109: EST=0 < 8 — не подходит
✓ 110: EST=14 ≥ 8, ECT=20 ≤ 22 — подходит
✓ 111: EST=8 ≥ 8, ECT=14 ≤ 22 — подходит
× 112: ECT=25 > 22 — не подходит
× 113: ECT=31 > 22 — не подходит
✓ 114: EST=8 ≥ 8, ECT=22 ≤ 22 — подходит

Итого: процессы 103, 104, 110, 111, 114 — 5 штук.

Ответ: 5.
Ответ:5