ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Параллельные вычисления.
| КЭС: | 1.1 Основные тенденции развития компьютерных технологий. Параллельные вычисления. Многопроцессорные системы. Распределённые вычислительные системы и обработка больших данных |
| Тип ответа: | Краткий ответ |
Ответ: 9
Решение.
В приложенной таблице 12 процессов. Первый столбец содержит их идентификаторы, второй — длительности в миллисекундах, третий — идентификаторы всех необходимых предшественников. Ноль в третьем столбце означает отсутствие предшественников. Типовой пример из условия не заменяет данные файла.
Начальный момент обозначим 0. Пусть d(B) — длительность процесса B, S(B) — время его начала, F(B) — время окончания. Процесс занимает промежуток от S(B) включительно до F(B) не включительно. Его результат доступен уже в момент F(B); следующий процесс может начаться в этот же момент.
Для самого раннего допустимого запуска используем правила:
S(B) = 0, если предшественников нет;
S(B) = max(F(A)), где максимум берётся по всем предшественникам A;
F(B) = S(B) + d(B).
Длительности разных предшественников не складываем: они могут работать параллельно. Но ждать требуется завершения каждого, поэтому выбираем самое позднее окончание. Строки вычисляем после их предшественников, даже если в файле они расположены в другом порядке.
Эти времена достижимы одновременным запуском всех готовых процессов. Раньше запустить очередной процесс нельзя: хотя бы один необходимый результат ещё отсутствует. Последовательно применяя это рассуждение по зависимостям, получаем минимальные времена окончания каждого процесса.
Проверка зависимостей и длительностей. Полный расчёт самого раннего расписания, все времена в мс:
| ID | d | Предшественники | S | F = S + d |
|---|---|---|---|---|
| 101 | 7 | нет | 0 | 0 + 7 = 7 |
| 102 | 16 | 101 | max(7) = 7 | 7 + 16 = 23 |
| 103 | 17 | 101 | max(7) = 7 | 7 + 17 = 24 |
| 104 | 10 | 103; 107 | max(24; 10) = 24 | 24 + 10 = 34 |
| 105 | 4 | 104 | max(34) = 34 | 34 + 4 = 38 |
| 106 | 14 | 104 | max(34) = 34 | 34 + 14 = 48 |
| 107 | 10 | нет | 0 | 0 + 10 = 10 |
| 108 | 17 | нет | 0 | 0 + 17 = 17 |
| 109 | 10 | 108 | max(17) = 17 | 17 + 10 = 27 |
| 110 | 23 | 109 | max(27) = 27 | 27 + 23 = 50 |
| 111 | 7 | 108 | max(17) = 17 | 17 + 7 = 24 |
| 112 | 19 | 111 | max(24) = 24 | 24 + 19 = 43 |
Сначала фиксируем обязательное условие: минимальное время всей системы T = 50 мс. Его нижнюю границу задаёт цепочка 108 → 109 → 110:
17 + 10 + 23 = 50.
Самое раннее расписание достигает этой границы. Разрешено сдвигать отдельные процессы, пока не нарушены зависимости и общий срок T. Минимальное время всей системы не требует самого раннего запуска абсолютно каждой строки.
Разделим граф на независимые компоненты. Процессы 101–107 дают не более 3 одновременных работ. Процессы 108–112 дают не более 2 одновременных работ. В первой компоненте возможны только тройки {102, 103, 107} и {102, 105, 106}. Во второй после 108 идут две последовательные ветви 109 → 110 и 111 → 112, каждая даёт не более одного активного процесса. Поэтому во всей системе одновременно может работать не более 5 процессов. Ниже построено расписание, где это число достигается.
Обоснуем верхнюю границу длительности. Минимальное время всей системы равно 50 мс. Для пяти параллельных процессов в правой компоненте должны закончиться 17 мс процесса 108, так что интервал начинается не раньше 17. В левой компоненте тройки только {102,103,107} и {102,105,106}; их разделяет 104. В первой тройке 103 должен закончиться не позднее 50−10−14=26, иначе последовательные 104 и 106 не успеют к 50. Поэтому первая стадия даёт не более 26−17=9 мс. Во второй тройке процесс 105 длится только 4 мс. Максимум этих границ равен 9 мс.
Построим расписание, достигающее этой границы. Каждый процесс идёт без остановок, а его начало не раньше окончания любого предшественника:
| ID | Начало | Окончание |
|---|---|---|
| 101 | 0 | 7 |
| 102 | 17 | 33 |
| 103 | 9 | 26 |
| 104 | 26 | 36 |
| 105 | 36 | 40 |
| 106 | 36 | 50 |
| 107 | 16 | 26 |
| 108 | 0 | 17 |
| 109 | 17 | 27 |
| 110 | 27 | 50 |
| 111 | 17 | 24 |
| 112 | 24 | 43 |
На всём промежутке [17; 26) одновременно работают 5 процессов. При завершении одного процесса другой может сразу занять его место; разрыва параллельной работы нет:
| Промежуток, мс | Работающие процессы | Количество |
|---|---|---|
| [17; 24) | 102, 103, 107, 109, 111 | 5 |
| [24; 26) | 102, 103, 107, 109, 112 | 5 |
Длина промежутка 26 − 17 = 9 мс. Она совпадает с доказанной верхней границей. Последний процесс заканчивается в момент 50 мс, поэтому требование минимального общего времени также выполнено.
Ответ: 9.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINFA3580C.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.