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

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

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

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

Добавлен: 25.06.2024

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

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

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

Языки, порождаемые НС-грамматиками, называются НС-язы­

ками.

 

 

 

 

 

 

 

 

 

 

Среди

НС-грамматик

различают

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

и правокон-

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

 

 

 

 

 

Левоконтекстной

НС-грамматикой

будем называть

грамматику

с правилами

вида:

 

 

 

 

 

 

 

 

 

 

 

 

срЛ > <рш,

 

 

 

а правоконтекстной

— грамматику с правилами вида:

 

 

 

 

 

 

 

 

Л<р —»- шср,

 

 

 

где

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

 

 

 

Ф и

ш •— цепочки в алфавите V = VT U VH.

 

 

Язык,

порождаемый

левоконтекстной

грамматикой G, будем

называть

левоконтекстным языком

L(G);

язык, порождаемый пра­

воконтекстной грамматикой G',— правоконтекстным языком и обо­

значать L

(G').

 

 

 

 

 

 

 

Относительно этих языков доказаны следующие теоремы:

Теорема

(8).

Класс

левоконтекстных

языков

не

совпадает

с классом контекстно-свободных языков.

 

 

 

Теорема

(9).

Класс право контекстных

языков

не

совпадает

с классом контекстно-свободных языков.

 

 

 

Грамматика непосредственно-составляющих называется НС-грам­

матикой, отмеченной справа

(НС — ОП-грамматикой),

если

каж­

дое правило имеет вид:

 

 

 

 

фЛф —»<pa><J> — cpu/aijj,

 

 

где aesV.

 

 

 

 

НС-грамматика называется НС-грамматикой, отмеченной

слева

(НС — ОЛ-грамматика), если каждое ее правило имеет вид:

 

 

срЛф —»• cpuxji = <fаш'ф, а £Е V.

 

 

Имеют место теоремы:

 

 

 

Теорема

(10). Для любой

НС — ОП-грамматики

можно

по­

строить слабо эквивалентную

КС-грамматику.

 

 

Теорема

(11). Для любой НС — ОЛ-грамматики можно

пост­

роить слабо эквивалентную КС-грамматику.

 

 

Для изучения свойств НС-грамматик рассмотрим

маленький

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

Fi

: П —v СТ;

F2:C—>ПС;

F t

: Г — • ГС;

: П — v маленький, шаловливый, красивый;

F 5

: С —>- мяч, мальчик, девочка;

F e

: Г —>- потерял, ударил, бросил.

100


Правила /ч — F 6 — это в действительности группа правил, посколь­

ку

они указывают несколько возможностей для каждого

символа

п,

С, Г.

 

 

В рассматриваемой грамматике терминальными символами бу­

дут

слова, перечисленные в правилах: VT = {маленький,

шаловли­

вый, красивый, мяч, мальчик, девочка, потерял, ударил, бросил}.

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

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

категории

(Г — группа глагола,

С — группа существительного,

Г — глагол,

С — существительное,

П • прилагательное,

П — предложение):

i / H = { П , С , Г , Г, С , П } .

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

\ / /о ч

тпоблибый мальчик

уронил нрасиоыи

мяч

Рис. 12

 

В этой простой грамматике

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

цепочки имеют

одну и ту же синтаксическую структуру фраз, что может быть вы­

ражено с помощью

структурного дерева —- маркера структуры сос­

тавляющих (С-маркера).

Структурное дерево — это

помеченный

граф

(помеченные ребра

и узлы), где узлам

соответствуют грамма­

тические типы или

синтаксические единицы,

а ребра

различаются

своим

порядковым

номером. Цепь дерева — последовательность

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

Каждый С-маркер содержит в виде меток при конечных узлах перечень слов, из которых составлено данное предложение (рис. 12).

В рассматриваемом предложении составляющими являются — «мяч», «красивый мяч», «уронил красивый мяч», а «уронил краси­

вый» — не является

составляющей.

Каждая

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

возво­

дится к некоторому

узлу дерева.

Если этот

узел, допустим,

поме­

чен С, то говорят, что составляющая принадлежит к типу С.

 

101


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

Например, С и Г — непосредственные составляющие предложе­ ния. Есть непосредственные составляющие для С и Г — это соответ­ ственно П и С, и Г и С и т. д. Очевидно, грамматика не может счи­

таться

удовлетворительной, если не дает

порождаемым предло­

жениям

структурного описания — хотя

бы

в виде разложения на

непосредственные составляющие.

 

 

Таким образом, грамматика должна

обеспечивать С-маркером

каждое из бесконечного числа предложений.

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

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

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

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

Элемент А называется леворекурсивным, если подчиненное ему дерево содержит А только в самой левой цепи. (Дерево, подчинен­ ное А , — это дерево, которое может быть выведено из А . )

102

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

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

Грамматика

G = (1/т , Vu,

S, Р) называется

грамматикой

с са­

мовставлением,

если для

некоторого

A*=VU

существует

вывод

А = >фЛг|), где ф и г|) — не пустые слова

в

V.

 

 

Грамматика

G называется однозначной,

если

для каждого сло­

ва x e L G все его выводы имеют одно и то же дерево.

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

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

Грамматика

G называется

неоднозначной,

если имеется

цепочка x^LG,

которая может

быть выведена двумя

существенно

различными способами. При этом под существенно различными вы­

водами понимается

следующее:

 

 

 

 

 

 

 

 

 

 

 

 

Грамматике

G— т ,

VB, S, Р)

с правилами

вида

ф1—

 

ф

г — •

• •, Фь—*~tyk

поставим в соответствие

грамматику

G' =

=

(V'T,

V'B,

S',

Р',

у

которой

У'н =

VH,

S' =

S,

V'r = VT U {(q>i,

(фг, ... , (фь)}, т. е. для

каждого правила фг—•"•ф* системы

Р

к терми­

нальному словарю

добавляется

скобка

(фг(t =

I , 2,

 

k).

 

 

 

 

Система

Р'

получается

из системы

Р

заменой

каждого

правила

ВИДа

фг"

>-г|)г ПраВИЛОМ

фг

>- ( <рг *Фг) -

 

 

 

 

 

 

 

 

 

 

 

Очевидно, что каждому выводу цепочки х в LG

однозначно

соот­

ветствует вывод цепочки х' в LG' .

Эта

цепочка

х'

совпадает

с

х,

если в ней опустить все скобки. Скобки, таким образом,

сохраняют

«динамику»

вывода — их

расстановка

позволяет

восстановить

про­

цесс вывода.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цепочка х' называется структурным описанием цепочки х.

 

 

Пример.

Пусть

G =

({0,1},

S,

S,

Р);

Р=

{ S - + 0 ,

5 — » S I S } ,

тогда

G'=

({0,1(5)},

S, S, Р);

Р=

{S^(s0),

 

5 — • (sSIS)},

це­

почка

01010

языка

LG

может быть

выведена

различными

спосо­

бами:

1)S ~ * S 1 S ^ 0 1 S - > 0 1 S 1 S - » 0 1 0 1 S - * 0 1 0 1 0 ;

2)S - > S 1 S - » S 1 0 ^ S 1 S 1 0 - ^ 0 1 S 1 0 ~ * 0 1 0 1 0 .

ЮЗ


Им соответствуют различные структурные описания, полученные

в LG':

1) (s(sO) l ( s ( 5 0 ) 1 ( # ) ) ) ;

2)U U U O ) i u o ) ) i ( s O ) ) .

Выводы цепочки х в некотором языке LG называются существен­ но различными, если структурные описания х', соответствующие этим выводам, отличаются друг от друга.

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

Если задана конкретная грамматика G одного из типов и нуж­ но установить, является ли она неоднозначной, то алгоритмическая разрешимость такой задачи устанавливается следующей теоремой:

Теорема (12). Для языков типа 3 существует алгоритм, позво­ ляющий по заданной грамматике определить, является ли она од­

нозначной. Для остальных типов языков эта задача

алгоритмически

неразрешима.

 

 

 

Язык данного типа называется

существенно

неоднозначным,

если любая грамматика G этого типа, порождающая этот

язык,

неоднозначна, т. е. если в заданном

классе грамматик нельзя

найти

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

Следующие две теоремы относятся к вопросу о существовании

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

 

Теорема

13 (Хомского

и Миллера,

Шютценберже). Не существу­

ет существенно неоднозначных языков типов О, 2D*,

3; все эти языки

однозначно выводимы.

 

 

 

 

Теорема

14

(Парика).

Существуют существенно

неоднозначные

бесконтекстные

языки.

 

 

 

 

Для языков

типа

/

(контекстных)

этот вопрос

не решен.

 

Парик

доказал,

что

бесконтекстные языки L = {anbmap\n

= m

или п = Р} и Ь= {х\х = anbman'bm-Vх

= anbmanbm';

п, п\ т, т'~$а

^3=1} являются существенно неоднозначными. Второй из этих язы­

ков порождается грамматикой

G = ({a, b), {S, А, В, С, D}, S, Р),

где Р включает следующие правила:

S-+AB

S-+DC

А-^аАа

А-^аВа

 

в-*ьв

с-+ьсь

C-*bDb

D-ya

D^aD

2 D — подкласс языков типа 2, называемый «детерминированные бесконтекстные языки».

104


Следующая теорема рассматривает алгоритмическую разреши­ мость распознавания существенной неоднозначности:

Теорема 15 (Гладкого). Не существует алгоритма для решения задачи о том, является ли заданный язык типа существенно не­ однозначным. Однако в некоторых случаях этот вопрос может быть решен.

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

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

В соответствии с этим в общем случае можно рассматривать различные типы маркеров, содержащие ту или иную информацию.

Упражнения:

 

 

 

 

 

 

 

 

 

 

 

 

1. Три

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

G2 ,

G 3 заданы

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

правилами: Pi =

УХ, А У АХ}, Рг = УХ, А У Х А ) , Р3

=

= {А УХ, А

УХА Х},

где А

— цель грамматики.

 

 

 

 

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

G2 , G3 .

 

2. Пусть

G =

(Vi, VK, P,

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

грамматика,

где

Vr={a,b},

 

VH={A,S},

 

P={A—>ab,

 

A—^aSAb,

 

S^bAb,

SA —yb, Sу

А). Определить тип рекурсивности

правил

грамма­

тики и показать, что цепочка ababbabb

принадлежит

 

множест­

ву 1(G) .

 

 

 

L(Gj),

 

 

 

 

 

 

 

 

 

3. Построить

языки

где / = 1, 2, 3, если

схемы

правил

грамматик Gi, G2 и G3 имеют следующий вид:

 

 

 

 

 

Pt = {S-+AB,

 

S-+ASB);

 

 

 

 

 

 

 

P2={S^

АА,

S-+BB,

S -у ASA,

S -у

BSB};

 

 

 

P3={S^yAS,

S-yBS,

CABSC

^

CAB

 

ABC).

 

 

 

Для каждой грамматики определить VT, VB, длину выводов, тип

правил, вид грамматики.

 

 

 

 

 

 

 

 

 

 

4. Дана

грамматика

G =

({Л, В), {S},

Р, S),

где Р =

{5—>5Л,

5S—у ABA}.

Определить,

является ли

G-грамматика

граммати­

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

 

= пВПАп\п^\}

 

 

 

5. Пусть

VT =

{Л, В}. Показать, что V*

 

 

есть

НС-язык.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

105