решай.ai · шпаргалка
Задание 22: Многопроцессорные системы
ЕГЭ Информатика
Как выглядит
Типовая формулировка звучит так: дана совокупность из процессов, каждый из которых характеризуется идентификатором, временем выполнения в миллисекундах и списком идентификаторов процессов, от которых он зависит. Если список пуст (стоит значение 0), процесс независим и может стартовать в любой момент. Процесс B зависит от процесса A означает, что B не может начаться, пока не завершится A. Все независимые друг от друга процессы могут выполняться параллельно (предполагается неограниченное число процессоров). Требуется найти минимальное время, через которое завершится выполнение всей совокупно …
Что нужно знать
- Процесс — задача с фиксированным временем выполнения , которая может зависеть от других процессов.
- Зависимость: если B зависит от A, то A должен полностью завершиться до старта B. Такие процессы выполняются строго последовательно.
- Независимые процессы (без общих зависимостей друг от друга) выполняются параллельно — их времена не складываются, а идут «одновременно».
- Время начала процесса определяется формулой: где — множество процессов, от которых зависит B. Если B независим, .
- Время завершения процесса:
- Итоговый ответ задачи — максимальное время завершения среди всех процессов:
- Граф зависимостей процессов — это ориентированный ациклический граф (DAG): вершины — процессы, рёбра идут от A к B, если B зависит от A. Обрабатывать вершины нужно в порядке топологической сортировки: сначала процессы без зависимостей, затем те, чьи «родители» уже обработаны.
- Критический путь — самая длинная по суммарному времени цепочка последовательных зависимых процессов. Именно длина критического пути и есть минимальное время выполнения всей системы.
Алгоритм
- Выписать из таблицы/файла для каждого процесса: ID, время выполнения , список зависимостей (или 0, если процесс независим).
- Найти все процессы без зависимостей — для них , .
- Определить порядок обработки оставшихся процессов так, чтобы к моменту расчёта процесса B все процессы из его списка зависимостей уже были обработаны (топологическая сортировка).
- Для каждого следующего процесса B вычислить:
- Повторять шаг 4, пока не будут обработаны все процессы.
- Найти максимум среди всех — это и есть минимальное время выполнения всей совокупности процессов.
- Записать ответ как целое число миллисекунд.
Ловушки
- Сложение времени независимых процессов вместо взятия максимума — частая ошибка, приводящая к завышенному ответу.
- Неверное направление зависимости: если B зависит от A, то именно A выполняется первым, а не наоборот.
- Учёт только одной зависимости из списка, когда их несколько (нужно брать максимум времени финиша среди всех процессов из списка, а не первого по порядку).
- Нарушение порядка обработки: попытка посчитать время процесса раньше, чем найдены значения всех его предшественников, из-за чего используются нулевые или неверные промежуточные данные.
- Итоговый ответ берётся не как максимум по всем процессам, а как время финиша последнего процесса в таблице — это неверно, если граф ветвится и есть несколько «конечных» процессов. …
reshay.ai/ege/informatika/zadanie-22 — задачи с разборами и тренажёр