Научная статья на тему 'Алгоритм нахождения порядковой функции сетевого графика'

Алгоритм нахождения порядковой функции сетевого графика Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
89
15
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Алгоритм нахождения порядковой функции сетевого графика»

ИЗВЕСТИЯ

ТОМСКОГО ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ПОЛИТЕХНИЧЕСКОГО

ИНСТИТУТА имени С. М. КИРОВА

Том 168 ! 909

АЛГОРИТМ НАХОЖДЕНИЯ ПОРЯДКОВОЙ ФУНКЦИИ СЕТЕВОГО ГРАФИКА

Ю. И. ЕФИМОВ

(Представлена научным семинаром вычислительной .лаборатории ТП1П

При машинной анализе сложного сетевого графика, являющегося динамической моделью комплекса разработок, часто возникает задача предварительного упорядочения событий. Сущность упорядочения сводится к разбиению множества событий сетевого графика па отдельные подмножества — классы [1]. Такое разбиение полезно, когда необходимо ввести в график новые события и работы, вычертить сетевой график или часть его. Предварительное упорядочение событий по классам позволяет также ускорить процесс временного анализа сетевого графика. Так, для нахождения времени наиболее раннего свершения события [[1» 2, 3] достаточно всего лишь одного п р ос м ото а исходной информации.

Для разбиения событий сетевого графика на классы находят для каждого события число, называемое порядком. Затем исходную информацию упорядочивают по мере возрастания порядка начальных (для расчета tp(i)) или конечных (для Ы{1)) событий работ. Дадим Гм>лее строгие определения.

Пусть задан сетевой график без контуров [4] О = (/, Г ч. где / — непустое множество событий графика I г Г-1 отображение множества / в /. Рассмотрим некоторые подмножества I.

I (0) = {/ Г/-1 = 0} /(!) = {/■ п-1 с:/(0)1

I (к) - {£ 1 С1 / (/с — 1) ].

п

В общем случае /(л).— у /(/<).

/С----1

Очевидно, если а < [3, то 1{о.)а1Щ. Порядком события / сетевого графика (? = (/, Г-1) назовем наименьшее порядковое число а, для которого /С/(а); ¿С/(Р) при всех 3 < а. Полагаем тогда, что а = ©(/), где 9(0 — порядковая функция сетевого графика. Используя отображение Г, обратное Г-1, можно получить подмножества

/-■ (0) = и п = 0}

1-Цк) = {г Гг с/-'(«: -1)1 ■

п

В общем случае 1~{ (п) ^ и /"'00-

Аналогично получим обратный порядок события or1 и обратную порядковую функцию сетевого графика Очевидно, что меж-

ду функциями © (г) и <p_1(i) существует однозначная зависимость:

ср-1 (¿) - ?тах (г) — ср (0, причем

?тах(0 = 'fmax (0, ГДв МЭКСИМуМ id

берется по всем событиям /£/. Приняв длительность каждой работы сетевого графика равной единице, получим ср (г) = tp(i), где tp (¿) — наиболее ранний срок свершения события i.

Так что для нахождения порядковой функции можно воспользоваться любым алгоритмом вычисления tp (¿) |1, 3, 5, 6]. Нахождение ср (¿) с целью ускорения расчетов временных параметров (используя упорядочение по классам) не имеет смысла, если для вычисления порядковой функции использовать те же алгоритмы, что и для временного анализа. Представляется целесообразным разработать специальные алгоритмы, которые бы полнее учитывали как специфику поставленной задачи, так и выигрышные особенности ЭЦВМ, на которой они реализуются.

Опишем один из возможных вариантов решения задачи нахождения порядковой функции сетевого графика на двухадресной вычислительной машине „Минск-1". Исходная информация (UU) о сетевом графике задается в виде списка работ и их длин, расположенных в любой последовательности. Производим упорядочение работ UU по ходу их начал [6| и получаем информацию вида

i) г a jttj о (/), 'где

i -— номер ячейки памяти машины, равный номеру начального события работы;

у - номер конечного события одной из работ, исходящей из события /;

г— число работ, исходящих из события /;

а — условный адрес другой работы, исходящей из события i.

Действительный адрес (a-j-c), где с — const. Обычно с принимают равной наибольшему номеру события сетевого графика.

ср(/)— порядковая функция. Пока ср (/) = 0 для всех

Из определения порядковой функции сетевого графика следует, что если все события, имеющие <р (/) — р, образуют известное подмножество /1 (р) С! /, то все события подмножества р + 1) — {¿. i С Г I{(о)} принимают значения ?(/)—р + 1. При этом, если какое-нибудь событие подмножества /](o-f-l) имеет уже вычисленную функцию порядка, то ее следует заменить новой. Отсюда работа алгоритма сводится к следующему. Исходному событию /0 присвоим значение ?(/о)~0. На первом шаге находим подмножество событий Х70 и присваиваем им значение ср (/) = 1. Для этого из содержимого ячейки ¿„ выделяются величины j и а. По адресу / заносится значение o(j) — 1, а из содержимого ячейки (а + с) вновь выделяются величины / и а. Процесс продолжается до выделения величины а — 0. что свидетельствует о присвоении всем событиям подмножества П„ значения ср(/) = 1. На втором шаге для каждого события i, имеющего <?(/) — 1, находим подмножество Г7 только что описанным способом. Каждому событию подмножества Г/ присваиваем ср (7) = 2. На к-м шаге для событий, имеющих? (¿) ~ /с, находим подмножества Г/ и присваиваем значение ?(г)=/с + 1.

Процесс продолжается до тех пор, пока на каком-то шаге все найденные подмножества 17 = 0. На этом вычисление порядковой функции сетевого графика заканчивается. Очевидно, что количество онисанных шагов равно числу [<ртах (0 + 1]. Почти полное отсутствие арифметических операций, а также необходимость просмотра на каждом шаге только списка событий, а не обшего списка работ,

делают алгоритм более быстродействующим по сравнению с известными алгоритмами для расчета tp{i) и Ьп{1).

Рассмотрим описанный алгоритм на примере. Пусть ШУ о сетевом графике (рис. 1) задана на табл. 1. Программой упорядочения |6] при С — 6 (т.к. 6—наибольший номер события) информация преобразуется к виду, представленному левой частью табл. 2. Временные оценки и значения г во внимание не принимаются, так как они не участвуют в работе алгоритма. В правой части табл. 2

Рис. 1. Пример сетевого графика

Таблица 1

'f (/) на каждом шаге

J *V

1 i г (i j f\' ï \

0 1 2 3 4 Q IV/

1 2 1

2 3 2 1 2 4 2 0 0

3 4 2 2 3 1 3 0 1 1

2 5 1 3 2 2 4 0 2 2

5 4 3 4 0 3 4 4

3 5 1 5 1 0 4 0 2 3 3

6 5 3 6 1 0 5 0 1 2 2

2 6 2 7 2 3 5

1 6 3 10 11 12 1 1 1 ООО 5 6 6

даны значения ср(г), вычисляемые на каждом шаге. Пустые клетки означают, что значение ® (/) осталось без изменения. На первом шаге из ¿{) = 1 выделяем / = 2 и а = 4. В ячейку 2 заносим ср(2) = 1, а из ячейки а-\- с = 4 + 6= 128 выделяем / = 6, а ~ 0. В ячейку 6 заносим о (6) = 1 и на этом заканчиваем первый шаг, так как а ~ 0. На втором шаге из ячейки 2 [так как <р(2) = 1] выделяем / = 3, а= 1. Вносим о (3) — 2. Из ячейки а+ с =6-Ь1 = 1 78 выделяем / = 5, а = 3. Вносим ср (5) — 2. Из ячейки 6 4-3 = 118 выделяем / = 6, а = 0. Вносим ср(6) = 2. Так как событие 6 к моменту его рассмотрения изменило уже значение <р (6) с 1 на 2, то для него ГГ) не находим (за счет этого процесс расчета несколько ускоряется). Действуя таким образом, заполняем правую часть табл. 2. На 5-м шаге никаких изменений в значения ср (i) не вносится, так как событие 4 не имеет исходящих работ (Г\ = 0). В последнем столбце табл. 2 выписаны получившиеся значения <?(/).

ЛИТЕРАТУРА

1. К- А. Багри новский, И. Б. Рабинович. Постановка задачи анализа сетевого графика. Сб. «Вычислительные системы», вып. И, Новосибирск, из-во ИМ СО АН СССР, 1964.

2. Г. С. Поспелов, А. И. Теймаи. Автоматизация процессов управления разработками больших систем или сложных комплексов. Изд-во АН СССР, серия Техн. кибернетики, № 4, 1963.

3. L. R. Ford. Network flow-theory, Rand Corp. paper, P-923, 1956.

4. К. Б ер ж .Теория графов и ее применения. М., Издательство ИЛ., 1962.

5. Г. М. А д е л ь с о н-В е л ь с к и й, Ф. М. Филлер. Программа вычисления сетевых графиков. Ж- вычислительной математики и матем. физики, т. 5, № 1, 1965.

6. Ю. Н. Е ф и м о в, В. И. К и з ё в, В. М. Р а з и н. Об одном алгоритме автоматизации расчетов для процессов управления разработками сложных систем. Изв. ТПИ, т. 154, тя. ТГУ, 1967.

i Надоели баннеры? Вы всегда можете отключить рекламу.