Подтема 5 из 6
Сдвиги процессов
Когда процесс можно запускать позже, позднее начало и запас, процессы «не раньше порога» и самые долгие отрезки при сдвигах.
Когда можно сдвигать
Обязательно ли запускать процесс сразу, как только он готов?
Только если так сказано в условии: «каждый процесс начинается в самое раннее допустимое время». Если этой фразы нет, процесс можно запустить и позже — и ответ ищут среди всех таких расписаний. Часто вместо неё стоит другая: «время окончания всех процессов минимально». Тогда сдвигать можно, но так, чтобы всё закончилось не позже, чем в раннем расписании.
Пример: процессы 1 и 2 по 4 мс ни от кого не зависят, 3 (2 мс) и 4 (4 мс) ждут процесс 2. Если всех запускать сразу, одновременно идут не больше двух процессов, а всё готово к 8:
Процесс 1 никто не ждёт, и его можно начать в 4 — он всё равно закончится к 8. Тогда на 5-й и 6-й мс идут три процесса: 1, 3 и 4.
Сдвигая процесс, проверяй тех, кто его ждёт: их тоже придётся сдвинуть, если поставщик теперь заканчивается позже их начала.
Позднее начало
Насколько можно сдвинуть процесс, чтобы всё закончилось к тому же времени?
До его позднего начала. Его считают с конца: процесс должен закончиться не позже позднего начала того, кто его ждёт (если ждут несколько — не позже самого раннего из их поздних начал), а если его никто не ждёт — не позже общего времени. Позднее начало — это позднее окончание минус время работы. Разница между поздним и ранним началом — запас: на столько процесс можно сдвинуть.
В учебном примере общее время 14. Идём с конца. 8 никто не ждёт: он должен закончиться к 14, начать — не позже 13. 6 и 7 ждёт процесс 8: они должны закончиться к 13, значит 6 начинает не позже 9, 7 — не позже 11. Процесс 4 ждут 6 и 7 — он должен успеть к более раннему из их поздних начал, к 9, и начать не позже 7. И так до самого начала:
| ID | Раннее начало | Позднее начало | Запас |
|---|---|---|---|
| 1 | 0 | 2 | 2 |
| 2 | 0 | 0 | 0 |
| 3 | 4 | 6 | 2 |
| 4 | 6 | 7 | 1 |
| 5 | 6 | 6 | 0 |
| 6 | 8 | 9 | 1 |
| 7 | 11 | 11 | 0 |
| 8 | 13 | 13 | 0 |
У процессов критической цепочки 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:
Ответ таких задач всегда держится на двух доводах: расписание, где нужное время достигается, и причина, почему больше нельзя. Без второго ответ может оказаться не наибольшим.
Итого
- Сдвигать нельзя«каждый процесс начинается в самое раннее время»
- Сдвигать можнотакой фразы нет; «минимальное время» — в пределах запаса
- Позднее окончаниераннее из поздних начал тех, кто ждёт; иначе общее время
- Запаспозднее начало − раннее начало
- Не раньше порогасколько поздних начал не меньше порога
- Вместе при сдвигахпроцессы без зависимостей, не дольше самого короткого
Проверьте себя
Ответь сначала сам, потом открой ответ.
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
ОтветСкрыть ответ
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Позднее начало и запас
Процессы 1 и 2 по 4 мс ни от кого не зависят, 3 (2 мс) и 4 (4 мс) ждут процесс 2; общее время 8. Найди позднее начало процесса 1 и запас процесса 2.
Введите через пробел позднее начало процесса 1, затем запас процесса 2.
Подсказка
Процесс 1 никто не ждёт: он должен закончиться к 8.
Решение
Позднее начало процесса 1 — 4; у процесса 2 запаса нет.
Ответ: 4 0
Позднее начало 4 и запас 1
В учебном примере найди позднее начало процесса 4 и запас процесса 1.
Введите два числа через пробел в том порядке, в каком их спрашивают.
Подсказка
Считай с конца от общего времени 14.
Решение
Позднее начало процесса 4 — 7; запас процесса 1 — 2 мс.
Ответ: 7 2
Процессы без запаса
У каких процессов учебного примера нет запаса?
Введите номера процессов через пробел в порядке возрастания.
Подсказка
Запас — позднее начало минус раннее.
Решение
2, 5, 7 и 8 — критическая цепочка.
Ответ: 2 5 7 8
Не раньше 10 мс
Сколько процессов учебного примера могут начаться не раньше чем через 10 мс, если все процессы должны закончиться за минимальное время?
Введите число.
Подсказка
Сравнивай с порогом поздние начала, а не ранние.
Решение
2: процессы 7 (позднее начало 11) и 8 (13).
Ответ: 2
Не раньше 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 мс после запуска первого процесса, если все процессы должны завершиться за минимально возможное время.
Введите число.
Подсказка
Найди поздние начала всех процессов и сравни с порогом.
Решение
3: процессы 5, 6 и 7.
Ответ: 3
Три процесса вместе после сдвига
Процессы 1 и 2 по 4 мс ни от кого не зависят, 3 (3 мс) и 4 (4 мс) ждут процесс 2. Процессы можно запускать позже, но всё должно закончиться к 8. Какое наибольшее число миллисекунд могут одновременно идти три процесса?
Введите число.
Подсказка
Три процесса вместе — это 1, 3 и 4; сдвинь процесс 1.
Решение
3 мс: процесс 1 начинает в 4, тройка 1, 3, 4 идёт вместе с 5-й по 7-ю мс.
Ответ: 3