Решение: Параллельное выполнение процессов
В прилагаемом файле содержится информация о совокупности $N$ вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Процесс $B$ зависит от процесса $A$, если для выполнения процесса $B$ необходимы результаты выполнения процесса $A$. В этом случае процессы $A$ и $B$ могут выполняться только последовательно.
В файле информация о процессах представлена в виде таблицы: в первом столбце указан идентификатор процесса (ID), во втором — время его выполнения в миллисекундах, в третьем — через разделитель «;» перечислены ID процессов, от которых зависит данный процесс. Если процесс независимый, указано значение 0.
Определите максимальное количество процессов, которые параллельно выполняются на 22-й миллисекунде. Считать, что каждый процесс начинается в самое раннее допустимое время. Нумерация миллисекунд начинается с 1.
Для выполнения задания используйте данные из прилагаемого файла.
Решение по шагам
3 шагаПо данным прилагаемого файла для каждого процесса определяем раннее время начала: оно следует после завершения всех процессов, указанных в третьем столбце как зависимости.
Для каждого процесса строим интервал выполнения по формуле: если процесс начинается на миллисекунде $s$ и длится $t$ миллисекунд, то он выполняется на миллисекундах от $s$ до $s+t-1$.
Отбираем процессы, для которых 22-я миллисекунда входит в интервал выполнения, и подсчитываем их количество.
Где здесь ошибаются
Не учитывать цепочку зависимостей через промежуточные процессы.
Считать момент завершения процесса началом следующей миллисекунды.
Проверять только процессы, начавшиеся непосредственно перед 22-й миллисекундой.