Файл: Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2024
Просмотров: 61
Скачиваний: 0
Алгоритм синтеза в языке АЛГЭК-С запишется следующим образом:
|
;нач |
цел |
|
Б1, |
Б2, |
CP; |
цел |
мае |
А[20, |
21], В[15, 1 6 ] ; С[30, 31], Л[10,21] , |
||||||||||||||
|
Л1[20,10], |
Щ 1 0 , 1 6 ] , |
К1 [15,10]; |
|
|
|
|
|
|
|
|
|
||||||||||||
|
цел |
И, Ж , X, Р, Д, Е, П, 3, |
Т, У, М, Н, К, СИ, Ш; |
|
|
|
||||||||||||||||||
|
библ |
('ВВОДЗ', |
|
' I I ' , |
А, |
В); |
Н : = 2 0 ; |
М: = |
15; |
Р : = 0 ; |
|
Д : = 0 ; Е : = 0 ; |
||||||||||||
|
П : = 0 ; Т : = 0 ; Ш: = 1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
М20: |
для |
И : = 1:Н |
цикл |
нач |
для |
Х: = 1 : М |
цикл |
|
|
|
|
|||||||||||||
|
нач |
если |
А [И, 1] = В [ Х , |
1] |
то |
|
на |
M l ; |
|
|
|
|
|
|
||||||||||
|
кон; |
Р : = Р + 1 ; |
для |
И : = 1 : Н |
цикл |
Л [Р, Ж ] : = А [ И , Ж ] ; |
Ж : = И ; |
|||||||||||||||||
|
для |
И : = 1 : Н |
цикл |
Л1 [И, Р ] : = |
А[И, Ж ] ; |
|
|
|
|
|
||||||||||||||
|
кон; |
|
П : = 3 ; |
|
для |
X: = 1 : М |
цикл |
|
|
|
|
|
|
|
|
|
||||||||
|
нач |
для |
3 : = 1 : Р |
|
цикл |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
нач |
если |
В[Х, |
1 ] = С [ 3 , 1] то_на_М2; |
|
|
|
|
|
|
|
|||||||||||||
|
кон; |
|
Т : = Т + 1 ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
для |
У: = 1 : 1 6 |
цикл |
|
Ц[Т,У] : = В [ Х , У ] ; |
У : = Х ; |
|
|
|
|
||||||||||||||
|
для |
Х: = 1 : М |
|
цикл |
Ц[Х, Т ] : = В [X, У]; |
Х : = У ; |
|
|
|
|
||||||||||||||
М2: |
кон; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нач |
Е : = Р ; |
для |
Р : = 1 : Е |
цикл |
|
|
|
|
|
|
|
|
|
||||||||||
|
нач |
С [ 3 , К ] : = Л [ Р , |
Ж ] ; К : = К + 1 ; |
кон; |
|
|
|
|
|
|
||||||||||||||
|
К : = Е ; |
3: = 1; |
для |
И: = 1: Н |
цикл |
|
|
|
|
|
|
|
||||||||||||
|
нач |
С [ 3 , К ] : = Л [ И , |
Р];_на М40; |
кон; |
|
|
|
|
|
|
|
|||||||||||||
М40: |
3 : = 3 + 1 ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
кон; |
Е : = Т ; |
для |
Т: = 1: Е |
цикл |
|
|
|
|
|
|
|
|
|
||||||||||
|
нач |
К: = 1; |
для |
|
У: == 1 : 16 |
цикл |
|
|
|
|
|
|
|
|
|
|||||||||
|
_нач |
С [ 3 , К ] : = Ц [ Т , |
У ] ; |
если |
К = Д |
то на |
МО; |
К : = К + 1 ; н а М З ; |
||||||||||||||||
МО: |
К : = К + Р ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
МЗ: |
кон; |
|
К : = 3 ; |
|
3: = 1; |
для |
Х: = 1:М |
цикл |
|
|
|
|
|
|
||||||||||
|
иач |
С [ 3 , К ] : = Ц [ Х , Т ] ; |
ест |
3 = Д _ т о на М4; |
3 : = 3 + 1 ; |
на |
М5; |
|||||||||||||||||
М4: |
3 : = 3 + Р ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
М 5 : |
кон; |
3 : = 3 + 1 ; |
|
кон; |
К: = 1; |
СИ: = |
1; |
Р : = 0 ; |
|
|
|
|
|
|||||||||||
М8: |
для |
3: = 1: Л |
|
цикл |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
нач |
если |
С [ 3 , К] = С Р |
то |
на Мб; кон; на МЗО; |
|
|
|
||||||||||||||||
Мб: |
К : = 3 ; |
|
для_ |
3: = 1 : Л |
цикл |
СИ: = С И + С |
[3, Д ] ; |
|
|
|
|
|||||||||||||
|
если |
С И > 2 |
_то |
на |
М7; |
3 : = К ; |
|
Ш : = 3 ; |
на |
М8; |
|
|
|
|||||||||||
М7: |
П : = К ; |
3 : = Д ; |
3 : = 3 + 1 ; |
С [ 3 , 1 ] : = Б 1 ; |
С [ 3 , К ] : = |
1; 3 |
: = 3 + 1 ; |
|||||||||||||||||
|
С [ 3 , 1 ] : = Б 2 ; |
|
С[3, . К] : = 1; _для |
3 : = 1 |
: Д |
цикл |
|
|
|
|
||||||||||||||
|
нач |
Д : = П ; если |
С [ 3 , К] = 2 |
то |
на |
М9; |
если С [ 3 , К] = |
1 |
то |
на М10; |
||||||||||||||
|
на М П ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
М10: С [ 3 , К ] : = 0 ; |
если |
3 < ( Д — Т ) |
то_ |
ш_ |
М12; |
К : = К + 2 ; |
С [ 3 , К ] : = 1; |
|||||||||||||||||
|
на М10; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
М9: |
С [ 3 , К ] : - 0 ; |
К : = Д ; |
К : = К + 1 ; |
С [ 3 , К ] : = |
1; |
К : * = К + 1 ; |
С [ 3 , К ] : = 1 ; |
|||||||||||||||||
М П : |
кон^ |
К : = П ; |
3 : = К + 1 ; на |
МЗО; |
|
|
|
|
|
|
|
|
|
|||||||||||
МЗО: |
для |
К: = 1 : ( Л + 1 ) |
цикл |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
нач |
для |
|
3: = 1 : Д цикл |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
нач |
если |
С [ 3 , К] = 2 |
то |
на |
М12; |
|
|
|
|
|
|
|
|
||||||||||
М13* |
кон; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
М12: |
С [ 3 , К ] : = 1; |
на |
MI2 ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
библ |
(ВЫВОД!', |
'Г, С); |
|
|
|
|
|
|
|
|
|
|
|
|
|
191
M l : |
K : = 3 ; C[3,1] : = А [ И , Ж ] ; |
_для |
К: = 1:(М+1 ) |
цикл |
|||||
|
нач |
С [ 3 , К ] : = А [ И , Ж ] + В [ Х , У ] ; |
если Ж = ( Н + 1 ) _ г о на М21; |
||||||
|
если |
У = ( М + 1 ) |
_то |
_на |
М22; У : = У + 1 ; |
Ж : = Ж + 1 ; |
|||
M23:j |
кон; |
|
|
|
|
|
|
|
|
М22: |
У : = У + 1 ; В [ Х , У ] : = 0 ; |
Ж : = Ж + 1 ; _ н а |
М23; |
|
|||||
М21: |
е_сли |
У = ( М + 1 ) |
то_ |
на |
М24; |
Ж : = Ж + 1 ; |
А [ И , Ж ] : = 0 ; У : = У + 1 3 |
||
|
на |
М23; |
|
|
|
|
|
|
|
М24: |
Д : = 3; 3: = 3 + 1 ; |
на |
М20; |
кон; |
|
|
|
Блок-схема перевода матрицы смежности в векторную запись
графа |
представлена |
на |
рис. 40. |
Алгоритм перевода матрицы в |
|||||||
граф в языке АЛГЭК-С будет иметь следующий вид: |
|||||||||||
|
нач |
цел |
мае |
В [ 1 : Р ] , |
А[1:П, |
1:Т]; |
|||||
|
цел |
X, |
i , |
|
j , Т, |
П, |
Р; |
|
|
|
|
|
библ |
('ВВОДЗ', |
'Г, |
А); |
|
|
|||||
М О : |
|
j : = l ; |
В [ Х ] : — a [ i , j ] ; |
|
|||||||
МЗ: |
J : = j + 1 ; |
|
если |
j = T |
то |
на |
M l ; |
|
|||
|
если |
a[i, |
j ] = l |
то |
на |
М2; |
на |
МЗ; |
|||
М2: |
Х : = Х + 1 ; |
В [ Х ] : = а[1,]];_на |
МЗ; |
||||||||
M l : |
если |
i = n |
|
то |
на |
МЕТ; |
|
|
|
||
|
i : = i + l ; |
|
Х : = Х + 1 ; |
на |
МО; |
|
|||||
МЕТ: |
библ |
('ВЫВОДГ, |
'Г, В); |
|
|
||||||
|
кон; |
|
|
|
|
|
|
|
|
|
|
Рис. 40. Блок-схема преобразования матрицы в граф
Глава VIII |
П Е Р С П Е К Т И В Ы И С П О Л Ь З О В А Н И Я |
|
Т Е О Р ИИ ГРАФОВ |
§ 8. 1. ИСПОЛЬЗОВАНИЕ ГРАФОВ
ДЛЯ ПРЕОБРАЗОВАНИЯ АЛГОРИТМОВ И ПРОГРАММ
Представление алгоритмов и программ в виде графов находит все большее применение [34, 62, 65, 80, 82]. Это обуслов лено тем, что в практическом использовании большое распрост ранение получил блок-схемный способ их представления. Блоксхема, по существу, является простейшим графическим способом представления алгоритмов. Однако отсутствие формализации в блок-схемах исключает возможность автоматизации программиро вания на их основе, а также различных формальных преобразо ваний алгоритмов.
В то же время блок-схема легко превращается в граф-схему введением функциональной детализации блоков и ориентирован ных связей между ними.
На этапе представления алгоритмов в виде граф-схем возни кает возможность развития формализованного аппарата для эк вивалентных преобразований алгоритмов. Переход к представле нию алгоритмов и программ в виде ориентированных графов от крывает дополнительные возможности, часть из которых была рас смотрена в данной работе.
В настоящее время имеется формализованный аппарат для пре образования алгоритмов и программ из строчной записи в графы, называемый парной грамматикой [90].
Парная грамматика представляет собой композицию двух грам матик, между правилами и нетерминальными символами которых устанавливаются определенные соответствия. Таким образом, пар ная грамматика устанавливает связь между элементами языков, определенными двумя грамматиками. Эта связь может рассмат риваться как определение перевода элементов одного языка в эле менты другого. Особый интерес представляет случай, когда пер вый язык — набор строк, а второй — набор графов с помеченными дугами и вершинами. В этом случае для построения соответствую щей парной грамматики необходимо иметь грамматику языка про граммирования и графовую грамматику. Парные грамматики мо гут использоваться и для обратного преобразования, т. е. для
13. Заказ 4230. |
193 |
преобразования графов в строки, а также для преобразования графов в графы.
Поскольку языки программирования довольно хорошо изучены, остановимся только на характеристике графовой грамматики и языке, порождаемом этой грамматикой. Графовая грамматика представляет собой обобщение обыкновенной контекстно-свобод ной (КС) грамматики, порождающей языки программирования.
Язык, порождаемый графовой грамматикой, представляет со бой набор ориентированных графов с помеченными вершинами и
дугами. |
|
|
|
|
|
|
Пусть Ау |
и Аи — конечные алфавиты, соответствующие мно |
|||||
жеству |
значений вершин и |
меток |
дуг графа. Тогда граф G над |
|||
Ау и Ам |
будет определяться |
как G (N, V, F ) , где N — конечное |
||||
множество |
вершин; |
V: N—*Ау— |
функция, |
задающая значение |
||
каждой |
вершине; F^NxAMXN— |
|
множество |
дуг и соответствую |
||
щих им меток. |
|
|
|
|
||
Если |
(п, |
a, m)^F, |
то это дуга с меткой а из вершины п в вер |
шину т. Если задан граф G, то принадлежащие ему множества вершин, функций значения вершин и дуг будем обозначать соот
ветственно NG, |
VG, F G . |
|
|
|
|
|
|
|
|
|||
Если Ay и Ам — алфавиты, то |
|
|
|
|
|
|||||||
|
|
G\(AV, |
AM) |
= {G\G — граф над Ау |
и |
Ам). |
||||||
Если |
Ау |
и |
Ам |
известны, |
будем |
писать |
просто |
G1 вместо G1 |
||||
{Ау, Ам). |
|
|
|
|
|
|
|
|
|
|
|
|
Графовый язык над Ау и Ам |
— это последовательность графов |
|||||||||||
вида G1 (Ау, |
Ам). |
|
|
|
|
|
|
|
|
|
||
Графы |
G и Я, |
являющиеся |
элементами |
G1, эквивалентны |
||||||||
(G==H) |
с точностью до изоморфизма, если |
существует такая фун |
||||||||||
кция ф, что |
|
|
|
|
|
|
|
|
|
|
|
|
1) v „ e / V G , |
VG(n) |
= |
VH{4>(n)), |
|
|
|
|
|||||
2) (п, |
а, |
т) |
е= F G , |
когда |
(ф(п), |
а, ф(т)) |
^ |
F H |
• |
Если графы G, Я и К являются элементами G1, то Я и К будут частичными графами от графа G в случае выполнения условий:
1) |
N B { \ N K = 0 , |
|
NQ = |
-NH\)NK; |
|
|
2) |
Vn^NH, |
VH(n) |
= VG(n) |
и Y,n^NK, |
VK(m) = VG(m); |
|
3) |
FH={(n, |
a, |
m) |
<= FG\n, |
m e= N H } |
; |
4) |
FK={(n, |
a, |
m)^FG\n, |
m<=NK} • |
|
Графовой |
грамматикой |
будем |
называть |
совокупность |
(AN, |
|||
АТ, Ам, |
S, |
P), |
где AN |
— конечное множество нетерминальных |
сим |
|||
волов; |
АТ |
— конечное множество |
терминальных |
символов; |
Ам — |
|||
конечное множество |
меток |
дуг; S^AN — начальный нетерминаль |
||||||
ный символ; Р — конечное множество правил грамматики. |
|
|||||||
Каждое правило |
грамматики представляет собой совокупность |
194
вида Г= (G, Я, I , О), в которой |
G e G l |
(AN, |
Ам), |
и имеет |
только |
|||||||||||||||
единственную изолированную вершину. |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
HeGl(AN\j |
|
|
Ат, |
Ам) |
|
и |
|
|
NH^0- |
|
|
|
|
|||
/ е Л ' н — входная вершина; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
0^NH |
|
— выходная вершина. |
Г= |
(G, Я, I , О) |
можно |
записать |
||||||||||||||
Коротко правило грамматики |
||||||||||||||||||||
в виде |
|
|
|
Л - + Я < |
, |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
где Л—нетерминальный |
символ, |
соответствующий |
значению |
|||||||||||||||||
одной из вершин графа G. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Каждое правило определяет возможное преобразование вер |
||||||||||||||||||||
шины, являющейся нетерминальным |
символом. |
|
|
|
|
|
|
|||||||||||||
Будем говорить, что граф Я непосредственно порождается из |
||||||||||||||||||||
графа |
G в грамматике Г—G |
=> Я, если существует такое |
правило |
|||||||||||||||||
Р = ( # , К, |
/, О), что |
|
|
|
|
G' |
и G", |
|
G'=R |
|
|
|
||||||||
1) |
G может быть частью |
графов |
где |
включает |
||||||||||||||||
NQ , содержащее только одну вершину — |
n s |
; |
|
|
|
|
|
|
||||||||||||
2) |
Я может быть частью графов Н' |
и Я", если |
|
|
|
|
|
|||||||||||||
а) |
H"==.G" |
, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
б) |
Н' |
=К . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
в) |
FH |
= FH, |
U FH»[}{(m, |
а, |
|
/ ) | (m, |
|
a, |
n Q ) e / 7 |
G , |
т = ^ " 0 } |
|
|
|||||||
|
|
|
|
U{(О, |
а, |
|
/п) | ( я s |
, |
a, |
|
m)<=FG, |
тфп |
|
J |
|
|||||
|
|
|
|
U ((.О, |
а, |
|
/ ) | ( л а |
, |
а, |
|
|
ftjefo} |
|
• |
|
|
|
|||
Таким |
образом, получение |
Я |
из |
|
G, |
следуя правилу |
Л—>К1 о, |
|||||||||||||
С О С Т О И Т |
в |
подстановке в граф |
G вместо |
вершины |
|
значения |
Л |
|||||||||||||
из графа /С. При этом дуги, |
входящие |
в |
|
« s |
, |
заменяются |
дугами, |
|||||||||||||
ведущими в /, дуги, выходящие |
из n s , дугами, выходящими из |
О, |
||||||||||||||||||
любая петля в вершине п 8 |
заменяется |
дугой из О в /. |
|
грамма- |
||||||||||||||||
Будем |
говорить, что граф |
|
Я |
выводится |
из |
графа |
G в |
|||||||||||||
тике |
|
|
* |
|
|
|
|
|
такая |
последовательность |
хи |
|||||||||
Г — G=> Н, если существует |
||||||||||||||||||||
Х2,---,хп, |
|
г |
каждое x^Gl |
|
|
(AN[}AT, |
|
|
Ам). |
|
|
|
|
|
|
|
||||
|
что |
|
|
|
|
|
При |
этом |
G = x j , |
|||||||||||
Я = д ; п и Xj=> |
для t'= 1,2 |
|
|
п — 1. |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
г |
|
|
|
|
|
|
|
Г, |
есть множество |
графов |
|||||||
Язык L , определенный грамматикой |
||||||||||||||||||||
вида |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
|
|
L r = {Ge=Gl(AT, |
|
|
AM)\Sr |
|
=> |
G, |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
г |
|
|
|
|
|
где Sr — начальный граф грамматики Г вида 5г = ({«}, {(я, 5 ) } , 0 ) •
Графовая грамматика порождает язык «терминальных графов» аналогично тому, как контекстно-свободная грамматика порожда ет множество терминальных строк. Вывод начинается с графа,
13* |
195 |