К содержанию

Подтема 5 из 6

Сдвиги процессов

Когда процесс можно запускать позже, позднее начало и запас, процессы «не раньше порога» и самые долгие отрезки при сдвигах.

Когда можно сдвигать

Обязательно ли запускать процесс сразу, как только он готов?

Только если так сказано в условии: «каждый процесс начинается в самое раннее допустимое время». Если этой фразы нет, процесс можно запустить и позже — и ответ ищут среди всех таких расписаний. Часто вместо неё стоит другая: «время окончания всех процессов минимально». Тогда сдвигать можно, но так, чтобы всё закончилось не позже, чем в раннем расписании.

Пример: процессы 1 и 2 по 4 мс ни от кого не зависят, 3 (2 мс) и 4 (4 мс) ждут процесс 2. Если всех запускать сразу, одновременно идут не больше двух процессов, а всё готово к 8:

Раннее расписание: процесс 1 идёт вместе с 2, потом 3 и 4 идут вдвоём. Больше двух одновременно — никогда.

Процесс 1 никто не ждёт, и его можно начать в 4 — он всё равно закончится к 8. Тогда на 5-й и 6-й мс идут три процесса: 1, 3 и 4.

Процесс 1 сдвинут на 4 мс, пунктир — его прежнее место. Общее время то же, 8, а три процесса идут вместе 2 мс.

Сдвигая процесс, проверяй тех, кто его ждёт: их тоже придётся сдвинуть, если поставщик теперь заканчивается позже их начала.

Позднее начало

Насколько можно сдвинуть процесс, чтобы всё закончилось к тому же времени?

До его позднего начала. Его считают с конца: процесс должен закончиться не позже позднего начала того, кто его ждёт (если ждут несколько — не позже самого раннего из их поздних начал), а если его никто не ждёт — не позже общего времени. Позднее начало — это позднее окончание минус время работы. Разница между поздним и ранним началом — запас: на столько процесс можно сдвинуть.

В учебном примере общее время 14. Идём с конца. 8 никто не ждёт: он должен закончиться к 14, начать — не позже 13. 6 и 7 ждёт процесс 8: они должны закончиться к 13, значит 6 начинает не позже 9, 7 — не позже 11. Процесс 4 ждут 6 и 7 — он должен успеть к более раннему из их поздних начал, к 9, и начать не позже 7. И так до самого начала:

IDРаннее началоПозднее началоЗапас
1022
2000
3462
4671
5660
6891
711110
813130

У процессов критической цепочки 2 → 5 → 7 → 8 запаса нет. Если все процессы поставить на поздние начала, расписание останется допустимым и закончится к 14:

Все процессы на поздних началах, пунктир — ранние места. Каждый поставщик по-прежнему успевает к тем, кто его ждёт.

Не раньше порога

Сколько процессов могут начаться не раньше чем через 7 мс, если всё должно закончиться за минимальное время?

Столько, у скольких позднее начало не меньше 7. Это 4 (позднее начало 7), 6 (9), 7 (11) и 8 (13) — четыре процесса. Расписание «все на поздних началах» допустимо, и в нём все четверо стартуют не раньше 7. У остальных позднее начало меньше 7 — их сдвинуть так далеко нельзя.

Частая ошибка — считать по раннему расписанию. Там не раньше 7 начинаются только 6, 7 и 8 — три. Так спрашивали в основной волне ЕГЭ-2026.

Вместе при сдвигах

Какое наибольшее время могут идти одновременно три процесса, если всё должно закончиться за минимальное время?

Сначала найди, какие процессы вообще могут идти вместе: ни один из них не должен ждать другого, даже через цепочку. Вместе они идут не дольше самого короткого из них. Потом сдвинь их в пределах запаса так, чтобы они совпали.

В раннем расписании три процесса идут вместе только на 7-й мс. Какие тройки вообще возможны? Процесс 8 ждёт всех, а процессов 1 и 2 ждут почти все. Если перебрать тройки по графу зависимостей, без ожидания внутри останется одна — 3, 4 и 5. Самый короткий из них — 4, 2 мс, значит, больше 2 мс тройка не продержится.

Добиться 2 мс можно: у процесса 3 запас 2 мс, сдвинем его начало с 4 на 6. Тогда 3, 4 и 5 идут вместе на 7-й и 8-й мс, а всё по-прежнему заканчивается к 14:

Процесс 3 сдвинут на 2 мс, процесс 6 — за ним на 1 мс. Три процесса идут вместе 7-ю и 8-ю мс.

Ответ таких задач всегда держится на двух доводах: расписание, где нужное время достигается, и причина, почему больше нельзя. Без второго ответ может оказаться не наибольшим.

Итого

  • Сдвигать нельзя«каждый процесс начинается в самое раннее время»
  • Сдвигать можнотакой фразы нет; «минимальное время» — в пределах запаса
  • Позднее окончаниераннее из поздних начал тех, кто ждёт; иначе общее время
  • Запаспозднее начало − раннее начало
  • Не раньше порогасколько поздних начал не меньше порога
  • Вместе при сдвигахпроцессы без зависимостей, не дольше самого короткого

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Как по условию понять, можно ли сдвигать процессы?
ОтветСкрыть ответ
Ответ
Есть фраза «каждый процесс начинается в самое раннее допустимое время» — нельзя. Нет её — можно; если сказано «время окончания всех процессов минимально», то только в пределах запаса.
Вопрос 2
Почему позднее начало процесса 1 в учебном примере равно 2?
ОтветСкрыть ответ
Ответ
Процесс 1 ждут 3 (позднее начало 6) и 4 (позднее начало 7). Он должен закончиться к 6, а работает 4 мс: 6 − 4 = 2.
Вопрос 3
Какой запас у процесса 5 и почему?
ОтветСкрыть ответ
Ответ
Никакого: 5 — в критической цепочке 2 → 5 → 7 → 8, любой его сдвиг задержит конец.
Вопрос 4
Сколько процессов учебного примера могут начаться не раньше чем через 9 мс, если всё должно закончиться за 14 мс?
ОтветСкрыть ответ
Ответ
Три: 6, 7 и 8 — их поздние начала 9, 11 и 13.
Вопрос 5
Почему в учебном примере четыре процесса не могут идти одновременно ни при каких сдвигах?
ОтветСкрыть ответ
Ответ
Без зависимостей внутри есть только одна тройка — 3, 4 и 5. Любая четвёрка содержит пару, где один процесс ждёт другого.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Позднее начало и запас

Процессы 1 и 2 по 4 мс ни от кого не зависят, 3 (2 мс) и 4 (4 мс) ждут процесс 2; общее время 8. Найди позднее начало процесса 1 и запас процесса 2.

Введите через пробел позднее начало процесса 1, затем запас процесса 2.

Позднее начало 4 и запас 1

В учебном примере найди позднее начало процесса 4 и запас процесса 1.

Введите два числа через пробел в том порядке, в каком их спрашивают.

Процессы без запаса

У каких процессов учебного примера нет запаса?

Введите номера процессов через пробел в порядке возрастания.

Не раньше 10 мс

Сколько процессов учебного примера могут начаться не раньше чем через 10 мс, если все процессы должны закончиться за минимальное время?

Введите число.

Не раньше 6 мс

Процессы: 1 — 3 мс, 0; 2 — 8 мс, 0; 3 — 2 мс, 1; 4 — 5 мс, 1; 3; 5 — 4 мс, 2; 4; 6 — 6 мс, 3; 7 — 1 мс, 5; 6. Процесс может начаться в любой момент после завершения всех процессов, от которых он зависит. Определите наибольшее количество процессов, которые могут начать выполнение не раньше чем через 6 мс после запуска первого процесса, если все процессы должны завершиться за минимально возможное время.

Введите число.

Три процесса вместе после сдвига

Процессы 1 и 2 по 4 мс ни от кого не зависят, 3 (3 мс) и 4 (4 мс) ждут процесс 2. Процессы можно запускать позже, но всё должно закончиться к 8. Какое наибольшее число миллисекунд могут одновременно идти три процесса?

Введите число.