Файл: Алферова З.В. Теория алгоритмов учеб. пособие.pdf

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

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

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

Добавлен: 25.06.2024

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

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

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

Р — правила грамматики

или конечное множество цепочек

ви­

да ф—>-ф, где ф, г|з — слова

в словаре

V, и цепочка ф содержит

по

крайней мере один символ из словаря

VH. Конечное, двуместное

от­

ношение

—*• интерпретируется как «заменить ф на т|э», или «поста­

вить г|з вместо ф». Это отношение'ТЬбладает

свойствами асимметрич­

ности и

иррефлексивности. Цепочки вида

ф — н а з ы в а ю т с я пра­

вилами подстановки, или просто правилами грамматики. А множе­ ство Р — схемой грамматики.

Если задана грамматика

G =

(VT ,

VH, Р, S),

то будем говорить:

1. Цепочка

«а получается

(непосредственно)

из

цепочки о/ при­

менением правила ф—мр, если ю = |1ф|г, со' = Ъ^Ъ,

и

{ф—м|з}еР.

2. Последовательность цепочек

ф =

фо, Фь фг, • • •, Фп = "ф ( « ^ 1 )

есть

ф — вывод

цепочки

г|э,

если

для

каждого

i фг+i следует из фг-,

где

O ^ i ^ n .

Наличие

ф вывода

цепочки я|;

будем

обозначать

Ф =

> г|).'

 

 

 

 

 

 

 

 

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

3.Цепочка if> выводима из ф, если она получается из ф примене­ нием некоторых правил грамматики G.

4.Вывод цепочки г); считается законченным, если не существует

цепочки, которая следует из. г|з.

5. Цепочка, состоящая только из терминальных символов, на­ зывается терминальной цепочкой (каждая терминальная цепочка

есть цепочка в словаре

VT, и ни к одному из символов FT

не при­

менимо ни одно из правил грамматики

G).

 

 

 

 

 

Множество

цепочек,

выводимых в

грамматике G,

называется

*. языком,

порожденным

этой

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

обозначается

L(G).

Язык L(G)

называется терминальным, если L — множество тер­

минальных цепочек грамматики G.

 

 

 

 

 

 

Условимся при написании конкретных грамматик, если это не

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

а,

Ь, ...

обозначать элементы терминального

словаря

VT ,

элементы

нетер­

минального словаря VH

— прописными латинскими буквами А,

В, ...

а элементы общего словаря

V — строчными

греческими

буквами

а, р, ...

Предложения,

составленные

из этих символов, будем обо­

значать

последними буквами

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

алфавитов,

т. е.

х, у, ... — предложения, составленные

из элементов

терминально­

го словаря, X,

Y, ... — предложения из элементов

нетерминально­

го словаря, со, ф, г|), ... — предложения из элементов

общего сло­

варя.

 

 

 

 

 

 

 

 

 

 

Далее, везде, если к обозначению какого-либо множества добав­ лена сверху звездочка, например вместо V написано V*, это озна­

чает, что имеется в виду множество

всех

цепочек, которые могут

быть получены из символов множества V.

 

Рассмотрим введенные понятия на примере.

Пусть задана грамматика G =

(VT,

VB,

Р, S), где

V^{a,

 

b);

 

VH {А,

В,

С};

 

96


P =

{C-+ab,

C-+aCb}.

Пусть

 

 

со =

aCb, о/ =

aaCbb.

Цепочка со' непосредственно выводится из цепочки со в результате

применения одного

правила.

 

 

 

 

ср — вывод: aCb,

aaCbb, aaaCbbb, aaaabbbb. Последняя

цепочка

является терминальной. Длина вывода равняется трем.

 

 

Из приведенного примера видно, что порождающая грамматика

не является

алгоритмом.

 

 

 

 

 

Правила

подстановки

грамматики — это не последовательность

предписаний, а совокупность разрешений. Это означает:

 

 

1. Правило вида ср—>-гр понимается в грамматике как «ср мож­

но заменить на гр» (а можно и не заменять), тогда как в

алгоритме

оно означало бы «ср следует заменить на гр» (нельзя

не

заменить).

2. Порядок применения правил в грамматике произволен, тогда

как в алгоритме был бы

задан жесткий порядок

применения от­

дельных инструкций.

 

 

 

 

 

Две грамматики—Gi и G2 — называются слабо эквивалентны­

ми, если они порождают

один и тот же язык, Ьог

=

L G

2 ;

или две

грамматики

называются

слабо эквивалентными,

если

совпадает

множество порождаемых ими фраз.

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

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

В теории Хомского выделяются и изучаются четыре типа язы­

ков,

порождаемых соответственно

четырьмя

типами

грамматик.

Эти

грамматики выделяются путем

наложения

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

усиливающихся ограничений на систему правил Р.

 

 

 

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

грамматикой

типа 0

в

тех случаях,

когда не накладывается никаких

ограничений на

правила ср—>-гр,

где ср и гр могут быть любыми цепочками из словаря V.

 

 

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

грамматикой

типа 1, если

в системе Р

правила ср—>-г|) удовлетворяют

условию

ср =

cpHcp2, гр = cpicocp2,

где А — нетерминальный символ, а ср, гр, со — цепочка из словаря V.

Таким образом, в грамматиках типа / отдельный

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

символ А переходит в непустую цепочку со в контексте cpt и ср2

(cpi и

ф2 могут быть пустыми цепочками). Грамматики

типа

/ называют

контекстными грамматиками.

 

 

 

 

 

 

 

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

грамматикой

типа 2 — бесконтекстной,

если в системе правил Р допустимы,

лишь

правила

вида

А—ко,

где

А — нетерминальный символ,

а

со — непустая

цепочка

из V.

7-1861 ...

97


Согласно правилам

этой

грамматики,

замена Л

на со происходит

независимо от контекста.

 

 

 

 

 

Грамматика

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

типа 3,

когда допустимы

лишь правила вида А —*-со ,где со =

аВ,

либо со =

а.

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

кое разделение будет рассмотрено далее.

 

Упражнения:

 

 

 

 

 

 

 

1. Пусть

G=

(VT, VB,

Р,

S)—порождающая

грамматика, где

Vr = {a, d,

е},

V*=

{В,

С,

S},

Р = {S-^aB,

B—*Cd, С*е}.

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

2.

Пусть

G = (Vr,

Vb,

Р,

S),

где

VT = {a, d, е},

Vn=

{В,

С, S},

Р = { 5 — > а В , В>Cd,

В>dC,

С—>

е) . Определить

терминаль­

ные цепочки, порождаемые

данной

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

и длину их вы­

вода.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Для грамматики G известны ее общий

словарь V = {А,

В, С,

D, Е} и схема правил Р=

{E—+DCD,

Е—+А,

D—+BC,D—+C,

АУВВ}.

 

Определить

состав

терминального и нетерминального

словарей,

цель

грамматики,

построить

язык L (G) и определить

длину выводов для каждой терминальной цепочки.

 

 

 

 

4. Определить, являются ли порождающими следующие грам­

матики:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a)

G =

{{А,

В},

{S,

D),

 

P = {S-*AB,

S->

 

 

 

 

 

 

 

 

 

 

-+ASD,

 

SD-+B,

 

B^AS),

S);

 

 

 

 

b)

G =

[{A,

B],

{S},

P={S-+ASBAS,

S-+AB,

AS-+B},

 

S);

c)

G=

{{В,

C),

[A,

S\,

P={S->A,

 

A-+B,

A->CA},

 

S);

 

d)

G =

[[B,

C),

{A,

S],

P

=

{S->A,

A-+B, A-+CAC),

 

S ) .

5.

Дана

грамматика

G =

(VT,

Vn, P,

S), где VT

= {A, B},

VH =

= {S,

D},

 

P={S-+AB,

 

 

 

S—+ADSB,

D —>-BSB,

DS

—>-B,

D—>-д

} . Показать, что цепочка

АВАВВАВ

принадлежит

множе­

ству

L

(G).

 

 

 

 

 

G =

({а,

Ь, с,

d, е),

{А, В, С,

D,

Е}, Р —

6.

Дана

грамматика

 

{A—^ed,

В^АЬ,

С-^Вс,

 

C—+dD,

D—>-аЕ,

Е—+Ьс},

С).

Определить, принадлежит ли множеству

L(G)

цепочка

eadabcbc.

7.

Дано

V = {С, S,

а,

Ь) и VT = {а, Ь}. Определить, является ли

грамматикой четверка (Vr,

VH,

Р,

S)

для следующих множеств пра­

вил грамматики:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a)

P =

[C-*b,

 

S-+aCb}-

 

 

 

 

 

 

 

 

 

 

b)

Р=[Ь-+а,

 

 

C-+Sb\;

 

 

 

 

 

 

 

 

 

 

c)

р =

 

{с-^ьсас,

 

 

 

 

 

 

 

 

 

 

 

 

d)

P =

{C-+bC,

 

CS-*aS,

 

S-^a}.

 

 

 

 

8.

Пусть

для

каждого

n^lG

 

= ({a},

{S—KS"},

 

5) .

Пока­

зать, что каково бы ни было п, L(Gn)

=

0.

 

 

 

 

 

98


9. Задан терминальный словарь грамматики. Определить грам­

матики, порождающие следующие языки:

 

 

 

a)

язык апЬпап

для

 

1;

 

 

 

 

 

b)

языка™2

 

д л я п ^ 1 ;

 

 

 

 

 

c) язык

апЬп2

для

n r ^ l .

 

 

 

 

 

 

2.2. Грамматики непосредственно составляющих

 

Неукорачивающие

грамматики

— грамматики,

у которых

для

любого правила с р — с п р а в е д л и в о

соотношение

|ср|=£^ ф| . Пра­

вила

такого вида

также

называются

неукорачивающими.

 

Рассмотрим

пример

неукорачивающей

грамматики. Пусть

за­

дана

G =

( У Т

,

У Н ,

Р,

S),

где

 

 

 

 

 

 

 

VT=[a,

 

b),

VH=[S),

Р = { / ? 1 ,

Ft, F3,

F4 }

 

 

 

 

 

 

: S

aa,

F3:

S ->

aSa,

 

 

 

 

 

 

 

F2:S^bb,

 

Ft: S->656.

 

 

Дано слово 656. В результате подстановки любого из четырех пра­

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

меньше длины

исходного слова: бааб, 6666, baSab,

bbSbb.

 

Грамматики

непосредственно

составляющих

— грамматики

с правилами вида: срЛг|)—^фсо'ф или А—>-со, где А — нетерминаль­ ный символ; со — произвольная непустая цепочка.

Таким образом, в грамматиках непосредственно составляющих на каждом шаге вывода разрешается заменять только один символ. Очевидно, что НС-грамматика является неукорачивающей грам­ матикой. Рассмотренный пример — НС-грамматика.

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

 

Поясним

это на примере. Допустим,

что в неукорачивающей

грамматике

имеет место

правило вида АВ—>ВА,

где А и В — не­

терминальные символы.

 

 

 

 

 

 

Такое правило может быть заменено четырьмя правилами грам­

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

составляющих:

 

 

 

 

 

 

АВ-*\В;

 

 

 

 

 

 

\В-+\2\

 

 

 

 

 

 

12

-+В2;

 

 

 

 

 

 

В2-+ВА,

 

 

 

где

1, 2 новые нетерминальные

символы,

которые не встречаются

ни

в каких

старых правилах.

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

этих

правил равносильно применению правила АВ—*-ВА,

причем такая

замена не может привести к появлению

«лишних»

выводов,

по­

скольку символы 1, 2 — новые.

 

 

 

 

7*

99