В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что
Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы — время его выполнения в миллисекундах, в третьем столбце перечислены
Типовой пример организации данных в файле:
| ID процесса B | Время выполнения процесса B (мс) | ID процесса(ов) A |
|---|---|---|
| 1 | 4 | 0 |
| 2 | 3 | 0 |
| 3 | 1 | 1; 2 |
| 4 | 7 | 3 |
Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно.
Типовой пример имеет иллюстрированный характер. Для выполнения задания используйте данные из прилагаемого файла.
Выполните задания, используя данные из файла ниже:
Отсортируем данные в таблице так, чтобы все независимые процессы оказались в начале таблицы. Также в таблицу добавим столбец «Время окончания процесса» и запишем туда длительности независимых процессов.
| A | B | C | D |
|---|---|---|---|
| ID | Время выполнения | ID | Время окончания процесса |
| 1 | 20 | 0 | 20 |
| 2 | 26 | 0 | 26 |
| 4 | 28 | 0 | 28 |
| 12 | 29 | 0 | 29 |
| 8 | 32 | 1 | |
| 5 | 29 | 2 | |
| 7 | 31 | 5 | |
| 10 | 34 | 7 | |
| 11 | 30 | 9 | |
| 15 | 39 | 9 | |
| 3 | 22 | 13 | |
| 17 | 36 | 13 | |
| 13 | 32 | 10;12 | |
| 14 | 33 | 11;15 | |
| 16 | 33 | 14;15 | |
| 9 | 28 | 3;4 | |
| 6 | 25 | 5;7;8;15 |
Далее рассчитаем время выполнения оставшихся процессов:
f(8) = 32 + f(1) = 32 + 20 = 52;
f(5) = 29 + f(2) = 29 + 26 = 55;
f(7) = 31 + f(5) = 31 + 55 = 86;
f(10) = 34 + f(7) = 34 + 86 = 120;
f(11) = 30 + f(9) = 30 + 202 = 232;
f(15) = 39 + f(9) = 39 + 202 = 241;
f(3) = 22 + f(13) = 22 + 152 = 174;
f(17) = 36 + f(13) = 36 + 152 = 188;
f(13) = 32 + max(f(10), f(12)) = 32 + 120 = 152;
f(14) = 33 + max(f(11), f(15)) = 33 + 241 = 274;
f(16) = 33 + max(f(14), f(15)) = 33 + 274 = 307;
f(9) = 28 + max(f(3), f(4)) = 28 + 174 = 202;
f(6) = 25 + max(f(5), f(7), f(8), f(15)) = 25 + 241 = 266.
| A | B | C | D |
|---|---|---|---|
| ID | Время выполнения | ID | Время окончания процесса |
| 1 | 20 | 0 | 20 |
| 2 | 26 | 0 | 26 |
| 4 | 28 | 0 | 28 |
| 12 | 29 | 0 | 29 |
| 8 | 32 | 1 | 52 |
| 5 | 29 | 2 | 55 |
| 7 | 31 | 5 | 86 |
| 10 | 34 | 7 | 120 |
| 11 | 30 | 9 | 232 |
| 15 | 39 | 9 | 241 |
| 3 | 22 | 13 | 174 |
| 17 | 36 | 13 | 188 |
| 13 | 32 | 10;12 | 152 |
| 14 | 33 | 11;15 | 274 |
| 16 | 33 | 14;15 | 307 |
| 9 | 28 | 3;4 | 202 |
| 6 | 25 | 5;7;8;15 | 266 |
Ответ: 307.

