5 мин чтения

Задание 22 ЕГЭ по информатике — параллельные процессы и минимальное время

Разбор задания 22 ЕГЭ по информатике 2026: таблица процессов с зависимостями, минимальное время завершения. Решение в LibreOffice Calc и на Python, разбор примера и типичные ошибки.

О чём задание

С 2023 года задание 22 — это параллельные процессы. Тебе дают файл с таблицей: у каждого процесса есть идентификатор, время выполнения в миллисекундах и список процессов-предшественников. Правила простые:

  • процесс может начать выполняться только когда завершились все его предшественники;
  • процессы, не зависящие друг от друга, выполняются одновременно;
  • процесс без предшественников стартует в момент 0.

Типовой вопрос: через какое минимальное время завершится выполнение всего пакета процессов?

Задание стоит 1 первичный балл и относится к повышенному уровню, но по сути это одна формула, применённая построчно. Как выглядит актуальная формулировка — смотри в разборе демоверсии 2026.

Главная формула

Для каждого процесса i считаем время завершения:

конец(i) = длительность(i) + max(конец всех предшественников i)

Если предшественников нет — конец(i) = длительность(i): процесс стартует в нулевой момент.

Ответ на классический вопрос — максимум из времён завершения всех процессов: пакет закончен, когда закончился самый поздний процесс.

Больше ничего в задании 22 нет. Вся работа — аккуратно применить формулу к каждой строке таблицы, не перепутав зависимости.

Разбор примера

Условие. В файле — таблица из пяти процессов:

ID процессаВремя выполнения (мс)ID предшественников
140
230
351
421;2
563;4

Найди минимальное время, через которое завершится весь пакет.

Решение — идём по строкам и считаем время завершения:

ПроцессРасчётКонец
1нет предшественников: 44
2нет предшественников: 33
3ждёт процесс 1: 4 + 59
4ждёт 1 и 2: max(4, 3) + 2 = 4 + 26
5ждёт 3 и 4: max(9, 6) + 6 = 9 + 615

Максимум по столбцу «Конец» — 15 мс, его и записываем в ответ.

Обрати внимание на процесс 4: он ждёт обоих предшественников, поэтому берётся максимум их времён завершения, а не сумма и не первый попавшийся. Это главное место, где ошибаются.

Решение в LibreOffice Calc

Файл уже открыт в Calc — данные в столбцах A (ID), B (длительность), C (предшественники). В ЕГЭ строки обычно упорядочены так, что предшественники стоят выше своих потомков, поэтому столбец «конец» заполняется сверху вниз без хитростей.

  1. В столбце D считай время завершения. Для процесса без предшественников: =B2.
  2. Для процесса с одним предшественником с ID из ячейки C: =B4 + ВПР(C4; $A:$D; 4; 0) — ВПР подтягивает время завершения предшественника.
  3. Для двух предшественников, записанных как «1;2», проще разнести их по отдельным колонкам. Разбивать сам столбец C не стоит: второй ID попал бы в D и затёр столбец «конец». Поэтому скопируй предшественников в столбец E и разбей уже его (Данные → Текст по столбцам, разделитель «;») — первый ID окажется в E, второй в F. Тогда =B5 + MAX(ВПР(E5; $A:$D; 4; 0); ВПР(F5; $A:$D; 4; 0)).
  4. Ответ: =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)) — классика
Когда начнёт выполняться процесс Kend(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+ баллов.

Как тренироваться

  1. Реши 10-15 задач из банка ФИПИ и вариантов СтатГрада. Цель — довести чтение таблицы и заполнение столбца «конец» до автоматизма.
  2. Каждую задачу решай двумя способами — в Calc и на Python. Совпали ответы — значит, зависимости прочитаны верно.
  3. Отдельно отработай вариацию «максимальная длительность процесса B» — она встречается реже, но требует перебора, и лучше увидеть её до экзамена.
  4. Проверяй себя ручным счётом на маленьких таблицах из 5-6 процессов, как в примере выше.

Если ты только начинаешь и ещё не уверен в базе Python — начни с плана Подготовка к ЕГЭ по информатике с нуля, а затем вернись к блоку 22-25.

Короткий итог

Задание 22 — одна формула: конец процесса = его длительность плюс максимум концов предшественников, ответ — максимум по всем процессам. Решается и в Calc, и на Python за 5-8 минут; все потери баллов здесь — от невнимательного чтения таблицы, а не от сложности алгоритма.

Задачи на процессы с автопроверкой есть в TuteMe: разные размеры таблиц и все вариации вопроса, а после ошибки показывается разбор с посчитанными временами каждого процесса.

Попробовать бесплатно →

Частые вопросы

Сколько стоит задание 22 в первичных баллах

Задание 22 стоит 1 первичный балл из 29 возможных. Уровень — повышенный, но при отработанном шаблоне задача решается за 5-8 минут: вся сложность в аккуратном чтении таблицы зависимостей, а не в алгоритме. Подробнее о шкале баллов — в статье Баллы ЕГЭ по информатике для вузов.

Что дано в задании 22 и что нужно найти

Дан файл с таблицей процессов. У каждого процесса три поля: идентификатор (ID), время выполнения в миллисекундах и список процессов-предшественников (0 означает, что предшественников нет). Процесс может начаться только после того, как завершатся все его предшественники; независимые процессы выполняются одновременно. Классический вопрос: минимальное время, через которое завершится весь пакет процессов.

В каком формате выдают файл и как его открыть

Обычно это электронная таблица в формате .ods — она открывается в LibreOffice Calc двойным кликом. Формат .xlsx на КЕГЭ не используется, так что искать Excel не придётся. Внутри — та самая таблица: ID, длительность, предшественники. Если предшественников несколько, они перечислены в одной ячейке через точку с запятой, например «1;2». Считать можно прямо в Calc формулами или переписать данные в Python.

Как решать задание 22 в LibreOffice Calc

Добавь рядом с таблицей столбец «время завершения». Для процессов без предшественников это просто их длительность. Для остальных: длительность + максимум из времён завершения предшественников. Если строки упорядочены так, что предшественники стоят выше (в ЕГЭ обычно так), формулы просто ссылаются на уже посчитанные ячейки. Ответ — максимум по всему столбцу.

Как решать задание 22 на Python

Перепиши таблицу в словарь {id: (длительность, [предшественники])} и посчитай время завершения рекурсивной функцией с мемоизацией: end(i) = длительность + max(end(j) по предшественникам, 0). Ответ — max(end(i)) по всем процессам. Весь код — 10 строк; главное — не ошибиться при переносе таблицы.

Чем задание 22 отличается от задания 23

Внешне оба — про «программы и исполнителей», но задачи разные. В 22 дана таблица процессов с зависимостями, и ты считаешь время при параллельном выполнении. В задании 23 исполнитель преобразует число командами, и ты считаешь количество программ через динамическое программирование.

Сколько времени тратить на задание 22

Ориентир — 5-8 минут: пара минут на чтение таблицы, пара на формулы или код, минута на проверку. Если таблица большая и в зависимостях легко запутаться — надёжнее Python: там каждый шаг видно. Больше 10 минут сидеть не стоит — пометь и вернись позже.

Какие вопросы встречаются кроме минимального времени

Вариации: максимальная длительность процесса B, при которой пакет всё ещё успевает за время T; время начала конкретного процесса; сколько процессов уже завершится к заданному моменту. Схема решения не меняется — сначала считаешь времена завершения всех процессов, потом отвечаешь на конкретный вопрос по этим числам.

Готов применять на практике?

В тренажёре TuteMe — 1250 заданий ЕГЭ по информатике с автоматической проверкой и подробным разбором. AI-помощник подсказывает, где ты ошибаешься, и подбирает задания под твой уровень.

Начать бесплатно →

Не пишешь код? Курс «Python для ЕГЭ» — с нуля, первые два модуля бесплатно.