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