Условие: № 9843
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A.
В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы.
В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0.
Типовой пример организации данных в файле :
Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно.
Решение задачи:
Для начала, приведем нашу таблицу к удобному для работы виду:
- Выделяем столбец С, который содержит процессы А.
- Заходим во вкладку “данные”.
- Выбираем “текст по столбцам”.
Далее у нас открывается окно, на каждом шагу действуем следующим образом:
Получаем такую таблицу.
Теперь нужно создать еще 4 столбца, куда мы будем помещать процессы А и еще один, в котором будет лежать время выполнения совокупности процессов A и B.
Также на этом шаге стоит очистить первую строчку с названиями столбцов и поместить в первый и последний столбец значение 0.
Обязательно делаем заливку, так будет приятнее глазу.
Теперь наша таблица готова к работе.
Начнем ее заполнение со столба К.
Записываем функцию =B2+МАКС(G2:J2) во вторую ячейку и растягиваем вдоль всего столбца.
B2 - процесс B, МАКС(G2:J2) - последний выполненный процесс А.
Теперь заполняем столбцы G-J.
Для этого воспользуемся функцией ВПР (ознакомиться с ней подробнее вы можете в разборе №3 - Читать статью в Notion)
Записываем функцию =ВПР(C2;$A:$K;11;0) во вторую ячейку столбца G и растягиваем вдоль столбцов G-J.
C2 - процесс А, $A:$K - таблица, 11 - номер столбца K, 0 - полное совпадение.
Получаем такую таблицу.
Теперь нам нужно узнать время завершения последней из совокупности процессов. Для этого используем функцию МАКС.
Получаем ответ.