ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Параллельные вычисления.
| КЭС: | 1.1 Основные тенденции развития компьютерных технологий. Параллельные вычисления. Многопроцессорные системы. Распределённые вычислительные системы и обработка больших данных |
| Тип ответа: | Краткий ответ |
Ответ: 14
Решение.
В приложенной таблице 13 процессов. Первый столбец содержит их идентификаторы, второй — длительности в миллисекундах, третий — идентификаторы всех необходимых предшественников. Ноль в третьем столбце означает отсутствие предшественников. Типовой пример из условия не заменяет данные файла.
Начальный момент обозначим 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 | 15 | нет | 0 | 0 + 15 = 15 |
| 102 | 14 | нет | 0 | 0 + 14 = 14 |
| 103 | 3 | 101; 102 | max(15; 14) = 15 | 15 + 3 = 18 |
| 104 | 3 | 103 | max(18) = 18 | 18 + 3 = 21 |
| 105 | 15 | 103 | max(18) = 18 | 18 + 15 = 33 |
| 106 | 11 | 104 | max(21) = 21 | 21 + 11 = 32 |
| 107 | 5 | 105; 106 | max(33; 32) = 33 | 33 + 5 = 38 |
| 108 | 8 | 107 | max(38) = 38 | 38 + 8 = 46 |
| 109 | 8 | нет | 0 | 0 + 8 = 8 |
| 110 | 14 | 109 | max(8) = 8 | 8 + 14 = 22 |
| 111 | 6 | 109 | max(8) = 8 | 8 + 6 = 14 |
| 112 | 13 | 110; 111 | max(22; 14) = 22 | 22 + 13 = 35 |
| 113 | 8 | 111 | max(14) = 14 | 14 + 8 = 22 |
Здесь требуется увеличить непрерывный интервал параллельной работы. Самые ранние запуски не обязательны: можно задерживать процессы, соблюдая зависимости и не прерывая начавшийся процесс. Поэтому таблица ранних окончаний сама по себе ещё не даёт искомого максимума.
Разделим граф на независимые компоненты. Процессы 101–108 дают не более 2 одновременных работ. Процессы 109–113 дают не более 2 одновременных работ. В первой компоненте пары возможны только у 101 и 102 либо у 105 вместе с 104 или 106. Во второй возможны только пары {110,111}, {110,113}, {112,113}. Поэтому во всей системе одновременно может работать не более 4 процессов. Ниже построено расписание, где это число достигается.
Обоснуем верхнюю границу длительности. Две работы первой компоненты возможны либо у {101,102}, либо у 105 вместе с последовательными 104,106. Между стадиями выполняется 103, во время которого первой компоненте нельзя дать две работы. Первая стадия не длиннее min(15,14)=14 мс; вторая — min(15,3+11)=14 мс. Поэтому четыре процесса всей системы не могут непрерывно выполняться дольше 14 мс.
Построим расписание, достигающее этой границы. Каждый процесс идёт без остановок, а его начало не раньше окончания любого предшественника:
| ID | Начало | Окончание |
|---|---|---|
| 101 | 0 | 15 |
| 102 | 0 | 14 |
| 103 | 15 | 18 |
| 104 | 18 | 21 |
| 105 | 18 | 33 |
| 106 | 21 | 32 |
| 107 | 33 | 38 |
| 108 | 38 | 46 |
| 109 | 10 | 18 |
| 110 | 18 | 32 |
| 111 | 18 | 24 |
| 112 | 32 | 45 |
| 113 | 24 | 32 |
На всём промежутке [18; 32) одновременно работают 4 процессов. При завершении одного процесса другой может сразу занять его место; разрыва параллельной работы нет:
| Промежуток, мс | Работающие процессы | Количество |
|---|---|---|
| [18; 21) | 104, 105, 110, 111 | 4 |
| [21; 24) | 105, 106, 110, 111 | 4 |
| [24; 32) | 105, 106, 110, 113 | 4 |
Длина промежутка 32 − 18 = 14 мс. Она совпадает с доказанной верхней границей.
Ответ: 14.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINFDAB821.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.