Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Скрыдлов, Н. В. Автоматизированные системы оперативного управления в строительстве

.pdf
Скачиваний:
10
Добавлен:
19.10.2023
Размер:
4.62 Mб
Скачать

1

Рис. 5 . Блок-схема алгоритма расчета сетевых графи­ ков итерациями

/^ р

 

Гт/

 

 

 

 

 

=/пах-

 

 

 

 

Т/

=min

/т/

 

 

 

 

 

/7

 

 

 

 

 

 

_ Т/ %

*

 

 

 

Последняя величина, будучи вычтенной из т *

= тах Т /

даст Ту

для каждого J .

 

 

Р

<v^

Если при любом

из проходов

максимум

Ту

или Tj был

получен путем суммирования,

то

признаку

1

присваиваем

60

значение true и повторяем

счет. Поскольку нумерация

со­

бытий определяется потребностями производства,

то

номера

событий не имеют, вообще говоря, отношения к

последова­

тельности их вхождения в пути сетевого графика.

 

 

 

Просмотр списка работ мы осуществляем от начала

к кон­

цу, поэтому число просмотров

лежит между 1 (если в

спис­

ке работы упорядочены так, что порядок их расположения

в

любом пути таков же, как

в

исходном списке)

и

/ ( j 1 )

в

случае противоположного расположения. Здесь /

(/О

-

наи­

большее число работ в пути.

 

 

 

 

 

 

Поэтому математическое ожидание числа просмотров

се­

тевого графика Е (/ff)

=

1

( ^ + ^ (J4),

 

 

 

 

С другой стороны, обращает на себя внимание

предельно

малое число операций,

осуществляемое при анализе

каждой

работы, и минимум необходимой для расчета информации(кро­

ме исходных данных /

[1 : П~] , ур., n] ,

t y

[ 1 : /Т 2

и

результатов

Ткр , Т Р [ 1 : У ] , T n

[1 :

нужны лишь

параметры

П, М , J

).

 

 

 

 

Таким образом, метод итераций является

(если

данные

целиком размещаются в оперативной памяти)

наиболее

 

эко­

номичным с точки зрения затрат времени на

анализе

одной

работы, наиболее экономичным с точки зрения затрат памяти

ЭВМ для размещения дополнительной информации.

 

 

 

 

Недостатком метода

является сравнительно большое

чис­

ло просмотров, поэтому возникает необходимость

 

упоря­

дочения списка работ.

 

 

 

 

 

 

 

 

 

 

 

 

 

Введем

отношение

квазипорядка

на графе

(X, Г) *

сле­

дующим образом: х ^ у ,

если х=у

или имеется путь из х

в

у.

Будем в этом случае говорить, что х предшествует у или

у

следует за х. Если одновременно

х » у

и

у «=

х,

то говорят,

что

х эквивалентно

у

=

х ).

 

В этом случае

х

совпадает

с у

(х= у)

или х и у лежат на

одном контуре.

 

 

 

 

 

В

графе

без контуров

х=у означает совпадение

х с

у;

 

в

этом

случае отношение

 

 

является отношением

порядка.

 

 

 

Отношение £

есть

квазипорядок,

если

имеют

место:

 

рефлексивность (х

*

х

для всех х

е

X);

транзитив­

 

ность

(х ^ у,

у^ 2 —

х ^ z

для

х,

у , z c

X).

 

 

 

61

Рассмотрим для графа

0 \ ^ ( Х , Г)

множества

X

(<* ) ^ :

Х (0)

=

{ * >Гх 1 е

0 }

;

 

 

 

 

Х ( 1 >

=

( л , г ; 1 € Х(0)}

;

 

 

 

 

хш={*,г;1е (/-*;];

 

 

 

 

х

г

;

1€jr (/7- 1)}.

 

 

 

 

Назовем a. (X) порядковым числом вершины х,

если xeXY^A

Некоторые вершины графа не могут иметь порядка,

к

таким

относятся все вершины контура.

 

 

 

 

Применительно к описанному выше алгоритму

 

получаем

следующие

очевидные следствия.

 

 

 

 

1 . Порядковые числа вершин вычисляются с помощью при­

веденного

алгоритма расчета при всех

£у = 1.

 

 

 

2 . Если в сети имеется контур, то алгоритм

 

зацикли­

вается. Поскольку до окончания работы алгоритма нам

не­

известна длина

/

( J4 )

максимального пути, для

 

контроля

наличия контуров необходимо пользоваться верхней оценкой -

числом работ в сети п .

 

 

 

 

 

 

3 . В случае отсутствия в сети контуров можно

упорядо­

чить список работ, вычислив порядок вершин и

расположив

работы (х, у) по

росту

ос (х).

 

 

 

 

 

4 . При использовании метода итераций в случае

'упоря­

доченного" списка работ расчет-просмотр производится

с

минимумом элементарных операций.

 

 

 

 

 

Простейший алгоритм упорядочения состоит в

последо­

вательном переборе списков i , j , t y

с

выписыванием

в

списки с*, J*, tij

работ, для которых

& ( 1)

=0,

затем

1 и

т.д.

 

 

 

 

 

 

 

Это позволяет

иначе

организовать

алгоритм

расчета,

а

именно по схеме: вычисление функции порядка, упорядочение,

счет.

 

 

При этом счет сводится к простому процессу

вычис­

ления глах{ ^ . tij для каждого события

j и

осуществ­

ляется за один просмотр упорядоченного

списка

работ. По­

этому если расчет сетевого графика входит во

внутренний

цикл, целесообразно произвести отдельно его

упорядочение

и во внутреннем цикле оперировать уже с

упорядоченным

списком работ.

 

 

* Для конечных графов один из частных случаев

поряд­

ковой функции.

 

 

62

gi.ApTPPKrM.Kgga

 

 

 

Фулкерсон описал в [У .2] алгоритм, позволяющий

при­

сваивать время событиям графа в порядке

роста

их

поряд­

ковой функции.

 

 

 

В просмотр вставляется дополнительный цикл, в

 

котором

проверяется возможность осуществить операцию

присваи­

вания времени некоторому событию, а именно (

описываем

для ранних сроков): при просмотре работ для каждой

из них

организуется дополнительный, внутренний перебор,

т .е . про­

веряется, входит ли в предшествующее ей событие

L £ s J *

хотя бы одна работа; если нет, то событию

Г s ] ,

в

которое

входит она сама, присваивается время по общей формуле. В этом случае сама работа из списка вычеркивается.

Данный алгоритм осуществляет расчет временных харак­ теристик графика избирательно. В соответствии с ростом по­

рядковой функции ft ( xL ) его можно применить для

упоря­

дочения списка работ. Для этого соответствующие

работы не

исключаются, а заносятся в другой список в порядке

обна­

ружения.

 

 

Работа с упорядоченным списком существенно

сокращает

время, поэтому возникает вопрос о возможности сделать ал­

горитм более эффективным. Такой алгоритм описан

 

Каном

в [У .З ].

Эффективность работы

 

алгоритма достигается

за

счет определенной предварительной подготовки,

состоящей

из следующих этапов:

 

 

 

 

 

 

 

предварительное упорядочение исходного списка работ;

создание служебных информационных массивов.

 

 

 

Предварительное

упорядочение

работ состоит

в

 

син­

хронной перегруппировке всех массивов таким образом,

что

в списке

/ [ в ]

номера

i

растут с ростом s .

 

 

Для ускорения поиска создаются служебные массивы

 

 

А [ I ] , пЬх Г /]

i

1Г [ s ] .

 

 

 

Массив А [ i ] для каждого

включает номер

s

в

списке / [ s ] ,

начиная с

которого содержатся начальные вер­

шины с номером i .

 

 

 

 

 

 

 

Массив

/7|х [ I ]

для каждого

с

содержит число

конеч­

ных событий

в списке j [ s ] , для которых j [ s ] ~ i

, т .е .

он

для каждого имеет значение числа работ, входящих в

собы­

тие с номером

/

 

 

 

 

 

 

 

 

*Под s подразумевается параметр цикла при переборе массива работ.

63

О3

 

 

1

 

 

 

Ввод n,

£ [ ) : я ] , 7 [ l:n],

[ b i ] ;

упорядочение работ (списков £

, <t-y)

по росту номеров £ ■;

 

 

чистка:

Л [ l :V}: * пвх[ 1:Л’]-: -

О,

П [1:п}: ■ false;

просмотр / [ 1:п] с одновременным четом пв х [;']■:■ пвх [;']♦ 1;

просмотр £ [ 1:п ]с одновременным формированием А [ 1:Л'] ■:

А [£ [я]]-:» ( A li [я]], если £ Ы =£ [я-1] если £ Ы / £ [*■]];

просмотр £ [1т л] с одновременным формированием /7[1эт]:

ПW:■ | П[я], если £[s]-£[s+l]

\true, если £ [s]/£ [я+1]

* Р [ 1:п] - м а с с и в н о м еров работ в по ­ р я д к е ,о п р е д е л я е м о м сетью ; R [):п] - б уф ер д ля п ер еуп о р ядо ч ени я £ [1: я],

Д 1:п], Ц : [ Iti] па Р [яя]

-i .Г 4

Поиск контуров (см.алгоритм Адельсона-Вельского); составление списка работ, лежащих на контурах; выработка признака нали­ чия контуров-признака ошибки в исходных данных:

Формирование списка номеров работ, исходящих из начала:

1) поиск £[л] с пвх [£ [я]] • 0 ;

2) выписывание в массив Р после* довательно номеров я от Л [я] до я , для которого П [я] - true (включительно)-; при этом произ­ водится счет элементов Р { я) — параметр m

I 3

0

В ы х о д Рис. 6 . Блок-схема алгоритма Кана

Чистка: г : ■ 0

I

Массив K [ s ] является булевским

и принимает

значение

true для тех

s

,

для которых

iC&]

 

+

 

 

Алгоритм работает следующим образом (рис. 6 ) .

 

 

Рассмотрим одно существенное свойство алгоритма

Кана:

алгоритм позволяет получить все расширения графа G (Х ,Г ),

не приводящие к образованию контуров.

 

 

 

 

Оператор 'начальный шаг' в указанном

алгоритме

строит

'фронт работ', исходящих из х

.

Оператор (§) строит

 

(не

выделяя их явно)

последующие “фронты,

пользуясь

правилом

выбора

работ из

^

подряд.

G'

 

 

G , не

 

В произвольном расширении

графа

приво­

дящем к образованию контуров, могут встретиться

дополни­

тельные дуги ( i , У

)

двух типов:

 

 

 

 

 

 

 

соединяющие вершины с

i r ( i ) ^ 1T(j)

-

они не меняют фронтов

работ;

 

 

 

 

7t(i)^7i(J)

 

 

 

 

 

соединяющие вершины с

-

наличие таких

вершин

эквивалентно введению запретов на рассмотрение работ,

исхо­

дящих из

j

, до рассмотрения работ,

исходящих из

i.

 

Таким образом,

для каждого допустимого расширения

G '

графа можно сконструировать такое правило запрета, что работы

G в упорядоченном списке будут расположены в том же

поряд­

ке, как они были бы расположены в упорядоченном списке

G' ,

составленном без применения правил запрета.

Поскольку задача минимизации срока выполнения комплекса работ при заданных ограничениях на ресурсы, описанная выше, является как раз задачей поиска допустимого (удовлетворяющего ограничениям) расширения G' графа G , ее можно истол­ ковать как последовательный поиск допустимого включения работ

во фронты, причем правило выбора должно гарантировать

мини­

мум срока выполнения комплекса работ.

 

 

Таким образом, алгоритм Кана является подходящим

инстру­

ментом для построения множества расширений графа G

с

за­

данными ограничениями на фронты работ.

 

 

По сравнению с алгоритмом метода итераций алгоритм

Кана

требует дополнительно место для расположения служебных

мас­

сивов Л f < ] ,

С / J и булевского массива f f ( s ) .

 

 

По числу операций на анализ одной работы он требует

 

при­

мерно в 5 раз большего времени. Однако он позволяет

упорядо­

чить спиоок работ за один просмотр. Кроме того, с его

помощью

Можно совместить упорядочение с решением задачи выбора опти­

мальной очередности работ с заданными ограничениями на

ре­

сурсы.

 

 

65

5.3ак.349

3 . Ал г о р и т м обхода д у г ориентированного графа

 

Данный алгоритм аналогичен.алгоритму Тарри [y.3j

, с

по­

мощью которого решается классическая задача теории графов -

поиск выхода из лабиринта. В применении к сетевому

планиро­

ванию алгоритм был рассмотрен Г.М. Адельсоном-Вельским

и

Ф.М. Филлер [У.5] . Принципиальная схема работы

алгоритма

Адельсона-Вельского описьюается следующим образом.

 

1 . Осуществлением из конечного события шаг влево, записы­

вая работу, по которой сделан шаг влево, в массив "пути".

Ана­

лизируем событие, которое является началом этой работы.

Если

оно не является началом сети, повторяем шаг влево и т.д.,

пока

не дойдем до начала сети.

 

 

2 . Извлекаем из массива пути последнюю занесенную

туда

работу. Ее записываем в список упорядоченных работ,

а в

ис­

ходном списке помечаем как исключенную. Эта процедура

назы­

вается шаг вправо. Анализируем конечное событие этой

работы

на возможность сделать

из него шаг влево (проверяем,

 

есть

ли в числе работ, входящих в это событие, еще не

исключенные

из исходного списка). Если это возможно, то осуществляем

но­

вый шаг влево, если же нет, то помечаем событие как

началь­

ное и осуществляем по работам массива пути шаг вправо.

 

 

 

3 .

Процедура заканчивается, когда ни из одного конечного со­

бытия нельзя сделать

шаг влево.

 

 

 

 

 

 

На самом деле шаг влево сопровождается временной пометкой

вершин работ, записанных в массив пути, а шаг вправо -

исклю­

чением этих пометок. Это позволяет совместить упорядочение

с

выявлением контуров, которые возникают вследствие ошибок

в

заполнении исходных данных. Работа алгоритма

поясняется

рис. 7 .

 

 

 

 

 

 

 

 

 

Алгоритм Адельсона-Вельского требует также

определенной

предварительной подготовки.

 

 

 

 

 

 

1 . Списки

i , j ,

ttj

синхронно упорядочиваются таким

обра­

зом,

чтобы в списке

yTsJ номер конечного события J

 

 

рос

с ростом индекса в .

 

ТГС [1 : N ]

 

 

 

 

V

2 . Создается булевский массив

,

такой, что

 

Г/ ]

= true

при Г

£е

0 (признак начального события).

 

 

3 .

Создается массив

А [ j ] , такой, что

 

 

 

 

 

 

 

1 » J f-sj

 

 

 

 

 

 

 

А Ш -

О, Л $1 ~ J [ S - 1 ]

 

, n

 

 

 

 

 

 

s , S [ s ] ? S [ s - 1 ]

s = 2 ,

> n

 

 

 

66

Выход

'Массив р [l:n] предназначен для записи номеров работ в порядке, определяемом

графом. Массив Р[1:я] ест буфер для переупорядочения работ а иорядхе, опре-

делеияом Р[1:п].Пр2[}:п] елужит для

иолветяи просмотренных работ, Пр 3 [1:п]- Рис. 7 . Блок-схема алгоритма Адельсона-Вельского

для обнаружения контуров.

а>

4. Создается массив [ l : /?J , такой, что

Гfalse

, У [ s ]

= j [ s + 1 ] r

s=1, ... f п -1

7rP[t] = < t r u e

,

У [ s]

* у [ s + i ] ,

s = i , . . . , n - i

I t r u e

,

j i n ]

 

 

 

Алгоритм Адельсона-Вельского требует несколько

меньшей

информации, чем алгоритм Кана,

поскольку массив пути и упо­

рядоченный массив работ могут быть выполнены в виде

двух

стеков, направленных навстречу друг другу, что

автома­

тически гарантирует от переполнения и даже сокращает

число

операций: конец работы наступает, когда записанная в путь рабо­

та должна быть при включении в упорядоченный список

занесена

на то же место, т.е. когда два стека целиком заполняют

массив

длины П , где

П - число работ.

 

 

 

 

Работа алгоритма Адельсона-Вельского несколько

медленнее

работы алгоритма Кана, однако он обладает следующими

досто­

инствами:

 

 

 

 

 

обеспечивает выявление контуров в явном виде;

 

 

 

 

обеспечивает просмотр всех путей за один проход

 

 

массива

работ;

 

 

 

 

 

позволяет выделять пути (или при модификации цепи),

 

удов­

летворяющие заданным требованиям.

 

 

 

 

Это делает целесообразным его применение при решении

за­

дач типа поиска максимального потока,

 

 

 

 

4 . Т рудности, связанны е с ростом объема

задачи

 

Требования практики нередко приводит к необходимости

рас­

чета сетей весьма больших объемов.

 

 

 

 

При экономном использовании памяти ( упаковка

нескольких

чисел в одну ячейку, программирование алгоритмов на

 

языках

типа ассемблера)

современные ЭВМ позволяют рассчитывать без

обращений к внешней памяти сети требуемых объемов.

Однако при программировании на языках более высокого уров­

ня под все переменные, описанные в алгоритмах разд. 1 - 3

дан­

ной главы, будет зарезервировано отдельное место, т.е.

только

массив событий, служащий для записи ранних (поздних)

сроков,

не пострадает. В этом случае актуальным становится вопрос

об

организации расчета для случая, когда в оперативной памяти вы­ делено место для массива событий, работы и служебные мас­ сивы образуются по мере надобности.

68

4 .1 . Прямой расчет сетей большого объема

Под прямым расчетом имеется в виду расчет сетей без

раз­

бивки на фрагменты и без каких-либо предположений об

упоря­

дочении массива работ. Для расчета сети могут быть

исполь­

зованы метод итераций, алгоритм Кана и алгоритм АдельоонаВельского.

Сравним число обращений к внешней памяти при использовании этих алгоритмов. Пусть в оперативной памяти отведено М ячеек для размещения исходных данных, сеть же состоит изЛ'работ и 5 событий. Пусть S М, т.е. массив событий целиком распола­ гается в оперативной памяти. Рассмотрим теперь поочередно все три алгоритма.

4 .2 . Метод итераций

Перебор массива работ требует

У

+ 1

обра­

М - S

 

 

 

щений к внешней памяти, где под [х]

понимается целая

часть

числа х.

 

 

 

Математическое ожидание числа переборов массива работ есть

/77 =

1

{ПАХ

 

 

 

 

1 ( f ) -

 

 

 

 

 

2

 

 

 

 

 

/*

 

 

 

Следовательно,

математическое ожидание числа обращений

к внешней памяти

 

 

 

 

 

 

1_

У

’f

u n .

 

/77 =

+ 1

 

 

 

2

М - 5

 

 

 

 

 

 

 

 

 

4 .3 . Алгоритм Кана и Адельсона-Вельского

 

Пусть в памяти лежит некоторая часть массива работ

длины

М - 5

и нам необходимо найти работы,

исходящие из некоторого

события

 

/ . Поскольку группы работ,

исходящие из

различ­

ных событий, расположены случайным образом,

вероятность по­

требности в считывании нового массива есть:

 

М - б

Рсч

_

 

Математическое ожидание числа обращений к внешней памяти равна

69

Соседние файлы в папке книги из ГПНТБ