22

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

Параллельные процессы

1 балл ≈ 7 мин уровень П Многопроцессорные системы: параллельные процессы

Задание 22 – файл с таблицей процессов: ID, время выполнения, список процессов, от которых зависит данный. Процессы выполняются параллельно, если независимы, и начинаются как можно раньше. Найти минимальное время завершения всех процессов, количество процессов, завершённых к моменту T, и т. п. 1 балл.

Ключевая формула: время окончания процесса = max(время окончания всех его зависимостей) + его длительность. Независимый процесс начинается в момент 0 и заканчивается в момент «длительность».

Алгоритм

  1. Для каждого процесса посчитай время окончания по формуле (в Excel – формулой с МАКС по зависимостям, в Python – рекурсией).
  2. Общее время выполнения всех процессов = максимум времён окончания.
  3. «Количество процессов, завершённых за первые T мс» – число процессов с окончанием ≤ T (миллисекунды нумеруются с 1: процесс длительностью 3, начатый в момент 0, занимает 1-ю, 2-ю и 3-ю мс).

Шаблон на Python (данные из таблицы – в словарь):

from functools import lru_cache

data = {}                                  # id: (время, [зависимости])
for line in open("22.txt"):
    pid, t, deps = line.strip().split("\t")
    data[int(pid)] = (int(t), [int(d) for d in deps.split(";")])

@lru_cache(None)
def finish(i):
    t, deps = data[i]
    start = max((finish(d) for d in deps if d != 0), default=0)
    return start + t

ends = [finish(i) for i in data]
print(max(ends), sum(1 for e in ends if e <= 17))

Разобранный пример. 1: 3 мс, нет зависимостей; 2: 4 мс, от 1; 3: 2 мс, от 2 и 4; 4: 5 мс, нет. Окончание: 1 – 3, 4 – 5, 2 – 3 + 4 = 7, 3 – max(7, 5) + 2 = 9. Всё выполнится за 9 мс; за первые 6 мс завершатся процессы 1 и 4.

Ловушки: зависимости через «;» с пробелами – используй int() после split (он игнорирует пробелы); забыть, что процесс ждёт ВСЕ свои зависимости, а не первую; путать «начинается в мс» и «заканчивается в мс».

На экзамене
  • В Excel добавь столбец «окончание» и считай его формулой =МАКС(окончания зависимостей)+время.
  • Процесс с зависимостью 0 – независимый, стартует сразу.
  • Проверь программу на примере из условия – там дан ответ для маленькой таблицы.

Разобранные задания 22 из открытого банка ФИПИ

Пример 1 · код ФИПИ E01A9D

 Рисунок к заданиюЗадание выполняется с использованием прилагаемых файлов.

В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно.

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

Пример организации данных в файле:

ID процесса B

Время выполнения процесса B (мс)

ID процесса(ов) A

1

4

0

2

3

0

3

1

1; 2

4

7

3

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

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файл к заданию (ODS)

Показать ответ и решение

Ответ: 196

Время окончания процесса = длительность + максимум окончаний процессов, от которых он зависит.

Наибольшее время окончания – 196 мс.

Пример 2 · код ФИПИ 4A47D4

 Рисунок к заданиюЗадание выполняется с использованием прилагаемых файлов.

В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Будем говорить, что процесс B зависит
от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае
процессы A и B могут выполняться только последовательно.

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

Определите максимальное количество процессов, которые параллельно выполняются на 22-й мс. Считать, что каждый процесс начинается в самое раннее допустимое время. Нумерация миллисекунд начинается с 1.

Типовой пример организации данных в файле

 

ID процесса B

Время выполнения

процесса B (мс)

ID процесса(-ов) A

1

3

0

2

4

1

3

2

2; 4

4

5

0

5

8

1; 4

6

3

1

Для приведённой таблицы процесс 3 начинается на 8-й мс, заканчивается на 9-й мс.

 

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файл к заданию (ODS)

Показать ответ и решение

Ответ: 3

Находим самые ранние старты процессов и считаем, кто выполняется на 22-й мс.

Таких процессов 3.

Пример 3 · код ФИПИ 4128BD

 Рисунок к заданиюЗадание выполняется с использованием прилагаемых файлов.

В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Будем говорить, что процесс B зависит
от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае
процессы A и B могут выполняться только последовательно.

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

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

Типовой пример организации данных в файле

 

ID процесса B

Время выполнения

процесса B (мс)

ID процесса(-ов) A

1

3

0

2

4

1

3

2

2; 4

4

5

0

5

8

1; 4

6

3

1

Для приведённой таблицы процесс 3 начинается на 8-й мс, заканчивается на 9-й мс.

 

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файл к заданию (ODS)

Показать ответ и решение

Ответ: 34

Время окончания процесса = длительность + максимум окончаний процессов, от которых он зависит.

Минимальное общее время – 34 мс.

Частые вопросы о задании 22

Сколько баллов даёт задание 22 ЕГЭ по информатике?

Максимум – 1 первичный балл. Норма времени на экзамене – около 7 мин. Уровень сложности – П.

Что проверяет задание 22?

Задание 22 – файл с таблицей процессов: ID, время выполнения, список процессов, от которых зависит данный. Процессы выполняются параллельно, если независимы, и начинаются как можно раньше. Найти минимальное время завершения всех процессов, количество процессов, завершённых к моменту T, и т. п. 1 балл.

Как подготовиться к заданию 22?

Прочитайте теорию выше: алгоритм, нужные факты и ловушки. Затем решите подход из 10 заданий с автопроверкой и разбором – первые без регистрации – и вернитесь к ошибкам. В пробниках Сотки номер встречается в полных вариантах ФИПИ с подсчётом баллов.

Упражнения к заданию 22

10 заданий подряд с проверкой и разбором · первые 7 – без регистрации