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

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

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

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

Добавлен: 21.10.2024

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

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

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

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

няется графом в соответствии с правилами

грамматики.

Процесс

преобразований продолжается до тех

пор, пока не останется ни

одной нетерминальной вершины.

 

 

 

 

 

Определим теперь парные грамматики. Под парной

граммати­

кой понимается пара графовых грамматик

над одними и теми же

алфавитами вместе с соответствиями,

установленными

между

правилами этих грамматик и между

нетерминальными

вершинами

в правилах.

 

 

 

 

 

Пусть заданы:

 

 

 

 

 

1)

алфавиты AN, Ат, Ам\

 

 

 

 

 

2)

графы G и Н из множества Gl

(AN,

Ат,

Ам);

 

 

3)

нетерминальные вершины графа G •—

 

 

 

 

Nl={ne=NG\VG{n)

 

е Л „ } ;

 

 

4)

нетерминальные вершины графа Н —

 

 

 

 

NH={n^NH\VH(n)^AN}

 

,

 

 

тогда нетерминальная вершина спаренных графов G и Н опреде­ ляется с точностью до изоморфизма h следующим образом:

 

 

 

 

V „ e / V o .

VG(n)

= Vn(h(n))

 

 

 

 

 

 

 

Парная

грамматика

определяется

как Г=

(AN,

 

Ат, Ам,

S,

Q),

где

AN,

Ат,

 

Ам — соответственно

алфавиты нетерминальных, тер­

минальных

символов и

меток

дуг, S^AN

— начальный

символ, а

Q —конечное

множество

наборов

(/, q,

к).

В этих

наборах /, q —

правила

таких графовых грамматик,

что

если

/

есть

правило

А^G'o

и q — правило А1—>HTV,

то А=А'

и h — нетерминальная

вершина спаренных графов G и Н.

 

 

 

 

 

 

 

 

 

 

 

 

Пусть Г— (AN, AT, AM, S,

 

Q) — парная

грамматика.

Если

q =

= (/, р, / i ) & Q , то / называется левым правилом

q,

а

р — правым

правилом q, h — спаренная нетерминальная вершина q.

 

 

 

 

вой

Графовая

грамматика Г=

(AN, Ат, Ам,

S,

Р)

называется

ле­

(правой)

грамматикой,

если

Р представляет

собой

множест­

во левых (правых) правил Q.

 

 

 

 

 

 

 

 

 

 

Г,

 

 

 

Язык,

порождаемый

левой

(правой)

грамматикой

называ­

ется левым

(правым) языком.

 

 

 

 

 

 

 

 

 

 

 

 

 

Язык, порождаемый парной грамматикой Г, состоит из упоря­

доченных пар графов левого и правого языков.

 

 

 

 

 

 

 

 

Парная грамматика определяет пары графов, получаемые из

одного и того же начального

графа параллельно. На

каждом

эта­

пе преобразований имеется пара графов,

каждый

из

которых

включает

несколько нетерминальных вершин и соответствия

меж­

ду

этими

нетерминальными

вершинами. При каждом

преобразо­

вании пара

соответствующих

нетерминальных

вершин,

по одной

из графа,

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

с правилами

парной

грамма-

196


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

 

Спаренный граф X над алфавитами AN,

Ат,

Ам

определяется

как

X=(G, Я, h), где G и H^Gl

(AN{jAT,

Ам),

a

h — нетерми­

нальная вершина спаренных графов G и Я.

 

 

 

AN, Ат,

 

Терминальный спаренный граф Z

над

алфавитами

Ам

это спаренный граф вида

Z={G,

Я,

А), в котором все вер­

шины графов G и Я являются

терминальными.

В

этом

случае

множество нетерминальных спаренных вершин будет пусто и граф

можно записать как Z— (G,

Н).

 

 

 

 

 

Пусть задана парная грамматика r=(AN,

Ат, Ам,

S,

Q) и па­

ра графов X=(GX,

Нх, hx)

и У = (Gy,

Ну, hy)

над алфавитами

AN,

Ат, AM-

 

 

 

выводится из X,

сле­

Будем говорить, что У непосредственно

дуя грамматике Г X=> У, если существует

правило

(/,

р,

h)^P,

нетерминальная

вершина п

в графе

G и нетерминальная

вершина

m в графе Я такие, что

1)hx(n)=m (т. е. нетерминальные вершины спариваются);

2)Gx=3* Gv в результате применения правила / для преобра­ зования вершины ft;

3)Яж=>- Ну в результате применения правила Р для преобра­ зования вершины т;

4)hy = hUhx{(я, т )}.

 

Будем

говорить, что

У выводится

из

X,

следуя грамматике Г

 

#

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

г<=>У,

если

существует

такая

последовательность

опарен-

ных

графов

2 Ь

Z2,...,Zn

над

алфавитом

(AN,

А-г, Ам),

что

Х =

— Z\,

y=Zn

 

и Zi

Z j + i

для

i=

1, 2, 3,...,

ft—

1.

 

 

 

 

Язык,

порождаемый

грамматикой

Г,

называется спаренным

языком, если он

определяется

как

L={X\X

 

— терминальный

спа-

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

ренный граф над алфавитами AN, АТ,

А

М И Sr

=> X).

 

 

 

Парная

грамматика

Г — однозначная,

если и левая и правая

грамматики,

принадлежащие

Г, — однозначны

и грамматика

Г не

содержит двух различных правил с идентичными левыми или пра­ выми правилами.

Однозначные парные грамматики дают формализованный ап­ парат для различных преобразований. Так, если левый язык — строчный, то парная грамматика определяет перевод из строк .ч графы. Если правый язык — строчный, то определяется перевод из графов в строки. Если оба языка графовые, то определяется перевод из графов в графы. Однозначность парной грамматики обеспечивает взаимно однозначную обратимость любого из этих переводов.

Используя однозначную парную грамматику,

можно достаточ­

но легко

найти

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

элементу

левого

языка. Пусть Г — однозначная

парная граммати­

ка, левый

язык

которой — множество строк, а правый язык —мно-

197


жество графов. И пусть X — строка в левом языке, которой в пра­ вом языке соответствует граф X'.

Процесс преобразования строки в граф может быть организо­

ван следующим образом. Прежде всего для

строки X выполняется

грамматический разбор на основе правил

левой грамматики, ре­

зультат которого представляется в виде вывода

 

S=> Zx=> Z 2 = ^ . . .=>Zn

= X •

 

После этого, используя правила правой

грамматики и

соответст­

вия парной грамматики, строку X преобразуют в граф X'. Процесс

преобразования начинается с графа 5,

содержащего

единствен­

ную вершину, и включает точно п шагов.

 

 

 

Таким образом, парные грамматики

дают формальный аппа­

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

Изучение парных грамматик является

перспективным

не толь­

ко с точки

зрения формализации процессов трансляции, но и в

связи с широким применением графов как

в теории программиро­

вания,

так

и в организации процессов обработки информации.

В

этой

связи рассмотрим следующее

расширение

графовой

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

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

Иерархически организованный набор графов над одними и те­ ми же алфавитами будем обозначать как Я-граф, который фор­ мально определяется следующим образом:

1)Я ^ = Л У ;

2)Я-граф первого уровня над алфавитами Лу, Ам— это граф

над алфавитами Ау,

Ам;

 

 

3) Я , (AV,

Ам)

=G\(AV,

Л м ) — набор всех Я-графов

первого

уровня;

 

 

над алфавитами Л у, Ам

 

4) Я-граф

к-го

уровня

— это

198


граф над

Hi

(Лу, Ам), Ам, содержащий хотя бы одну вер­

шину Нк-\\

 

 

 

5) Нк (Av,

Ам)

= {Х\Х — это Я-граф/с-го уровня};

 

6) Н(Ау, Ам) =\Зк2(Ип — это множество всех Я-графов

над ал­

фавитами Av,

АМ-

 

 

Введем теперь для каждой терминальной вершины дополни­

тельный параметр — метку. Теперь каждая терминальная

вершина

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

При иерархической структуре графов объединение вершин с

одинаковыми метками разрешается производить только

в

одном

и том же графе в пределах иерархии. Таким образом,

не

могут

быть объединены вершины, расположенные на различных уровнях

Я-графа, а также

вершины,

расположенные в различных графах

одного уровня.

 

 

 

 

 

Введение меток облегчает процесс компиляции из строчного

языка в язык графов. В этом случае метки вершин

выполняют

примерно те же функции, что и таблица

символов.

 

 

В заключение

приведем

пример

представления

АЛГОЛ-про-

граммы (рис. 41)

в виде блок-схемного графа

(рис. 42) .получен­

ного в результате

преобразований по правилам

соответствующей

парной грамматики.

procedure flbsmaxta,n,/n.yi.k},

array a: integer n. m. i. k; real у. begin integerp, q.

for p. = / step l until n do

for

q.== I step 1 unti I m do

 

if

abs (af p, q.]) > у then

 

 

begin у : = abslafp, a])\i

.~p; k:~o end

etstg: = y

 

 

end

 

 

 

Рис. 41. Пример

АЛГОЛ-пропраммы

 

Следует особо подчеркнуть

перспективность

использования

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

199