Файл: Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2024

Просмотров: 64

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

АЛГЭК-программа для данного алгоритма может быть пред­ ставлена следующим образом:

 

нач цел мае Т[3], 3[3, 10], АЦ[2,10], А1[7], А2[8], А3[18], А4[22],

 

А5[28],

А6[30],

А7[16],

А8[12],

А9[10],

А10[17];

 

 

 

 

 

 

 

цел

 

Л,

К,

A3,

Ц З ,

AT,

ЦТ,

03,

ОТ;

 

 

 

 

 

 

 

 

 

процедура

ДОКУМЕНТ

(Д,

Р,

KB,

OA,

О Ц ) ; значение

Р, KB;

 

 

цел

 

Р,

KB,

OA,

ОЦ;

цел

 

мае

 

Д;

 

 

 

 

 

 

 

 

 

 

 

нач

цел

И, Ж , ОД, РО, P I ,

Р2, ВХОД,

ВЫХОД,

Б, ПА,

ПЦ;

 

 

Р 2 : = К В + 1 ; Р 1 : = К В + 2 ; Р О : = К В + 3 ; Б : = Д [ К В ] ;

 

 

 

 

 

ВЫХОД: = Б [элем

1:13]; О А : = 0 ;

 

О Ц : = 0 ; для

И : = Р 2 : Р

цикл

 

 

нач

 

Б : = Д [ И ] ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если

Б [элем

1 : 13] ^Р2 _ то _ на

МЗ;

ВХОД: = Б [элем

 

14 : 25];

 

 

 

для

 

Ж : = Р 2 : Р

цикл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нач

 

Б : = Д [ Ж ] ;

если

Б [элем

14:25] = В Х О Д Л Б

[элем

1:13]

= Р 1

 

 

то

на

M l ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если

Б [элем

14:25] = В Х О Д Л Б [элем

1:13] = Р О

то

на

М2;

 

 

 

на

М7;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M l :

ПА: = Б [ э л е м 26:37]; _на

М7;

 

 

 

 

 

 

 

 

 

 

 

 

 

М2:

П Ц : = Б [ э л е м

26:37];

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М7:

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мб:

для

 

Ж: = 1 : KB—1 цикл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нач

 

Б : = Д [ Ж ] ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если

Б [элем

1:13] ^ ВХОД

то_ на_ М4;

П А : = П А х Б

[элем

26:37];

 

 

П Ц : = П Ц х Б [ э л е м

26:37];

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если

Б [элем

14:25] =ВЬ1ХОД_го_на М5;

ВХОД: = Б [элем

14:25]; на Мб;

М 5 :

О А : = О А + П А ;

О Ц : = О Ц + П Ц ;

_на

МЗ;

 

 

 

 

 

 

 

 

М4:

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МЗ:

кощ

 

О Д : = О А + О Ц ;

П А : = О А ;

 

П Ц : = О Ц ;

библ

('ВЫВОДГ,

'11 Г,

 

ПА,

ПЦ,

О Д ) ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кон;

библ

('ВВОДЗ*, Т ,

А1); ДОКУМЕНТ (А1, 7, 3, АЦ[1, 1], АЦ[2, 1]);

 

библ

('ВВОДЗ',

'Г,

А2);

ДОКУМЕНТ

(А2,

8, 4, А Ц [ 1 , 2 ] , А Ц [ 2 , 2 ] ) ;

 

библ

('ВВОДЗ',

'Г,

A3);

ДОКУМЕНТ

(A3,

18,

8,

 

А Щ 1 . 3 ] ,

А Ц [ 2 , 3 ] ) ;

 

библ

('ВВОДЗ',

'Г,

А4);

ДОКУМЕНТ

(А4,

22,

15, А Щ 1 . 4 ] ,

АЦ[2,4]);

 

библ

('ВВОДЗ', Т , А5); ДОКУМЕНТ

(А5,

2, 15,

А Ц [ 1 , 5 ] ,

А Ц [ 2 , 5 ] ) ;

 

библ

('ВВОДЗ',

'Г,

А6);

ДОКУМЕНТ

(А6,

30,

20,

 

А Ц [ 1 , 6 ] ,

А Щ 2 . 6 ] ) ;

 

библ

('ВВОДЗ',

'Г,

А7);

ДОКУМЕНТ

(А7,

16,

9,

АЦ[1,

7],

АЦ[2,

7 ] ) ;

 

библ

('ВВОДЗ', Т , А8); ДОКУМЕНТ

(А8,

12,

5,

АЦ[1,

8],

АЦ[2,

8 ] ) ;

 

библ

('ВВОДЗ',

'Г,

А9);

ДОКУМЕНТ

(А9,

10,

6,

А Ц [ 1 , 9 ] ,

А Ц [ 2 , 9 ] ) ;

 

библ

('ВВОДЗ',

'Г, А10); ДОКУМЕНТ

(А10,

17,

7, А Ц [ 1 , 10], АЦ[2, 10]);

 

библ

('ВВОДЗ',

'Г,

Т); библ

('ВВОДЗ', ' 1 ' , 3 ) ;

 

 

 

 

 

 

 

 

А Т : = 0 ;

 

Ц Т : = 0 ; ^ л я

Л : = 1:3

цикл

 

 

 

 

 

 

 

 

 

 

нач

 

А3 = 0;

Ц 3 : = 0 ; _ д л я

К: = 1 : Ю

цикл

 

 

 

 

 

 

 

 

 

нач

 

если

3

[Л, К ] = 0

то на

Ф4;

 

 

 

 

 

 

 

 

 

 

 

 

Ц З : = Ц З + 3 [ Л , К ] Х А Ц [ 2 , К ] ; А З : = А З + 3 [ Л , К ] Х А Ц [ 1 , К ] ;

 

Ф4:

кон;

Р З : = Ц З + А З ; библ ('ВЫВОДГ,

'111%

A3, ЦЗ, О З ) ;

 

 

 

А Т : = А Т + А З Х Т [ Л ] ;

ЦТ: = Ц Т + Ц З Х Т [ Л ] ;

кон;

О Т : = А Т + Ц Т ;

 

 

библ

('ВЫВОДГ,

'111%

AT,

ЦТ,

ОТ);

 

 

 

 

 

 

 

 

 

 

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

182


 

 

§ 7. 4. ОЦЕНКА СЛОЖНОСТИ АЛГОРИТМОВ

 

 

Исходной информацией

для определения

оценки

сложности

является

граф

алгоритма,

представленный

в виде

соответствую­

щей матрицы смежности.

 

 

 

 

Блок-схема

построения

матрицы смежности

приведена на

рис.

37.

В блок-схеме приняты следующие условные

обозначения:

а

и Ь — элементы матрицы и вектора соответственно;

х — номер элемента в векторе В.

Для построения матрицы смежности исходный граф алгоритма записывается в виде вектора. Последовательность вершин в этом векторе определяется в виде логической функции, в которой вме­

сто круглых скобок используются

минусы.

 

 

Процесс построения

матрицы состоит в заполнении именующих

строки и столбца матрицы, установлении

взаимосвязи элементов

вектора и перенесении этих связей в матрицу.

 

АЛГЭК-программа построения матрицы смежности по графу

может быть представлена следующим образом:

 

_нач

цел

мае

В [ 1 : Р ] ,

А[1:П,

1:Т];

 

 

цел

X, i , Т, П,

 

Р,

j ;

 

 

 

 

библ

 

('ВВОДЗ',

Т ,

В);

 

 

 

МЗ:

для

] : = 1:Т

цикл

нач

 

 

 

 

 

если

B [ X ] = a [ l , j ]

то_

на

M l ;

кон;

 

 

j : = T ;

a[i,

1 ] : = В [ Х ] ;

a[i,

j ] : = B [ X ] ;

 

M l :

T : = j ;

П : = 1 ;

i : = i + l ;

j : = j + l ;

 

X : = X + 1 ;

 

 

 

 

 

 

 

 

 

 

если

 

В [ Х ] = 0 _ т о

 

«а

M2;'_на

МЗ;

 

M2:

 

j

: =

l ;

 

i : =

l ;

X: =

l ;

 

 

M9:

если

B [ X ] < 0

то

 

на

 

М4;

 

 

 

Мб:

если

 

B [ X ] = a [ l , j ]

_то

на

М5;

 

 

i : = i + l ;

_на_

Мб;

 

 

 

 

 

 

М 5 :

a[i,- j ] : =

l

на

М7;

 

 

 

 

 

 

М4:

если

 

В[Х] = a [ i , 1]

_то

та

М7;

 

 

 

i : = i +

l ;

на_

М4;

 

 

 

 

 

 

М7:

Х : = Х + 1 ;

_еслл

В [ Х ] = 0 _ т о на М8; на

М9;

М 8 :

библ

 

('ВЫВОДГ,

'Г,

А);

 

~

 

 

кон;

 

 

 

 

 

 

 

 

 

 

 

 

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

В процессе определения числа различных операций происходит построчный анализ матрицы смежности. Этот анализ начинается с последней строки матрицы, содержащей только нулевые элемен­ ты. При появлении в какой-либо строке ненулевого элемента обра­ батывается строка с номером, равным номеру сголбца, содержа­ щего ненулевой элемент. Этот процесс продолжается до появления конечной вершины графа. Тем самым фиксируется путь от данной вершины к конечной и вычисляется произведение всех элементов матрицы по этому пути. Полученный результат добавляется к эле-

183


Рис. 37. Блок-схема преобразования графа в матрицу

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

На рис. 38

приведена блок-схема алгоритма оценки С Л О Ж Н О С Т И

по операциям,

где:

ГРАФ — матрица смежности; С — вектор операции;

L — текущий элемент вектора;

Н—текущая строка матрицы;

П— промежуточный результат;

АЛГЭК-программа оценки сложности может быть представ­ лена в следующем виде:

С Начало

А.

ввод

Организация цинла

ло I

дойных

 

Чистно ячеек

C(L)

Организация цинла по Н

Ионец цинла по L

 

 

 

 

 

 

 

 

±

~ ~

Организация

цинла

 

(^У*

 

Конец

цинла по Н

 

 

 

 

 

 

 

по

Ж

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисление

шага

 

 

 

 

Т*©

у

/

Печать

^

 

 

 

 

Q

 

Конец

J

 

/7 ••=/?•* ГРЛФ[иЖ)\

 

 

 

 

 

 

U •

 

 

 

 

 

 

 

 

Конец

цинла по Ж

 

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

Рис. 38. Блок-схема оценки сложности

алгоритма

«ач цел В, Р, Н,

С, СС,

Л, Ф,

A l , А2, А, Б, К, И;

 

цел мае ННГ8.71, АА[4,25], Е[25], Ж [4,25], М[25],

Д[25], ГГ251-

библ

('ВВОДЗ',

411 Г,

НН,

АА,

Е,

Ж ) ;

 

 

В : = 0 ;

А : = 0 ;

 

 

 

 

 

 

 

185


АА1:

A " = A + 1 ; Б : = 0 ;

P : = 0 ;

 

 

 

 

 

 

 

 

 

 

 

 

M l : '

Б:' = Б + 1 ; ' если

Н Н [ А , Б ] ' = 0

то

на

М2;

Р : = Р + 1 ; если Б = 7

то на М2;

 

на M l ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М2:

Н : = 0 ;

Б : = 0 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

АA3:

Б : = Б + 1 ; И : = Н Н [ А , Б ] ;

если

( Р — Б ) < 0

то

на

МЗ;

 

 

НАП:

С : = 0 ;

С С : = 0 ;

 

Л : = 0 ;

К : = 0 j

К : = К + 1 ;

 

А1 : = К + 1 ;

если

 

А А [ А 1 , И ] = 0 _ г о

на

М4;

С: = Е[И] Х Ж [ К , И ] ;

Л: = Л + 1 ;

на_ МЕ2;

М4:

если

И = 1

то на

КФН;

С: = Е [ И ] Х Ж [ К , И ] ;

Л : = Л + 1 ;

И : = А А [ К , И ] 5

 

•на М Е 1 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М Е 1 :

К : = 0 ; К: = К + 1 ; А 1 : = , К + 1 ;

 

 

 

 

 

 

 

 

 

 

 

если

АА[А1, И ] = 0 _ т о

на

М5; на МЕЗ;

 

 

 

 

 

 

 

М 5 :

если

И = 1

то

на

МЕ6;

С: = С х Ж [ К , И ] ;

Л : = Л + 1 ; И : = А А [ К , И ] ;

 

на МЕ1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М Е З :

К : = 0 ; К : = К + 1 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если

М [ И ] = 0

 

то

на

МЕ5;

 

 

 

 

 

 

 

 

 

 

Мб:

если

 

А А [ К , И ] = М [ И ]

то

на

МЕ5;

К : = К + 1 ;

на

Мб;

 

М Е 5 :

С : = С Х Ж [ К , И ] ; Л : = Л + 1;

 

 

 

 

 

 

 

 

 

 

МЕ2:

М [ И ] : = А А [ К , И ] ;

Д [ И ] : = Л ?

 

 

 

 

 

 

 

 

 

 

 

Г [ И ] : = С ;

И : = М [ И ] ;

на

МЕ1;

 

 

 

 

 

 

 

 

 

МЕ6:

И : = И + 1 ;

если

М [ И ] = 0

то на

М7;

на

МЕ7;

 

 

 

 

 

М 7 :

если

 

И = 2 5 _то

на

МЕ9;

на_

МЕ6;

 

 

 

 

 

 

 

 

МЕ7:

если

 

Л > = СС _то _н_а

М8; _на

МЕ8;

 

 

 

 

 

 

 

М 8 :

С С : = Л }

Ф : = С ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МЕ8:

К : = 0 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М9:

К : = К + 1 ;

если

 

АА|К, И] = М [ И ]

то _н_а

М10;

на

М9;

 

М10:

А 1 : = К + 1 ; если

АА[А1,

И] = 0

то_на_М11;

М [ И ] : =АА[А1,

И ] ;

 

Л : = Д [ И ] ;

С: = Г [ И ] ;

И : = М [ И ] ;

 

яа_ МЕ1;

 

 

 

 

 

М П :

М [ И ] : = 0 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М12:

если

И = НН[А, Б]

то

на

МЕ9;

И : = И + 1 ; если

М [ И ] = 0 _го

на М13;

 

на МЕ8;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М13:

Если

 

И = 2 5 _то

на

МЕ9;

на_

М12;

 

 

 

 

 

 

 

 

МЕ9:

А 2 : = И ; библ

('ВЫВОДГ,

'111', А2,

Ф,

СС);

Н : = Ф + Н ; _ н а

АA3;

МЗ:

если

 

А = 8

_то

на

М14;

В : = Н + В ;

 

 

 

 

 

 

 

 

 

библ

 

('ВЫВОДГ,

'Г,

Н ) ;

_на

АА1;

 

 

 

 

 

 

 

М14:

В : = В + Н ;

библ

('ВЫВОДГ,

Ч Г ,

 

В,

Н ) ;

на

КФН;

 

 

К Ф Н :

кон;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

§7. 5. СИНТЕЗ АЛГОРИТМОВ

Для практической реализации процесса синтеза алгоритмов используется метод, описанный в § 4.3 данной работы.

Исходными данными для синтеза алгоритмов являются графы алгоритмов задач. Так как в процессе обработки участвуют все элементы матриц смежности, то графы алгоритмов представляют­ ся в виде соответствующих матриц.

Алгоритм синтеза строится для выполнения синтеза двух ал­ горитмов. Если необходимо осуществить синтез большего числа алгоритмов, то первоначально выполняется синтез любых двух алгоритмов. Затем полученный алгоритм синтезируется еще с одним и так до тех пор, пока не будет получен окончательный алгоритм.

186


Алгоритм синтеза можно разделить на две

составные

части:

1) сложение матриц с выделением равных и неравных

частей;

2) корректировка итоговой матрицы с целью

получения мат­

рицы составного алгоритма.

 

 

Рассмотрим каждую из частей более детально.

 

 

В первой части алгоритма выполняется сравнение элементов

именующих строк объединяемых матриц А и В. Если ацФЬх\,

то

значение индекса х увеличивается на единицу, и так до тех

пор,

пока х не будет равно п. Если ац = Ьх1, то выполняется операция сложения элементов матриц Л и В; czq: =ац + Ьху. После этого де­ лается проверка конца матрицы по столбцу. Если столбец одной матрицы исчерпан, а другой нет, то недостающие элементы пер­ вой матрицы полагаются равными нулю. Когда будут исчерпаны оба столбца матриц, выполняется проверка именующей строки.

Появление х=п

означает,

что элемент

an не имеет

равных в

именующей строке

матрицы

В.

Из

таких

элементов

создаются

дополнительные

массивы Ьщ

и

ЬЩ, в которых указываются зна­

чения элемента

an и все его

связи. После этого индекс i увеличи­

вается на единицу, если элемент an не был последним.

 

Если элемент an

был последним,

т. е. i = n, то производится

сравнение элементов именующих строк матрицы В и результатной матрицы С. В результате такого сравнения находятся элементы матрицы В, не вошедшие в матрицу С. Из этих элементов созда­ ются дополнительные массивы Kty и Kxt-

После

завершения

формирования дополнительных

массивов

элементы

из

них переносятся в матрицу С. Элемент из

массива

L R j ставится

в массив

С на место, имеющее координаты

z, 1, пос­

ле чего заполняется столбец связей, соответствующий этому эле­ менту.

После заполнения столбца заполняется строка, соответствующая данному элементу.

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

Во второй части алгоритма в результатной матрице С ищутся вершины, соответствующие операциям сравнения. Если такие вер­ шины есть, то выполняется подсчет суммы S элементов строки, соответствующей этой операции. Если сумма элементов строки оказывается большей чем два (S>2), то вводятся дополнительные вершины с соответствующими связями. Всем элементам матрицы С, значение которых равно двум, присваивается значение единицы.

Блок-схема алгоритма синтеза приведена на рис. 39.

В блок-схеме используются следующие условные обозначения: а, Ь — элементы исходных матриц; С — элементы результатной матрицы;

L , К— элементы вспомогательных массивов; d, t — вспомогательные параметры;

S — сумма элементов по строке матрицы С.

187