Параллельное программирование — аппарат исследования операций
Временные оценки на информационных графах
Информационный граф отображает порядок следования работ. Тогда очевидно, что момент окончания выполнения любой работы (если началом отсчёта времени является момент начала выполнения работ — начало выполнения алгоритма) не может быть меньше максимальной из длин всех путей, которые заканчиваются вершиной, соответствующей этой работе.
Таким образом, для каждой i = 1 , ... , m работы алгоритма, представленного информационным графом, можно найти ранний срок окончания её выполнения. Если же выполнение алгоритма ограничено временем T < Tкр, то для каждой работы можно найти и поздний срок окончания её выполнения. Окончание выполнения i -й работы позже этого срока приводит к тому, что выполнение других работ, следующих за данной, не может быть закончено до истечения времени T. Иначе говоря, поздний срок окончания выполнения данной работы не может превышать разности между значением T и максимальной из длин путей, в первую вершину которых входит дуга, что исходит из вершины, соответствующей данной работе. Без задания значения T (ограничения на длительность вычислительного процесса) определение позднего срока окончания выполнения работы не имеет смысла.
При T = Tкр ранние сроки окончания выполнения работ, составляющих критические пути, совпадают с поздними сроками окончания их выполнения.
Прежде чем рассмотреть алгоритм нахождения ранних и поздних сроков окончания выполнения работ по расширенной матрице следования S*, отметим, что учёт транзитивных связей увеличивает число необходимых действий. Так как граф G не содержит контуров, то матрица следования S может быть преобразована в треугольную. Однако при построении алгоритмов решения задач распараллеливания не представляется удобным преобразовывать матрицу следования. Поэтому будем считать, что в общем случае матрица S не треугольная.
Алгоритм 2 нахождения ранних сроков окончания выполнения работ.
- Полагаем первоначально .
- Производя циклический обзор строк матрицы S, находим очередную из необработанных строк. Если все строки обработаны, выполнение алгоритма заканчивается.
- Пусть j — номер найденной необработанной строки. Если j -я строка не содержит единичных элементов, полагаем . Переходим к выполнению шага 6.
- Если j -я строка содержит единичные элементы, выбираем элементы множества , соответствующие номерам единичных элементов j -й строки.
-
Если все выбранные таким образом элементы, образующие множество , отличны от нуля, полагаем .
Если хотя бы один из выбранных элементов нулевой (соответствующий ранний срок ещё не найден), выполняем шаг 2.
-
Обработанную j -ю строку метим, чтобы исключить её повторную обработку. Переходим к выполнению шага 2.
Примечание. Если граф G не содержит контуров, зацикливание при этом невозможно.
Конец алгоритма.
Если матрица S треугольная, то никогда не складываются условия для многократного циклического обзора строк. Тогда ранние сроки окончания выполнения работ находятся за один последовательный просмотр строк матрицы S.
Очевидно, что .
По матрице S* ( S — треугольная) на рис. 7.5 (граф G — на рис. 7.1) находим
.
Чтобы рассмотреть пример с нетреугольной матрицей следования, выберем граф G без контуров с "неправильно" пронумерованными вершинами (рис. 7.10).
После обработки первой строки . Попытка обработать вторую строку неудачна, т.к. и ещё не найдены. После обработки третьей строки . Обработка четвёртой строки даёт . После обработки пятой строки . Попытка обработки шестой строки неудачна, т.к. не найдено значение . Приступаем к следующему циклу обзора необработанных строк S. Обрабатываем вторую строку: . После обработки шестой строки .
Для удобства представления наряду с другими способами будем пользоваться наглядными диаграммами выполнения работ при заданных значениях времени начала или окончания их выполнения. Работы обозначаются прямоугольниками с постоянной высотой и длиной, равной времени выполнения. Стрелки, связывающие прямоугольники-работы, соответствуют дугам в графе G. На рис. 7.11 представлена диаграмма выполнения работ, отраженных графом G на рис. 7.1 и расширенной матрицей следования на рис. 7.5 — при ранних сроках выполнения работ.
Алгоритм 3 нахождения поздних сроков окончания выполнения работ при заданном значении Т.
- Полагаем первоначально .
- Производя циклический обзор справа налево столбцов матрицы S, находим очередной из не обработанных ещё столбцов. Если все столбцы обработаны, выполнение алгоритма заканчивается.
- Пусть j — номер найденного необработанного столбца. Если j -й столбец не содержит единичных элементов, полагаем . Переходим к выполнению шага 6.
- Если j -й столбец содержит единичные элементы, выбираем элементы множества , соответствующие номерам единичных элементов j-го столбца.
-
Если все выбранные таким образом элементы , отличны от нуля, полагаем
.
В противном случае выполняем шаг 2.
- Обработанный j -й столбец метим с целью исключения его повторной обработки. Переходим к выполнению шага 2.
Конец алгоритма.
Если матрица S — треугольная, то поздние сроки окончания выполнения работ находятся за один просмотр столбцов.
Для матрицы S* (матрица S — треугольная) на рис. 7.5 и для T = 10 за один просмотр находим
.
Для нетреугольной матрицы S на рис. 7.10 при T = 10 находим . Обработка четвёртого столбца откладывается, т.к. не найдено значение . По этой же причине не обрабатывается третий столбец. После обработки второго столбца находим .
Обработка первого столбца невозможна, т.к. ещё не найдено значение . Продолжаем циклический обзор столбцов. После обработки четвёертого столбца получаем . Обработка третьего столбца даёт . После обработки первого столбца находим .
Диаграммы выполнения работ при поздних сроках окончания, по графам на рис. 7.1 и 7.10, при T = 10 представлены на рис. 7.12 — (а) и (б), соответственно. (Стрелки, соответствующие дугам в графах, опущены в связи с их избыточностью.)
Рис. 7.12. Диаграммы выполнения работ при поздних сроках окончания: а — для графа на рис. 7.1,б — для графа на рис. 7.10
Пусть — произвольное значение момента окончания выполнения j -й работы, j =1 , ... , m,
.
Меняя значения , но соблюдая при этом порядок следования работ, мы получим множество допустимых расписаний выполнения работ.
Нашей конечной целью является выбор таких расписаний, которые позволяют решить задачи 1 и 2.