Задание 22 ЕГЭ по информатике — параллельные процессы и минимальное время
Разбор задания 22 ЕГЭ по информатике 2026: таблица процессов с зависимостями, минимальное время завершения. Решение в LibreOffice Calc и на Python, разбор примера и типичные ошибки.
О чём задание
С 2023 года задание 22 — это параллельные процессы. Тебе дают файл с таблицей: у каждого процесса есть идентификатор, время выполнения в миллисекундах и список процессов-предшественников. Правила простые:
- процесс может начать выполняться только когда завершились все его предшественники;
- процессы, не зависящие друг от друга, выполняются одновременно;
- процесс без предшественников стартует в момент 0.
Типовой вопрос: через какое минимальное время завершится выполнение всего пакета процессов?
Задание стоит 1 первичный балл и относится к повышенному уровню, но по сути это одна формула, применённая построчно. Как выглядит актуальная формулировка — смотри в разборе демоверсии 2026.
Главная формула
Для каждого процесса i считаем время завершения:
конец(i) = длительность(i) + max(конец всех предшественников i)
Если предшественников нет — конец(i) = длительность(i): процесс стартует в нулевой момент.
Ответ на классический вопрос — максимум из времён завершения всех процессов: пакет закончен, когда закончился самый поздний процесс.
Больше ничего в задании 22 нет. Вся работа — аккуратно применить формулу к каждой строке таблицы, не перепутав зависимости.
Разбор примера
Условие. В файле — таблица из пяти процессов:
| ID процесса | Время выполнения (мс) | ID предшественников |
|---|---|---|
| 1 | 4 | 0 |
| 2 | 3 | 0 |
| 3 | 5 | 1 |
| 4 | 2 | 1;2 |
| 5 | 6 | 3;4 |
Найди минимальное время, через которое завершится весь пакет.
Решение — идём по строкам и считаем время завершения:
| Процесс | Расчёт | Конец |
|---|---|---|
| 1 | нет предшественников: 4 | 4 |
| 2 | нет предшественников: 3 | 3 |
| 3 | ждёт процесс 1: 4 + 5 | 9 |
| 4 | ждёт 1 и 2: max(4, 3) + 2 = 4 + 2 | 6 |
| 5 | ждёт 3 и 4: max(9, 6) + 6 = 9 + 6 | 15 |
Максимум по столбцу «Конец» — 15 мс, его и записываем в ответ.
Обрати внимание на процесс 4: он ждёт обоих предшественников, поэтому берётся максимум их времён завершения, а не сумма и не первый попавшийся. Это главное место, где ошибаются.
Решение в LibreOffice Calc
Файл уже открыт в Calc — данные в столбцах A (ID), B (длительность), C (предшественники). В ЕГЭ строки обычно упорядочены так, что предшественники стоят выше своих потомков, поэтому столбец «конец» заполняется сверху вниз без хитростей.
- В столбце D считай время завершения. Для процесса без предшественников:
=B2. - Для процесса с одним предшественником с ID из ячейки C:
=B4 + ВПР(C4; $A:$D; 4; 0)— ВПР подтягивает время завершения предшественника. - Для двух предшественников, записанных как «1;2», проще разнести их по отдельным колонкам. Разбивать сам столбец C не стоит: второй ID попал бы в D и затёр столбец «конец». Поэтому скопируй предшественников в столбец E и разбей уже его (Данные → Текст по столбцам, разделитель «;») — первый ID окажется в E, второй в F. Тогда
=B5 + MAX(ВПР(E5; $A:$D; 4; 0); ВПР(F5; $A:$D; 4; 0)). - Ответ:
=MAX(D2:D...)по всему столбцу.
Если зависимостей в ячейке больше двух или строки идут вперемешку (предшественник ниже потомка — формула сослалась бы на ещё не посчитанную ячейку), надёжнее перейти в Python. Общие приёмы работы с таблицами на экзамене собраны в справочнике по Excel и Calc.
Решение на Python
Перепиши таблицу в словарь и посчитай рекурсией с мемоизацией:
from functools import lru_cache
# id: (длительность, [предшественники])
data = {
1: (4, []),
2: (3, []),
3: (5, [1]),
4: (2, [1, 2]),
5: (6, [3, 4]),
}
@lru_cache(maxsize=None)
def end(i):
dur, deps = data[i][0], data[i][1]
return dur + max((end(j) for j in deps), default=0)
print(max(end(i) for i in data)) # 15
default=0 в max обрабатывает процессы без предшественников: ждать некого, старт в нуле. Мемоизация (@lru_cache) нужна, чтобы время каждого процесса считалось один раз, — на таблицах из 20-30 процессов это мгновенно.
Для больших таблиц данные не набирают руками: выдели в Calc столбцы, вставь в код как текст и разбери split() — или сохрани лист в CSV и прочитай через модуль csv.
Вариации вопроса
Схема «посчитай конец каждого процесса» отвечает на любой вариант формулировки:
| Вопрос из условия | Что делать после расчёта |
|---|---|
| Минимальное время выполнения всех процессов | max(end(i)) — классика |
| Когда начнёт выполняться процесс K | end(K) - длительность(K) |
| Сколько процессов завершится к моменту T | посчитай, у скольких end(i) <= T |
| Максимальная длительность процесса B, чтобы пакет успел за T | подставляй разные длительности B и смотри на общий максимум — удобно перебором в Python |
Последний тип — самый хитрый: длительность одного процесса становится переменной. В Python это цикл по кандидатам с пересчётом; в Calc — ручная подстановка значений в ячейку.
Типичные ошибки
1. Сумма вместо максимума
Процесс ждёт всех предшественников, поэтому берётся max их времён завершения. Сложение времён — самая частая ошибка: она завышает ответ и выглядит правдоподобно.
2. Неправильно прочитаны зависимости
В ячейке «1;2» — два предшественника, а не число 12. «0» — предшественников нет, а не процесс с номером 0. Перед решением пробегись по столбцу зависимостей и убедись, что понимаешь каждую ячейку.
3. Процессы «по порядку»
Порядок строк в таблице — не порядок выполнения. Независимые процессы идут параллельно, и процесс из пятой строки может закончиться раньше процесса из второй. Считай только по зависимостям.
4. Перепутаны начало и конец
end(i) - длительность(i) — момент старта, end(i) — момент завершения. Если в вопросе «когда начнёт выполняться», а ты дал время завершения — балл потерян. Перечитай вопрос после решения.
5. Формула в Calc сослалась на пустую ячейку
Если предшественник стоит в таблице ниже потомка, формула возьмёт из его строки ноль и молча посчитает не то. Проверь порядок строк; если он смешанный — решай на Python, рекурсия с мемоизацией от порядка строк не зависит.
Подборка ошибок по всем заданиям — в статье Типичные ошибки на ЕГЭ по информатике.
Тайминг на экзамене
| Этап | Время |
|---|---|
| Открыть файл, понять таблицу и зависимости | 1-2 мин |
| Заполнить столбец «конец» (Calc) или набрать словарь (Python) | 2-3 мин |
| Посчитать ответ и проверить 2-3 строки руками | 1-2 мин |
| Записать ответ | 30 сек |
| Итого | 5-8 мин |
Если за 10 минут не сошлось — пометь задание и иди дальше: впереди 26 и 27 по 2 балла. Как распределять время на весь экзамен — в статье Как набрать 90+ баллов.
Как тренироваться
- Реши 10-15 задач из банка ФИПИ и вариантов СтатГрада. Цель — довести чтение таблицы и заполнение столбца «конец» до автоматизма.
- Каждую задачу решай двумя способами — в Calc и на Python. Совпали ответы — значит, зависимости прочитаны верно.
- Отдельно отработай вариацию «максимальная длительность процесса B» — она встречается реже, но требует перебора, и лучше увидеть её до экзамена.
- Проверяй себя ручным счётом на маленьких таблицах из 5-6 процессов, как в примере выше.
Если ты только начинаешь и ещё не уверен в базе Python — начни с плана Подготовка к ЕГЭ по информатике с нуля, а затем вернись к блоку 22-25.
Короткий итог
Задание 22 — одна формула: конец процесса = его длительность плюс максимум концов предшественников, ответ — максимум по всем процессам. Решается и в Calc, и на Python за 5-8 минут; все потери баллов здесь — от невнимательного чтения таблицы, а не от сложности алгоритма.
Задачи на процессы с автопроверкой есть в TuteMe: разные размеры таблиц и все вариации вопроса, а после ошибки показывается разбор с посчитанными временами каждого процесса.