ЕГЭ
Информатика
8 марта 2026
19 минут чтения

Задание 22 ЕГЭ по информатике: критический путь в графе процессов

Задание 22 ЕГЭ по информатике (КЕГЭ) — это файл с таблицей вычислительных процессов: у каждого процесса есть длительность и список процессов, от которых он зависит. Нужно определить время выполнения всей совокупности процессов, если независимые процессы разрешено запускать параллельно, а приостанавливать уже начатый процесс нельзя. Это повышенный уровень сложности, за верный ответ дают 1 первичный балл, а по обобщённому плану ФИПИ на задание отводится примерно 7 минут. Проверяемый элемент содержания — 1.1, формулировка в кодификаторе звучит так: «Построение математических моделей для решения практических задач. Архитектура современных компьютеров. Многопроцессорные системы». За формулировкой прячется простая математическая модель — граф зависимостей (DAG) и поиск в нём критического пути, а весь расчёт укладывается в одну формулу и десяток строк кода. В статье — теория, формула для электронной таблицы, рабочий код на Python и разбор двух реальных заданий из открытого банка ФИПИ с проверенными ответами. Потренироваться можно на реальных заданиях 22 ЕГЭ по информатике онлайн — с мгновенной проверкой ответа.


Что проверяет задание 22 ЕГЭ по информатике

По спецификации ЕГЭ 2026 года задание 22 проверяет умение строить математическую модель практической задачи, связанной с архитектурой компьютеров, а именно — с работой многопроцессорных систем. В кодификаторе (КЭС 1.1, код требования 1.1) это записано так: «Построение математических моделей для решения практических задач. Архитектура современных компьютеров. Многопроцессорные системы». За формулировкой стоит конкретный набор проверяемых умений:

Проверяемые умения (КЭС 1.1, код требования 1.1):

  • строить математическую модель практической задачи о совокупности процессов с зависимостями;
  • понимать принцип работы многопроцессорных систем: независимые процессы выполняются параллельно, а зависимые — строго после завершения тех процессов, от которых зависят;
  • представлять зависимости как граф (кто от кого зависит) и находить в нём самый длинный путь — критический путь;
  • работать с данными в редакторе электронных таблиц: читать таблицу из приложенного файла, строить формулу с функцией МАКС и правильно её протягивать;
  • не путать параллельное выполнение с последовательным: время независимых процессов не складывается, а идёт «одновременно».

Проекты КИМ ЕГЭ-2027 ФИПИ публикует в конце августа 2026 года, финальные версии — в ноябре. Все цифры в статье приведены по действующей спецификации ФИПИ 2026 года: структура работы не менялась с 2025 года. Когда выйдут документы 2027 года, их стоит свериться, но резких изменений в задании 22 никто не анонсировал.

ПараметрЗначение
Максимальный балл1 первичный (ответ либо полностью совпал с эталоном, либо 0)
Уровень сложностиПовышенный (П) — одно из 11 заданий этого уровня в работе
Раздел кодификатораКЭС 1.1, код проверяемого требования 1.1
Форма ответаКраткий ответ: одно целое число
Нужен приложенный файлДа, формат *.ods (редактор электронных таблиц)
Требуется специализированное ПОДа — редактор электронных таблиц
Рекомендуемое время7 минут (по обобщённому плану варианта КИМ ФИПИ)
Связанные заданияЗадание 9 (тоже электронные таблицы, но числовая обработка данных), задание 18 (электронные таблицы, целочисленные данные)

Частичного зачёта в задании 22 нет. Задания 1–25 КЕГЭ оцениваются строго по принципу «ответ полностью совпадает с эталоном — 1 балл, иначе 0». Единственная форма ответа — целое число, никаких единиц измерения и пояснений в бланк не заносится.

Тренируйтесь на реальных файлах с процессами

Задания ЕГЭ по информатике из открытого банка ФИПИ с прикреплёнными файлами и мгновенной проверкой ответа — бесплатно.

Решать задание 22

Как выглядит формулировка

Условие задания 22 почти всегда описывает одну и ту же ситуацию: есть NN вычислительных процессов, каждый процесс BB может зависеть от одного или нескольких процессов AA, а зависимые процессы обязаны выполняться строго последовательно после завершения всех процессов, от которых зависят. Вот реальная формулировка из открытого банка ФИПИ — в задании она приведена как «типовой пример организации данных в файле»:

«В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы A и B могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс независимый, то в таблице указано значение 0.»

ID процесса BВремя выполнения B (мс)ID процесса(ов) A
10140
10230
1031101; 102
1047103

Сам вопрос в конце формулировки — вот где начинаются варианты. Встречаются минимум три:

  • «Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно» — основной, самый частый вопрос;
  • «Время выполнения одного из процессов неизвестно и обозначено как t. Определите максимальное возможное целочисленное t, при котором выполнение всей совокупности процессов… завершилось не более чем за […] мс» — обратная задача: неизвестна не сумма, а одно из слагаемых;
  • «Определите максимальную продолжительность отрезка времени, в течение которого возможно одновременное выполнение […] процессов» — более сложный вариант про количество процессов, занятых одновременно, а не про общее время.

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

Теория: всё, что нужно для задания 22

Модель: граф зависимостей и критический путь

Представьте каждый процесс вершиной графа, а зависимость «B зависит от A» — дугой A → B. Получится ориентированный граф без циклов (DAG, directed acyclic graph): циклов в нём быть не может, иначе процесс зависел бы сам от себя через цепочку и не смог бы начаться никогда.

Ключевая идея многопроцессорной системы: если у процессора (ядра) сколько угодно много, то все процессы без зависимостей друг от друга можно запустить одновременно. Ограничение только одно — зависимый процесс не может начаться раньше, чем закончатся все процессы, от которых он зависит. Значит, минимальное время работы всей системы определяет не сумма длительностей, а самая длинная цепочка последовательных зависимостей — так называемый критический путь.

Критический путь — это путь в графе от какого-то «истокового» процесса (без зависимостей) до какого-то «конечного» (от которого никто не зависит), у которого сумма длительностей процессов на пути максимальна. Все процессы вне этого пути укладываются в его время работы, выполняясь параллельно, — поэтому именно длина критического пути и есть ответ на вопрос «через сколько завершится вся совокупность процессов».

Ключевая формула: время завершения процесса

Вместо того чтобы искать критический путь напрямую, удобнее посчитать для каждого процесса BB момент, когда он завершится, — обозначим его F(B)F(B). Два правила.

Правило 1 (независимый процесс). Он ничего не ждёт и стартует сразу же:

F(B)=t(B)F(B) = t(B)

где t(B)t(B) — время выполнения процесса BB из второго столбца таблицы.

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

F(B)=max(F(A1),F(A2),,F(Ak))+t(B)F(B) = \max\big(F(A_1),\,F(A_2),\,\dots,\,F(A_k)\big) + t(B)

где A1,,AkA_1,\dots,A_k — процессы из третьего столбца (те, от которых зависит BB). Это ровно тот же приём, что в задании 9 ОГЭ («число в вершине — функция от чисел в предыдущих вершинах»), только там суммировали входящие пути, а здесь берут максимум и прибавляют собственную длительность.

Ответ на задание — глобальный максимум:

Tmin=maxBF(B)T_{\min} = \max_{B} F(B)

Проверим формулу на «типовом примере» из условия выше: F(101)=4F(101) = 4, F(102)=3F(102) = 3, F(103)=max(4,3)+1=5F(103) = \max(4, 3) + 1 = 5, F(104)=5+7=12F(104) = 5 + 7 = 12. Максимум по всем четырём процессам — 12 мс: за это время завершится вся совокупность процессов из примера.

Как считать в редакторе электронных таблиц

В приложенном файле уже есть три столбца: ID процесса (A), время выполнения (B), список зависимостей (C). Добавьте четвёртый столбец «Время завершения» и заполните его формулой с функцией МАКС.

Если в третьем столбце указано «0» (процесс независимый), время завершения равно просто времени выполнения. Если указаны ID через «;», время завершения — это МАКС из времён завершения перечисленных процессов плюс собственная длительность. В виде формулы для строки, где ID процесса 104, а его зависимость 103 находится в строке 4:

=МАКС(D4) + B5

где D4 — уже посчитанное время завершения процесса 103, а B5 — собственная длительность процесса 104. Если у процесса несколько зависимостей (например, «105; 106»), в МАКС перечисляют все нужные ячейки: =МАКС(D5; D6) + B7\text{=МАКС(D5; D6) + B7}.

Главное практическое правило — порядок заполнения.

Формула для процесса BB ссылается на ячейки процессов, от которых он зависит, — значит, эти ячейки должны быть заполнены раньше. В файлах ФИПИ зависимость почти всегда указывает на процесс с меньшим ID (то есть на более раннюю строку таблицы), поэтому обычно достаточно тянуть формулу сверху вниз в порядке следования строк. Но это следствие того, как обычно устроен файл, а не гарантия: прежде чем протягивать формулу, проверьте на паре строк, что все зависимости действительно находятся выше. Ответ на задание — это МАКС всего заполненного столбца «Время завершения», его удобно вывести отдельной ячейкой =МАКС(D2:D...)\text{=МАКС(D2:D...)}.

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

Python: разбор строки зависимостей и рекурсия с мемоизацией

На экзамене можно решать в редакторе электронных таблиц, но тот же расчёт легко проверить программой — это надёжный способ перепроверить формулу, если результат кажется подозрительным. Сначала нужно разобрать третий столбец: он либо «0», либо список ID через «;»:

def parse_deps(cell):
    cell = cell.strip()
    if cell == "0" or cell == "":
        return []
    return [int(x) for x in cell.split(";")]

print(parse_deps("0"))          # []
print(parse_deps("101; 102"))   # [101, 102]

Пустая строка (файл может отдать её вместо «0» на пустых ячейках) — тоже «независимый процесс», это частая ловушка при чтении файла. Дальше — сама формула F(B)=max(F(Ai))+t(B)F(B) = \max(F(A_i)) + t(B), реализованная рекурсией с мемоизацией: результат для каждого процесса считается один раз и сохраняется в словаре finish.

data = {
    1: (2, []),
    2: (5, [1]),
    3: (3, []),
    4: (2, [3]),
    5: (4, [2, 4]),
    6: (1, []),
    7: (1, [6]),
    8: (4, [7]),
    9: (2, [6]),
    10: (3, []),
    11: (5, []),
    12: (8, [8, 9, 10, 11]),
}

finish = {}

def calc(i):
    if i not in finish:
        deps_finish = [calc(j) for j in data[i][1]]
        start = max(deps_finish, default=0)
        finish[i] = start + data[i][0]
    return finish[i]

for i in data:
    calc(i)

print(max(finish.values()))

Программа выведет 14 — это данные реального задания 22 из открытого банка ФИПИ, разбор которого дальше в статье. Мемоизация здесь не просто ускорение: без неё, если несколько процессов зависят от одного общего «предка», его время завершения будет пересчитываться заново на каждой ветке рекурсии — на 12 процессах это не страшно, но на входных данных с десятками зависимостей экономит реальное время счёта.

Альтернатива: топологическая сортировка без рекурсии

Рекурсия с мемоизацией — не единственный способ. Если зависимости в файле всегда указывают на процесс с меньшим ID (а в файлах ФИПИ это почти всегда так — этим и объясняется приём «тянуть формулу сверху вниз» из предыдущего блока), достаточно один раз пройти по отсортированным ID и считать всё за один проход, без рекурсии:

finish = {}
for i in sorted(data):
    dur, deps = data[i]
    finish[i] = max([finish[d] for d in deps], default=0) + dur

print(max(finish.values()))   # 14

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

order = []
visited = set()

def visit(i):
    if i not in visited:
        visited.add(i)
        for d in data[i][1]:
            visit(d)
        order.append(i)

for i in data:
    visit(i)

finish = {}
for i in order:
    dur, deps = data[i]
    finish[i] = max([finish[d] for d in deps], default=0) + dur

print(max(finish.values()))   # 14

Оба варианта — рекурсия с мемоизацией и обход по топологическому порядку — считают одну и ту же формулу F(B)=max(F(Ai))+t(B)F(B) = \max(F(A_i)) + t(B) и дают одинаковый результат. На экзамене выбирайте тот способ, который быстрее набрать: для файлов ФИПИ с ID по возрастанию достаточно простого прохода sorted(data).

Алгоритм решения задания 22

  1. Откройте приложенный файл (*.ods) в редакторе электронных таблиц. Убедитесь, что видите три столбца: ID процесса, время выполнения, список зависимостей.
  2. Дочитайте вопрос до конца. Проверьте, какой именно вариант вопроса: «минимальное время выполнения всей совокупности», «максимальное t при ограничении на общее время» или «максимальная продолжительность одновременной работы N процессов» — от этого зависит, что именно вы будете искать в итоговом столбце.
  3. Добавьте столбец «Время завершения» рядом с данными и заполните первую строку формулой с функцией МАКС по ячейкам зависимостей плюс собственная длительность (для независимых процессов — просто длительность).
  4. Протяните формулу вниз, убедившись, что зависимости в третьем столбце всегда ссылаются на уже заполненные строки. Если формула в какой-то строке выдаёт ошибку или подозрительно маленькое число — скорее всего, зависимость указывает на процесс ниже по таблице, и порядок нужно поправить.
  5. Найдите максимум по всему столбцу «Время завершения» — отдельной ячейкой с формулой =МАКС(...)\text{=МАКС(...)}. Это и есть минимальное время выполнения всей совокупности процессов.
  6. Если в задаче есть неизвестное t — переберите целые значения t (можно прямо в отдельном столбце или через подбор параметра), пока итоговый максимум не станет равен или меньше заданного порога, и возьмите наибольшее подходящее t.
  7. Проверьте результат прикидкой: ответ не может быть меньше длительности самого длинного одиночного процесса и не может быть больше суммы длительностей всех процессов подряд. Запишите в форму ответа только число, без единиц измерения.

Доведите формулу МАКС до автоматизма

Прорешайте несколько файлов подряд — и построение столбца «Время завершения» займёт меньше двух минут. Задания ЕГЭ по информатике из банка ФИПИ с проверкой ответа — на Repet.ai.

Открыть тренажёр

Примеры с разбором

Пример 1. Минимальное время выполнения всей совокупности процессов

Условие (реальное задание из открытого банка ФИПИ):

«В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. В файле информация о процессах представлена в виде таблицы. В первой колонке таблицы указан идентификатор процесса (ID), во второй колонке таблицы — время его выполнения в миллисекундах, в третьей колонке перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0. Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно.»

Данные из прилагаемого файла (12 процессов):

IDВремя, мсЗависит от
120
251
330
423
542; 4
610
716
847
926
1030
1150
1288; 9; 10; 11

Решение:

Зависимости у каждого процесса указывают на процессы с меньшим ID, поэтому считаем время завершения FF по порядку возрастания ID, применяя формулу F(B)=max(F(Ai))+t(B)F(B) = \max(F(A_i)) + t(B):

F(1)  = 2                          (независимый)
F(2)  = F(1) + 5             = 2 + 5   = 7
F(3)  = 3                          (независимый)
F(4)  = F(3) + 2             = 3 + 2   = 5
F(5)  = max(F(2), F(4)) + 4  = max(7, 5) + 4 = 11
F(6)  = 1                          (независимый)
F(7)  = F(6) + 1             = 1 + 1   = 2
F(8)  = F(7) + 4             = 2 + 4   = 6
F(9)  = F(6) + 2             = 1 + 2   = 3
F(10) = 3                          (независимый)
F(11) = 5                          (независимый)
F(12) = max(F(8), F(9), F(10), F(11)) + 8
      = max(6, 3, 3, 5) + 8   = 6 + 8  = 14

Ответ: 14. Это значение процесса 12 — оно же оказывается наибольшим среди всех F(B)F(B), то есть критический путь заканчивается именно на нём.

Проверка независимой программой на Python (данные и формула — те же, что в теоретическом блоке выше):

data = {
    1: (2, []), 2: (5, [1]), 3: (3, []), 4: (2, [3]),
    5: (4, [2, 4]), 6: (1, []), 7: (1, [6]), 8: (4, [7]),
    9: (2, [6]), 10: (3, []), 11: (5, []), 12: (8, [8, 9, 10, 11]),
}
finish = {}
for i in sorted(data):
    dur, deps = data[i]
    finish[i] = max([finish[d] for d in deps], default=0) + dur
print(max(finish.values()))   # 14

Программа выводит 14 — совпадает с эталонным ответом банка ФИПИ и с ручным расчётом.

Пример 2. Неизвестная длительность одного процесса

Условие (реальное задание из открытого банка ФИПИ):

«…В третьей колонке перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0. Время выполнения одного из процессов неизвестно и для данного процесса в соответствующей колонке обозначено как t. Определите максимальное возможное целочисленное t (время выполнения процесса), при котором выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно, завершилось не более чем за 19 мс.»

Данные из прилагаемого файла (12 процессов, у процесса 5 длительность неизвестна и обозначена t):

IDВремя, мсЗависит от
140
230
321; 2
433
5t0
654; 5
750
867
956; 8
10120
11210
12211

Решение:

Здесь неизвестна не сумма, а одно из слагаемых. Ключевое наблюдение: при увеличении t время завершения любого процесса, зависящего (прямо или через цепочку) от процесса 5, тоже не убывает. Значит, общее время работы всей совокупности — неубывающая функция от t, и можно подставлять целые значения t по возрастанию, пока итоговый максимум не превысит 19.

Подставим t=9t = 9 и посчитаем F(B)=max(F(Ai))+t(B)F(B) = \max(F(A_i)) + t(B) по всем процессам:

F(1)  = 4                          (независимый)
F(2)  = 3                          (независимый)
F(3)  = max(F(1), F(2)) + 2  = max(4, 3) + 2 = 6
F(4)  = F(3) + 3             = 6 + 3   = 9
F(5)  = t                    = 9                (неизвестный процесс)
F(6)  = max(F(4), F(5)) + 5  = max(9, 9) + 5 = 14
F(7)  = 5                          (независимый)
F(8)  = F(7) + 6             = 5 + 6   = 11
F(9)  = max(F(6), F(8)) + 5  = max(14, 11) + 5 = 19
F(10) = 12                         (независимый)
F(11) = F(10) + 2            = 12 + 2  = 14
F(12) = F(11) + 2            = 14 + 2  = 16

Максимум по всем процессам — 19 мс (его даёт процесс 9), условие «не более 19 мс» выполнено ровно впритык. Проверим следующее целое значение t=10t = 10: F(6)=max(9,10)+5=15F(6) = \max(9, 10) + 5 = 15, F(9)=max(15,11)+5=20F(9) = \max(15, 11) + 5 = 20 — это уже больше 19, условие нарушено.

Ответ: 9. Это наибольшее целое t, при котором вся совокупность процессов ещё укладывается в 19 мс.

Проверка перебором на Python:

data = {
    1: (4, []), 2: (3, []), 3: (2, [1, 2]), 4: (3, [3]),
    5: (None, []), 6: (5, [4, 5]), 7: (5, []), 8: (6, [7]),
    9: (5, [6, 8]), 10: (12, []), 11: (2, [10]), 12: (2, [11]),
}

def total_time(t):
    finish = {}
    for i in sorted(data):
        dur, deps = data[i]
        dur = t if dur is None else dur
        finish[i] = max([finish[d] for d in deps], default=0) + dur
    return max(finish.values())

print(max(t for t in range(1, 100) if total_time(t) <= 19))   # 9

Программа выводит 9 — совпадает с эталонным ответом банка ФИПИ.

Типичные ошибки и ловушки

Сложили времена вместо того, чтобы взять максимум

Самая частая ошибка: для процесса с несколькими зависимостями считают F(A1)+F(A2)+t(B)F(A_1) + F(A_2) + t(B) вместо max(F(A1),F(A2))+t(B)\max(F(A_1), F(A_2)) + t(B). Зависимости выполняются параллельно друг другу (если сами они не связаны цепочкой), а не одна после другой — ждать нужно только самую медленную из них, а не сумму всех.

Забыли, что параллельность процессов бесплатна

Ответ на задание — не сумма длительностей всех N процессов, а длина критического пути: независимые процессы идут одновременно и «не мешают» друг другу по времени. В примере 1 сумма всех 12 длительностей — 42 мс, а правильный ответ — всего 14 мс, потому что бо́льшая часть процессов выполняется параллельно.

Неверно разобрали пустое поле зависимостей

Независимый процесс в файле помечен значением «0», но при выгрузке из .ods/.xls ячейка иногда читается программой как пустая строка, а не как «0». Если код проверяет только cell == "0" и не учитывает пустую строку, процесс ошибочно попадёт в раздел «есть зависимость от несуществующего ID» и расчёт сломается.

Учли не все ID из списка зависимостей

Когда в третьем столбце указано сразу несколько ID через «;» (например, «8; 9; 10; 11», как у процесса 12 в примере 1), легко случайно взять в формулу МАКС не все ячейки — например, забыть последнюю в списке. Всегда пересчитывайте количество ID в текстовой ячейке и сверяйте его с количеством аргументов в формуле МАКС.

Протянули формулу до того, как заполнились зависимости

Формула МАКС ссылается на ячейки процессов-предшественников — если те ещё пустые, результат будет неверным (в лучшем случае — явная ошибка формулы, в худшем — просто 0). Заполняйте столбец «Время завершения» в порядке, при котором зависимости уже посчитаны, а не механически сверху вниз без проверки.

Перепутали вопрос «минимальное время» с вопросом про t

В варианте с неизвестным t логика обратная: не находят итоговое время по готовым данным, а подбирают наибольшее целое t, при котором итоговое время ещё не превышает заданный порог. Дробные значения t в ответ записывать нельзя — в условии прямо стоит «целочисленное».

Считали, что приостановка процесса разрешена

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

Как задание 22 связано с остальным экзаменом

КЕГЭ по информатике состоит из 27 заданий, все с кратким ответом, частей и развёрнутых ответов нет. Максимальный первичный балл — 29, на всю работу отводится 235 минут. Уровни сложности распределены так: базовый — 11 заданий, повышенный — 11, высокий — 5. Задание 22 занимает в этой структуре особое место:

  • оно относится к разделу «Цифровая грамотность» кодификатора (КЭС 1.1) — вместе с заданием 13 (маска подсети) это всего 2 задания и 2 первичных балла в этом разделе;
  • вместе с заданиями 3, 9 и 18 входит в четвёрку заданий, где приложен файл *.ods и требуется редактор электронных таблиц — готовить их удобно вместе, отрабатывая один и тот же навык работы с формулами;
  • модель «граф зависимостей → критический путь» на КЕГЭ встречается только здесь: по графу ищут не количество путей и не сумму, а самый длинный путь по сумме весов;
  • задание относится к повышенному уровню сложности — таких заданий 11 из 27, и задание 22 одно из самых «формульных» среди них: правильная формула сразу даёт верный ответ, в отличие от заданий с перебором вариантов.

План подготовки на 2 недели

Неделя 1 — ставим модель и формулу

День 1–2: разберите формулу F(B)=max(F(Ai))+t(B)F(B) = \max(F(A_i)) + t(B) на маленьком наборе из 4–6 процессов (можно взять «типовой пример» из условия задания) и убедитесь, что понимаете, почему берётся именно максимум, а не сумма. День 3–5: решайте задания на 12–16 процессов, каждый раз выписывая столбец FF вручную на черновике, прежде чем переносить формулу в электронную таблицу. День 6–7: откройте реальные *.ods-файлы из тренажёра и потренируйтесь строить формулу МАКС именно в редакторе таблиц, а не на бумаге — это то умение, которое проверяется на экзамене.

Неделя 2 — варианты вопроса и скорость

День 1–3: отработайте вариант с неизвестным t — подстановка целых значений и проверка условия «не более […] мс». День 4–5: если встретится вариант «максимальная продолжительность одновременной работы N процессов», потренируйтесь сначала находить интервалы работы каждого процесса (старт и финиш), а затем считать, на каком отрезке одновременно активны ровно N из них. День 6–7: работайте на время — норматив ФИПИ 7 минут, из них большую часть должно занимать построение формулы, а не устный счёт. Проверьте себя в тренажёре на заданиях из банка ФИПИ.

Проверьте себя на реальных заданиях

На Repet.ai собраны задания ЕГЭ по информатике из открытого банка ФИПИ вместе с прикреплёнными файлами. Решайте онлайн, проверяйте ответ мгновенно — бесплатно.

Перейти к практике
Частые вопросы

Часто задаваемые вопросы

Умение строить математическую модель практической задачи про многопроцессорные системы: по таблице процессов с длительностями и зависимостями определить, за какое время завершится выполнение всей совокупности процессов, если независимые процессы можно выполнять параллельно. В кодификаторе это КЭС 1.1, код требования 1.1, раздел «Цифровая грамотность».

1 первичный балл по принципу «всё или ничего»: ответ либо полностью совпадает с эталоном, либо задание оценивается в 0. По обобщённому плану ФИПИ на задание 22 отводится примерно 7 минут. Уровень сложности — повышенный.

Время завершения процесса B равно максимуму из времён завершения всех процессов, от которых он зависит, плюс собственная длительность B: F(B) = max(F(A₁), …, F(Aₖ)) + t(B). Для независимого процесса время завершения просто равно его длительности. Ответ на задание — наибольшее из значений F по всем процессам.

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

Добавьте столбец «Время завершения» и заполните его формулой: для независимого процесса — просто время выполнения, для зависимого — МАКС ячеек-времён завершения всех процессов, от которых он зависит, плюс собственная длительность. Протяните формулу вниз в порядке, при котором зависимости уже посчитаны, а ответом будет МАКС всего заполненного столбца.

В этом варианте нужно подобрать наибольшее целое значение t, при котором итоговое время выполнения всей совокупности процессов ещё не превышает заданный порог. Общее время не убывает при росте t, поэтому можно перебирать целые значения t по возрастанию, пока условие не нарушится, и взять последнее подходящее значение.

Файл в формате *.ods — открывается в редакторе электронных таблиц. В файле три столбца: идентификатор процесса, время его выполнения в миллисекундах и список ID процессов, от которых он зависит (разделитель «;», значение 0 означает независимый процесс).

Задание 9 проверяет обработку числовой информации в таблице — например, суммы и средние значения по столбцам. Задание 22 требует построить модель графа зависимостей процессов и найти критический путь, применяя формулу с функцией МАКС по ячейкам, а не простую агрегацию чисел. Это разные элементы содержания: у задания 9 — КЭС 4.2, у задания 22 — КЭС 1.1.


Готовы взять балл повышенного уровня?

Задание 22 решается по одной и той же формуле на любом файле: время завершения процесса — максимум из времён завершения его зависимостей плюс собственная длительность. Отработайте построение этой формулы на реальных файлах из открытого банка ФИПИ с мгновенной проверкой ответа — и задание перестанет быть лотереей.