В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что
Информация о процессах представлена в файле в виде таблицы. В первой строке таблицы указан идентификатор процесса (ID), во второй строке таблицы — время его выполнения в миллисекундах, в третьей строке перечислены
Типовой пример организации данных в файле:
| ID процесса B | Время выполнения процесса B (мс) | ID |
|---|---|---|
| 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 |
| 18 | 37 | 0 | 37 |
| 8 | 32 | 1 | |
| 5 | 29 | 2 | |
| 7 | 31 | 4 | |
| 10 | 34 | 7 | |
| 15 | 39 | 9 | |
| 3 | 41 | 12 | |
| 17 | 36 | 13 | |
| 11 | 30 | 18 | |
| 20 | 33 | 1;3;4;13 | |
| 13 | 32 | 11;12 | |
| 14 | 33 | 11;16 | |
| 19 | 24 | 12;17 | |
| 9 | 28 | 12;20 | |
| 6 | 25 | 5;7;8;15 | |
| 16 | 33 | 7;15 |
Далее рассчитаем время выполнения оставшихся процессов:
f(8) = 32 + f(1) = 32 + 20 = 52;
f(5) = 29 + f(2) = 29 + 26 = 55;
f(7) = 31 + f(4) = 31 + 28 = 59;
f(10) = 34 + f(7) = 34 + 59 = 93;
f(15) = 39 + f(9) = 39 + 160 = 199;
f(3) = 41 + f(12) = 41 + 29 = 70;
f(17) = 36 + f(13) = 36 + 99 = 135;
f(11) = 30 + f(18) = 30 + 37 = 67;
f(20) = 33 + max(f(1), f(3), f(4), f(13)) = 33 + 99 = 132.
f(13) = 32 + max(f(11), f(12)) = 32 + 67 = 99;
f(14) = 33 + max(f(11), f(16)) = 33 + 232 = 265;
f(19) = 24 + max(f(11), f(16)) = 24 + 135 = 159;
f(9) = 28 + max(f(12), f(20)) = 28 + 132 = 160;
f(6) = 25 + max(f(5), f(7), f(8), f(15)) = 25 + 199 = 224;
f(16) = 33 + max(f(7), f(15)) = 33 + 199 = 232.
| A | B | C | D |
|---|---|---|---|
| ID | Время выполнения | ID | Время окончания процесса |
| 1 | 20 | 0 | 20 |
| 2 | 26 | 0 | 26 |
| 4 | 28 | 0 | 28 |
| 12 | 29 | 0 | 29 |
| 18 | 37 | 0 | 37 |
| 8 | 32 | 1 | 52 |
| 5 | 29 | 2 | 55 |
| 7 | 31 | 4 | 59 |
| 10 | 34 | 7 | 93 |
| 15 | 39 | 9 | 199 |
| 3 | 41 | 12 | 70 |
| 17 | 36 | 13 | 135 |
| 11 | 30 | 18 | 67 |
| 20 | 33 | 1;3;4;13 | 132 |
| 13 | 32 | 11;12 | 99 |
| 14 | 33 | 11;16 | 265 |
| 19 | 24 | 12;17 | 159 |
| 9 | 28 | 12;20 | 160 |
| 6 | 25 | 5;7;8;15 | 224 |
| 16 | 33 | 7;15 | 232 |
| МАКС | 265 |
Ответ: 265.

