
1(Алгебра, языки, программирование) а.Гладкий
п рое кипе Г) Ь на и. Образ цепочки при проектировании также называется се проекцией. Проекцию цепочки (о и языка /- на словарь 11 мы будем обозначать соответственно Прим и 11рц1.
Бели {(о} — язык, состоящий из одной цепочки и, то мы будем вместо 1{ш], {ш}1, {о}* и {(1}}+ писать соответственно ^.(0, СО/-, (О* II (О^
Пример. Если V =={0,1}, ^—яз|,!к, состоящий из всевозможных двоичных записей целых положительных чисел (т. е. цепочек, начинающихся символом 1), и ^— язык, состоящий из всевозможных двоичных записей нечетных положительных чисел (т. е. цепочек, начинающихся и оканчивающихся символом 1), то /- == \У*, Ь,= {1} и \У\, 1М= 1.1 = ^1-{1}, ^=Щ Л^ИГ1'”; ^==1: (о\/.=1Л, если (о начинается •единице'!"!; м\Ь == 0, если (о начинается нулем; /-|/й== ==/^ЩЛ}, если о” оканчивается единицей; ^/(о == 0 если (г оканчивается нулем; 5(1.1; 0, 1|^-|, Ц ==/-.
Пусть ^|, .... ^( - абстрактные символы и 61, ... . .. ,Я,, языки (точнее, символы, обозначающие языки). Выражение, согшилепнос из ^|, ..., ^;,, 51, ... .... /) I, г помощью такси объединения и умножения *), соответсгвенно знакон объединения, умножения и итерации, называется многочленом, соответственно регулярным выражением от ^|, ...,!;;; с коэффициентами 5), ..., 5р. Если интерпретировать .^1, ..., ^ как переменные, пробегающие какие-либо множества языков, то многочлен (регулярное выражение) становится функцией от этих переменных; значение чгон функции, получаемое при подстановке на место переменных ^], .... ^, конкретных языков /-|, .. . ,Ь^, .есть также некогорын язык; мы будем говорить, что этот язык представляется (или задается) данным многочленом (регулярным выражением) при ^^==^^, ... .. ., ^;( == ^у(. Например, язык, состоянии"! из всевозможных цепочек в словаре [а, Ь], содержащих вхождение фиксированной цепочки м, задается регулярным выражением Ф(^)= {а,&}*б{о,й}* при ^=={ю}.
Многочлен (регулярное выражение), не содержащий (не содержащее) неременных, называется з а м к н у-
*) Знаком умножении можни считать пробел между буквами,
25
ГРАММАТИКИ
“ 1.21
тым; замкнутый многочлен (регулярное выражение) представляет единственный язык.
Два многочлена (регулярных выражения) от переменных ^1, ..., |д тождественны (или тождественно равны), если они отвечают одной и той же функции, т. е. при любой подстановке языков вместо переменных представляют один и тот же язык.
В силу упомянутого выше дистрибутивного закона любой многочлен от ^, .... ^;, тождественно равен не-.-?
которому многочлену вида \^]а.ц ... а/г „ где а/,, ...
1=1
.,., а/г— неременные или коэффициенты.
§ 1.2. Грамматики
В самом широком смысле формальными грамматиками, или просто грамматиками, называют любые “автоматические устройства” (т. с. исчисления или алгоритмы), позволяющие “задавать” языки. При этом “задание” может осуществляться по-разному: оно означает либо возможность для каждой цепочки данного языка подобрать такой режим работы устройства, чтобы к концу работы получить (“породить”) эту цепочку (причем, разумеется, чн одна цепочка, не принадлежащая языку, не должна “порождаться”), либо возможность “перечислить” язык, т. е. организовать работу устройства так, чтобы оно выдавало цепочки языка одну за другой и могло бы выдать любую из них, работая достаточно долго, либо, наконец, возможность для произвольной цепочки (в соответствующем словаре) получить от устройства ответ на вопрос, принадлежит ли эта цепочка языку. Из трех указанных подходов мы выберем первый. Как станет нам ясно впоследствии (а читателю, достаточно хорошо знающему теорию алгоритмов, должно быть ясно уже сейчас), это не сужает класса описываемых языков—любой язык, допускающий задание первым способом, допускает также задание вторым или третьим. В то же время именно такой подход лучше всего моделирует ситуацию, имеющую место при пользовании языком (естественным или искусственным) *) --основная задача там состоит в порождении предложения. обладающего заданным смыслом. Правда, эта ситуация моделируется далеко не в полной мере — в модели происходит порождение не предложений с заданным смыслом, а любых правильных предложений (понятие смысла в этой модели вообще не присутствует в сколько-нибудь отчетливой форме). Тем не менее такая модель позволяет значительно приблизиться к пониманию того, как смысл преобразуется в текст, поскольку преобразования, с помощью которых в ней происходит процесс порождения правильного предложения, могут рассматриваться как прообраз — хотя и достаточно грубый — тех преобразований, с помощью которых осуществляется переход от смысла к тексту.
Итак, мы останавливаемся на понимании грамматики , как “устройства для порождения цепочек” и впредь бу- I дом говорц-п^.и-.&но.рождающих грамматиках”. Й6 по"-""-" рождение цепочек может"быть организовано"'различны-мп гногобамп. И ч.югносгц, возможны такие способы, при которых псе возникающие в процессе порождения промежуточные объекты будут тоже цепочками, и такие, при которых эти объекты могут иметь иную природу. Нас здесь будут интересовать исключительно способы первого тина **); таких способов тоже, как легко понять, может быть много, и нам придется выбрать ка-кон-го один (или в крайнем случае несколько). Мы выберем способ, предложенный Н. Хомским (впервые в [С1ю1пя1<у 1956, 1957]) и не уступающий по силе, как мы упнднм в § 1.4, никакому другому возможному эффективному способу*1""); в то же время он обладает тем
*) В этой и предыдущей фразах слово “язык” употреблено в разных значениях (см. пвсдение, стр. 14—15).
**) Для более точного моделирования перехода от смысла к тексту более адекватны как рад т.чкпе грамматики. к которых про межуточные объекты имеют более сложную природу, например ян ляются деревьями (см. [Гладкий—Мельчук 1971]). Однако теория таких грамматик еще недостаточно разработана; во всяком случае, — это для нас здесь наиболее важно — теория “древесных” грам матик не может не опираться существенным образом на теорик;
проще устроенных “ценочечныч” грамматик, которые и являются предметом настоящей книги.
***) Разумеется, это утверждение не носит характера математической теоремы. Его статус будет разъяснен в конце § 1.4.
27
ГРАММАТИКИ
” 1.г1
преимуществом, что по крайней мере для наиболее важных частных случаев позволяет сопоставлять порождаемым предложениям весьма естественные описания их структуры (см. ниже, § 3.1). Еще одно весьма важное достоинство данного способа состоит в том, что он хорошо вписывается в некоторую более общую систему понятий математической логики, теории алгоритмов и теории автоматов *}_„__.„„,.._„_.-.„„.„..,.„...„. „,,„,„-.__^ -У Итак, мы"пёрёходим к определению порождающих ^ грамматик в смысле Н. ХомскогО;гясгтех~ттерг-тюкя-"й<Г^ будут введены" в' ~ра сем отретгиёдругие типы грамматик,—а по большей части и после этого (когда невозможно недоразумение) — мы будем в качестве синонима для выражения “порождающая грамматика” употреблять просто слово “гра^^атййЯА-”——"-“""* -"•—.”—,,,.„„<...- "--у
"(П о р о ж да ю"цГ'а"яТ грамматика — это упоря- ^ доченная четверка Г = (V, V, I, К}, где: 1) V и 2) УУ—непересекающиеся непустые конечные множества;
3) /—некоторый элемент №"; 4) К— конечное множество цепочек вида (р —- ^, где (р и гр — различные цепочки в словаре '/ Ц V и —” —символ, не входящий в V и Ц7. Множества V и \У называются соответственно основным и вспомогательным словарями (алфавитами) грамматики Г, а их элементы—соответственно основными и вспомогательными символам и Г **); / называется и а ч а л ь и ы м с и м-в о л о м Г, К -- с х е м о и Г и элементы /? — правил а-м и Г. Цепочки (р и ^ называются соответственно левой и правой частями правила (р—”ф. Объединение \/\]^ мы будем иногда называть полным словарем грамматики Г.
Пусть г = (р —> •^—правило грамматики Г и 1|*Ф*12—вхождение гр в цепочку со = ^1Ср|г в словаре V [] УУ. В этом случае мы будем говорить, что цепочка
*) Заметим, что эта система понятии возникла еще до исследований Н. Хомского, и то обстоятельство, что его концепция сразу нашла готовую формальную базу, очень сильно способствовало успешному развитию этой концепции. Таким образом, и здесь теория опередила потребности приложений, как бывает чаще всего, вопреки распространенному среди “широкой публики” ходячему мнению.
**) Вместо слов “основной” и “вспомогательный” нередко употребляются соответственно слова терминальный и нетерминальный.
ОСНОВНЫЕ ПОНЯТИЯ
ц == ^ф^ " о л У ч а етс л из ш применением правила г к вхождению ^1'кр”^ цепочки гр. Если цепочка х\ получается из цепочки ю применением какого-либо правила Г, будем говорить, что >] непосредственно выводима из и) и Г, и писать (и ^= ]Л] или просто (в (= г].
Последовательность цепочек О == (й)в, й>|, .. ., о)п) (/г ^ 1) называется выводом (о„ из (Оц в грамматике Г, если для каждого I, 1 ^ г ^ п, имеет место й),-11= со;. Число п называется длиной вывода О. Если существует вывод т] из со в Г, то мы будем говорить, что т) выводима из со в Г, и писать юг-^т) или
со I— п.
Вывод (о)ц, о)|, ..., йп) называется полным, если он == / и о)„ — цепочка в словаре V.
Если О == (мо, (1)|, .... (Он) — вывод в грамматике Г и для некоторого ('== I, ..., ч цепочка юг получается из (о,_1 применением правила гр -*• ^ к вхождению ^, •”(()•”(), цепочки 1р в (1),-1, то мы будем говорить, что это правило применяется на 1-м шаге вывода О к вхождению й;''-^*!)! и что данное вхождение (рва заменяется на /-м шаге вывода О. Размечен-и ы м в ы в о д о м. соответствующим выводу О, мы будем называй, последовательность^, ш\, ..., (о^_,, соЛ где й^ (/==(), ..., п— 1) — вхождение, заменяемое на 1-м шаге вывода О. Одному выводу может, вообще говоря, соответствовать много размеченных выводов (см. упражнение 1.9).
Множество цепочек в основном словаре грамматики Г, выводимых ш ее начального символа (иначе—множество последних цепочек всевозможных полных выводов в Г), называется языком, порождаемым грамма т и к о и Г, и обозначается ^.(Г).
Из сформулированных определении видно, что существенным свойством процесса работы порождающей грамматики является его недстсрмннироваппость: если оборвать вывод па каком-либо шаге, то продолжение, вообще говоря, не восстанавливается однозначно по оставшейся части и может быть выполнено разными способами. 7'аким образом, грамматика—это исчисление, т. е. разрешение производить некоторые операции [Марков 1954, стр. 203] — в данном случае подстановки
• цепочки одних подцепочек вместо других (а не алгоритм, т. е. не предписание производить какие-то операции).
Пример. Пусть Г= ({а, Ь, с], [А, В, С, О}, Л. [А-^ВСА, ВСВ-^0, ВС-^Ьс, ОС-* а, сА-^с, аА->а}}. Пример полного вывода в Г: (Л, ВСА, ВСВСА, ВСВСВСА, ВСОСА, ВСОСВСА, ВСОСЬсА, ВСаЬсА, ЬсаЬсА, ЬсаЬс}. Соответствующий оазмеченный вывод (в данном случае единственный): (-”Л -х-, ВС * А ”, ВСВС * А *, ВС -:. ВСВ * СА, ВСОС * А *, ВСОС * ВС -х- Л, ВС*ОС*ЬсА, “ВС^аЬсА, ЬсаЬ*сА*, ЬсаЬс). Легко видеть, что ^-(Г) == {а, ос}*.
Грамматика Г={У, И7, /, /?) называется грамматикой составляющих, или НС-грамматикой*), если каждое ее правило имеет вид Щ^-* 11652, где 11, 12 — произвольные цепочки в словаре V О ^У, А е. ^ и б—произвольная непустая цепочка в V [] Ц7.
Правила вида ^Л^д —” ^б^, где у, 52, Л и И имеют указанный только что смысл, иногда называют НС-пра-в и лам и; цепочка ^, цепочка 1г и пара цепочек (^1, §2) называются соответственно левым контекстом, правым контекстом и контекстом НС-правила ^Л^—^^б^г- При применении НС-правила фактически заменяется только одно вхождение символа Л, но возможность замены зависит от наличия нужного контекста. Если ^1 == и == А, то правило называется бесконтекстным (или контекстно-свободным), сокращенно Б-правнлом (или КС-правилом).
НС-грамматика называется бесконтекстной (или контекстно-свободной), сокращенно Б-гр а м м а т и ко и (или КС-грамматикой), если все ее правила бесконтекстные.
(Б-) грамматика называется автоматной, сокращенно А-гр а м м а т и к о и **), если каждое ее правило
•) Вместо “грамматика составляющих” часто говорят “грамматика непосредственно (или непосредственных) составляющих”; отсюда и сокращение “НС-гоамматика”. Мы опускаем слово “непосредственно”, так как никаких других составляющих не бывает (ср. {Гладкий—Мельчук 1969], стр. 185), но сохраняем сокращение, став-•цм уже общеупотребительным.
*•) Иногда используется термин “грамматика с конечным числом “(стоянии”, по нашему мнению, неудачный (см. [Гладкий—Мельчук
имеег вид А -” аВ или Л-* а, где Л, 5—вспомогательные символы и а - основной символ.
Я'ыки, порождаемые ПС-, Б- и А-грамматпками, называются соотвстсгвсчио НС-, Б- и Л-языками.
Классы произвольных грамматик, НС-, Б- и А-грам-матик мы будем иногда обозначать соответственно через V (так же мы часто обозначаем конкретные грамматики, однако эта омонимия всегда устраняется контекстом), НС, Б и А. Кроме того, для произвольного класса грамматик Т через Э' (У} будет обозначаться класс языков, порождаемых грамматиками класса °Г'. Примеры НС-, Б- и Л-грамматик будут приведены в § 1.3.
Введем еще некоторые понятия и отметим несколько полезных для дальнейшего простых фактов.
Правило <р-* ф грамматики Г называется заключительным, если ^'т^Л и никакой символ, входящий в \\-. не может входить в левую часть какого-либо правила Г.
Не р е с т р о и к о и вывода О == (о)о, (01, .. ., йп) в грамматике Г мы будем называть (вообще говоря. много тачную) операцию, сопоставляющую выводу О какой-либо другой вывод цепочки о)„ из й)о в Г, в котором применяются в точности те же правила, что и в О, но и другом порядке.
Лемма 1.1. Всякий вывод в произвольной грамматике можно перестроить так, чтобы ни одно заключительное правило не применялось раньше какого-либо незаключительного. Доказательство очевидно
Пусть (о)д, ю,,
>,_,, м„), где
"“-г "п)' 1^ ", == ё,-* <Р, * ^ (О ^ I “< “), — размеченный вывод в некоторой грамматике, ч чи'и> нраннло, применяемое на 1-м шаге (1==1, ...,“), есп. (|),-| — \\1, .1. Тогда для каждого I" == 1, .... /I — 1 имеет место равенство ^фгг); = == 1(_11|);-1Г1| 1; при этом выделенное вхождение ф; может находиться либо целиком левее выделенного вхождения гр,-1, либо целиком прайсе, либо пересекаться с ним. В этих случаях мы будем говорить соответственно, что 1+1-ч 1иаг дачного размеченного вывода проис-
1%9]. стр. 184) Лучше всего было бы, пожалуй, говорить “конечно-автоматная граммагнка”. поскольку Л-грпмматики теС|Ю связаны с к о и с ч и 1.1 м и автоматами (см. ниже, § 51), но мы "е будем этого делать, чтобы не увеличивать и без того слишком большое чш.ш терминологических вариантов
х-чдит левее 1-го, происходит правее 1-го, з а-ц е п л е н с г-м.
Назовем размеченный вывод упорядоченным, если никакой следующий шаг не происходит в нем левее предыдущего. Вывод, становящийся при подходящей разметке упорядоченным, назовем упорядочиваемым.
Лемма 1.2. Всякий вывод в произвольной гралма-ти^ке можно перестроить в упорядочиваемый.
Доказательство. Пусть О' ==(®о> • • •, ш' _„ м ), где ©^ = ^ * ф, * т^. (О < г < га), — неупорядоченный размеченный вывод в грамматике V и <|)== <„ (Л') — наименьшее из чисел :', для которых I -\- 1-й шаг в О' происходит левее 1-го. Очевидно, Ц ,|^?|Ё.ф.|. Пусть
I "1о"1 \ " | -<о 'о 1 -
/'„ — наименьшее число, обладающее тем свойством, что для каждого /', удовлетворяющего условию /о ^ / ^ <о,
выполняется
/—/0./0+1-
неравенство
&,.
(р.
.
Для каждого
•о
*0
1
г-о
имеем ^_,(р,_|п/_,
Преобразуем О' следующим образом: шаги до /о—1-го включительно оставим без изменения, затем в полученной таким образом цепочке ^. ф, ^/_|ф. _,11. _, применим к выделенному вхождению ф, правило, применявшееся в /У на 1'о+1-м шаге, затем будем производичь все замены, как на шагах О' от /о-го до (ц-го включительно,— после чего, очевидно, нолучигся цепочка ^(Ф,^, — и. Ни конец, преобразуем эту ценоч1\у в и”п, как в О'. Ясно, что такое преобразование дает новый размеченный вывод О" в Г, и если он не упорядочен, то 1о(0") >1'о(0'). Повторяя это преобразование нужное число раз, получим упорядоченный размеченный вывод.
Два вывода в грамматике Г назовем равносильным и, если их первые и последние цепочки соответственно совпадают.
Вывод, в котором никакая цепочка не встречается более одного раза, назовем бесповторным.
Лемма 1.3. Для произвольного вывода в любой грамматике существует равносильный ему бесповторный вмвоб, который можно получить из исходного выбрасыванием некоторых цепочек. Доказательство очевидно.
Грамматики Г и Г' называются эквивалентны-м ,'., если ^Г) = 1{\"}.