Text
                    А. В. ГЛАДКИЙ
ФОРМАЛЬНЫЕ
ГРАММАТИКИ
И ЯЗЫКИ
ИЗДАТЕЛЬСТВО «НАУКА>
ГЛАВНАЯ РЕДАКЦИЯ
ФИЗИКО-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ
МОСКВА 1973


618 Г Б2 УДК 519-95 Формальные грамматики и языки. Гладкий А. В. Книга посвящена теории формальных грамматик и языков, являющейся важнейшей составной частью так называемой математической лингвистики. Эта теория вызвана к жизни потребностями лингвистики, но нашла свою почву в чистой математике и стала полноправной отраслью математической логики, тесно связанной с теорией алгоритмов и теорией автоматов. В книге рассматривается ряд важных проблем теории формальных грамматик — таких, как взаимоотношения между различными классами грамматик и классами задаваемых ими языков, связь между грамматиками и автоматами, оценки сложности вывода в грамматиках, алгоритмические проблемы для грамматик. Книга представляет большой интерес для специалистов как в области математической лингвистики, так н в смежных областях, например в теории алгоритмов и автоматов. Страниц 368. Иллюстраций 17. Алексей Всеволодович Гладкий ФОРМАЛЬНЫЕ ГРАММАТИКИ И ЯЗЫКИ М., 1973 г., 368 стр. с илл. Редактор В. В. Донченко Техн. редактор Е. Я. Земская Корректор Я. Б. Румянцева Сдано в набор 10/V1I 1972 г. Подписано к печати 8/П 1973 г. Бумага 84X108/,,,. тип. №2. Фнз. печ. л. 11,5. Условн. печ. л. 19,32. Уч.-изд. л. 20,20, Тираж 7000 экз. Т-00756. Цена книги 1 р. 51 к. Заказ № 273 Издательство «Наука» Главная редакция физико-математической литературы 117071, Москва, В-71, Ленинский проспект, 15 Ордена Трудового Красного Знамени Ленинградская типографифя № 2 имени Евгении Соколовой «Союзполнграфпрома» прн Государственном комитете Совета Министров СССР по делам издательств, полиграфии и книжной торговли г. Ленинград, Л-52, Измайловский проспект, 29 , 0223-1714 п 042 (02)-73 *'''*
ОГЛАВЛЕНИЕ Предисловие' 5 Введение •.'.';: 9 Глава 1. Основные понятия . 17 § 1.0. Некоторые предварительные пояснения 17 § 1:1. Цепочки и языки 19 § 1:2. Грамматики 25 § 1:3. Примеры грамматик . . . . : 33 § 1.4. Машины Тьюринга 39 Упражнения 50 Глава 2. Сигнализирующие функции . 55 § 2.1. Сигнализирующие функции грамматик 55 § 2.'2. Сигнализирующие функции машин Тьюринга .... 62 § 2.3. Ускорение и сжатие выводов. Связь между сигнализирующими грамматик и машин 64 § 2.4. Существование сколь угодно сложных рекурсивных языков 71 Упражнения 75 Глава 3. Грамматики составляющих 79 § 3.1. Деревья выводов 79 § 3.2. Неукорачивающие грамматики и машины Тьюринга без растяжения : 84 § 3.3. Сложность вывода в неукорачивающих грамматиках и НС-грамматиках 89 § 3.4. Оценка временной сложности некоторых НС-языков . 93 § 3.5. НС-грамматики с односторонним контекстом .... 1Q5 Упражнения ...» IJ1- Глава 4. Бесконтекстные грамматики н машины с магазинной памятью .115 § 4.1. Некоторые вспомогательные утверждения 115 § 4.2. Распознавание пустоты и конечности Б-языка. Проекции ........ .121 § 4.3. Необходимые- условия бесконтекстности 126 § 4.4. Неоднозначность 134- § 4.5. Машины с магазинной памятью 137v Упражнения . . . . ; 152* 1*
4 ОГЛАВЛЕНИЕ Глава 5. Некоторые специальные классы бесконтекстных языков 157 § 5.1. Автоматные и обобщенные автоматные языки. Конечные автоматы 157 § 5.2. Операции над ОА-языками. Регулярные языки . . . 162 § 5.3. Линейные, металинейные и итерационно-линейные языки 168 § 5.4. Грамматики с ограниченной активной емкостью выводов. ОАЕВ-языки 174 Упражнения 179 Глава 6. Дополнительные сведения о бесконтекстных грамматиках. Другие способы задания бесконтекстных языков 185 § 6.1. Категориальные грамматики 185 § 6.2. Нормальная форма Б-грамматики 196 § 6.3. Доминационные грамматики 200 § 6.4. Системы уравнений в языках. Формальные степенные ряды 207 § 6.5. Каноническое представление Б-языка 213 Упражнения 218 Глава 7. Сложность вывода .в бесконтекстных грамматиках . 221 § 7.1. Глубина и разброс 221 § 7.2. Активная емкость 228 § 7.'3. Степень гнездования и степень самовставления . . 242 Упражнения 249 Глава 8. Неразрешимые алгоритмические проблемы .... 252 § 8.1. Предварительные замечания 252 § 8.2. Инвариантные свойства произвольных грамматик . . 256 § 8.3. Инвариантные свойства НС-грамматик 260 § 8.4. Некоторые проблемы, связанные с Б-грамматиками . 268 Упражнения 279 Приложение I. Системы составляющих и деревья синтаксического подчинения 282 § Ш. 1. Системы составляющих 282 § Ш. 2. Деревья подчинения 294 § Ш. 3. Связь между системами составляющих и деревьями подчинения 304 Упражнения 310 Приложение П. Замещаемость 314 § ПН. 1. Свободные полугруппы 315 § ПН. 2. Замещаемость и взаимозамещаемость. Конфигурации 318 § ПП.-З. Окрестности, классы и типы 324 Упражнения 340 Библиографические замечания 343 Литература 349 Предметный указатель . < 357 Указатель обозначений 367
ПРЕДИСЛОВИЕ Настоящая книга представляет собой руководство по теории формальных грамматик, предназначенное для тех, кто хочет познакомиться с ее современным состоянием достаточно основательно — в общеобразовательных целях или ради прикладных задач (например, связанных с языками программирования). Это первая книга такого рода на русском языке; монография [Gins- burg 1966]*), русский перевод которой вышел в 1970 г., посвящена исключительно бесконтекстным языкам**); другая недавно переведенная книга [Gross — Lentin 1967] значительно элементарнее и содержит лишь основные понятия теории формальных грамматик***). Книга адресована в первую очередь читателю-математику; во всяком случае, для ее чтения нужна- извест- *) Фамилия и год в квадратных скобках — ссылка на помещенный в конце книги список литературы. Если в списке указано несколько работ одного автора, имеющих один и тот же год издания, то добавляются буквы в круглых скобках, например [Chomsky 1959(6)]. **) Кроме того, в настоящей книге изложены некоторые разделы теории бесконтекстных языков, которых нет в [Ginsburg 1966]: оценки сложности вывода, категориальные и доминационные грамматики, металинейные и итерационно-линейные языкя; подробнее трактуются алгоритмические проблемы. С другой стороны, мы не рассматриваем преобразователей и ограниченных бесконтекстных языков, изучению которых уделено много внимания в книге С. Гинзбурга. Еще одно отличие нашей книги от названной — меньшая фор» мализованность изложения. **) Кроме названных двух, в мировой литературе имеется (насколько известно автору) еще только одна книга по формальным языкам [Hopcroft — Ullman 1969], также довольно сильно отличающаяся по содержанию от нашей.
6 ПРЕДИСЛОВИЕ ная привычка к математическому мышлению и изучению математической литературы. Что касается фактических знаний, то формально их почти не требуется: достаточно владеть основными понятиями теории множеств. Тем не менее весьма желательно предварительное знакомство хотя бы с главными идеями и концепциями теории алгоритмов, в частности с машинами Тьюринга, поскольку «алгоритмический дух» пронизывает всю теорию грамматик; не приобщившись к нему, невозможно составить представление о месте формальных грамматик в математике. При этом речь идет именно о направляющих идеях и общем духе: все относящиеся к алгоритмам технические определения — в терминах машин Тьюринга — в книге приводятся, и все необходимые факты доказываются *). Лингвистические интерпретации упоминаются в основном тексте книги лишь изредка и вскользь (больше внимания им уделено в приложениях I и II, но рассматриваемый там материал не относится, строго говоря, к грамматикам). Однако знакомство с лингвистическим' аспектом теории грамматик представляется автору полезным -для ее изучения даже в чисто математическом плане; для ознакомления с этим аспектом можно рекомендовать книгу [Гладкий — Мельчук 1969]. «Программистских» приложений мы не касаемся. В конце каждой главы помещены упражнения. Некоторые из них носят чисто тренировочный характер, но большинство предназначено служить дополнением к основному тексту; в упражнения вынесены многие факты, наличие которых в тексте не обязательно для логической последовательности изложения, а в отдельных случаях и такие утверждения, которые в дальнейшем ис- *) В частности, полностью замкнутым в себе сделано изложение неразрешимых алгоритмических проблем (гл. 8). Из теории алгоритмов в этом изложении используется только теорема Раиса, доказательство которой приводится там же.
ПРЕДИСЛОВИЕ 1 пользуются, если их доказательства просты и основаны на уже «отработанной» технике. Диапазон трудности упражнений весьма широк; к некоторым из наиболее трудных и наиболее важных даны краткие указания. Список литературы не претендует ни на какое подобие полноты; в него включены только те работы, которые упоминаются в книге, главным образом в библиографических замечаниях, также не претендующих на полный охват относящихся к делу источников. При написании книги автор использовал свой курс лекций, изданный в свое время ротапринтным способом [Гладкий 1966]; однако имеющийся там материал составляет менее половины объема книги и излагается в существенно переработанном виде. . : Автор рассматривает эту книгу как некоторый итог своих занятий математической лингвистикой — в особенности чтения лекций и ведения семинаров по этому предмету — в течение последних десяти лет, и ему хотелось бы упомянуть здесь о тех, кто в наибольшей степени помог ему в этих занятиях и непосредственно в работе над книгой. Прежде всего, интересы автора в теории грамматик сформировались в значительной степени под влиянием Б. А. Трахтенброта. Читатель, знакомый с его работами по теории сложности вычислений, легко поймет, в чем это влияние проявилось. Очень многим автор обязан слушателям своих лекций и участникам семинаров, их постоянному вниманию и критике; не имея возможности назвать их всех, он хотел бы особо упомянуть А. Я. Диковского, Л.' С. Модину, Н. Г. Щербакову, М. К. Валиева, Р. В. Фрейвалда. Для выработки взглядов на лингвистическую сторону дела первостепенное значение имела многолетняя совместная работа с И. А. Мельчуком. Важными были замечания читателей Упоминавшегося выше курса лекций, особенно М. В. Лом- ковской. В оформлении рукописи неоценимую помощь
8 ПРЕДИСЛОВИЕ оказали автору товарищи по работе, главным образом Т. И. Шедько, Л. С. Модина и Н. Г. Щербакова. Рукопись была прочитана рядом коллег, которые высказали немало ценных. соображений и помогли устранить многие погрешности. Особенно существенными были замечания и предложения М. И. Белецкого; важные указания автор получил от М. В. Ломков- ской, Л. С. Модиной, а по приложению I — также от И. А. Мельчука и Е. В. Падучевой и по приложению II — от И. И. Ревзина. Р. Д. Равич составила предметный указатель и много помогала автору на последней стадии оформления рукописи. Л. С. Модина составила указатель обозначений. Всем этим коллегам автор выражает искреннюю признательность.
ВВЕДЕНИЕ Когда говорят о «владении» или «умении пользоваться» тем или иным естественным языком, под этим понимают, с одной стороны, умение строить «правильные тексты» на этом языке, выражающие заданный смысл, с другой — умение определять смысл заданных «правильных текстов». При этом «правильные тексты» представляют собой последовательности .элементарных единиц из некоторого конечного набора (скажем, фонем), образованные по определенным правилам; в совокупности эти правила составляют то, что называют грамматикой языка. Сами по себе элементарные единицы никаким смыслам не соответствуют, смысл имеют только их сочетания; поэтому их внутреннее строение и материальная природа для грамматики несущественны. С аналогичной ситуацией приходится встречаться в математике: в различных ее разделах используются различные «языки», выражения которых также строятся по определенным правилам из элементарных единиц (элементарных символов); этим выражениям сопоставляются определенные смыслы, представляющие собой комбинации содержательных математических понятий. Здесь, правда, смыслы приписываются обычно и элементарным символам (например, в языке арифметики + означает сложение, 1 — единицу и т. п.), однако отсутствует какая-либо связь между «внутренним устройством» элементарного символа и природой сопоставляемого ему понятия, так что и в этом случае внутреннее строение элементарных символов несущественно и выбор их произволен*). Математические языки отличаются от естественных несравненно более простым строением, позволяющим достигать в их описании предельной четкости и однозначности; зато они столь же сильно уступают естественным языкам в широте сферы применимости. *) Если отвлечься от таких непринципиальных соображений, как Удобство воспроизведения и запоминания, следование традиции и т. ц.
10 ВВЕДЕНИЕ В последнее время возникла особая разновидность математических языков — так называемые языки программирования, предназначенные для работы с вычислительными машинами; они, как правило, имеют более универсальную применимость и соответственно более сложное строение, чем «традиционные» математические языки, но и в том и в другом отношении весьма далеки от естественных. Так или иначе, в самых разных областях (и не только в упомянутых выше) возникают ситуации, когда приходится иметь дело с множествами выражений, построенных по определенным «грамматическим правилам» из элементарных единиц и используемых для передачи некоторых «смыслов». Представляет интерес исследование этой ситуации в общем виде, т. е. описание о'бщих закономерностей строения самих грамматических правил; знание таких закономерностей позволило бы, в свою очередь, устанавливать о"бщие закономерности строения образуемых по этим правилам выражений («текстов»). Именно это и является предметом теории грамматик — особой математической дисциплины, возникшей в"50-х годах нынешнего столетия. В ней строятся и изучаются формальные грамматики — абстрактные объекты, призванные служить моделями конкретных систем грамматических правил. Формальным грамматикам отвечают множества «правильно построенных выражений» — формальные языки, служащие моделями совокупностей «правильных текстов». • Возникнув в результате усилий, направленных на выработку точных методов описания естественного языка, теория грамматик сразу же сомкнулась, с одной стороны, с теоретической лингвистикой, которая по существу всегда занималась построением абстрактных моделей*), но не имела средств для их точного описания (что немало препятствовало ее развитию), с другой — с теорией алгоритмов и теорией автоматов, где среди прочих проблем возникает вопрос о конструктивных спо- *) Такие элементарные понятия «школьной» грамматики, как подлежащее, сказуемое, падеж, род и т. п., представляют собой весьма абстрактные конструкции, относящиеся к фактам языка именно как модели. Осознать их абстрактный характер трудно только из»за их привычности.
ВВЕДЕНИЕ п собах задания множеств последовательностей символов, т. е. по существу тот самый вопрос, систематическое изучение которого составляет основное содержание теории грамматик; поэтому теория грамматик с самого начала смогла воспользоваться некоторыми понятиями и методами, выработанными в теории алгоритмов и теории автоматов. Эти понятия и методы получили в ней своеобразную интерпретацию и были развиты в новых направлениях, однако связь и переплетение теории грамматик с теорией алгоритмов и в особенности с теорией автоматов остаются чрезвычайно сильными; по существу, теория грамматик может считаться, как и теория автоматов, специфическим ответвлением теории алгоритмов, причем во многих местах обе ветви срастаются. Это относится как к методам, так и к постановкам задач и характеру результатов. Место теории грамматик внутри общей теории алгоритмов может быть — весьма грубо и приблизительно — охарактеризовано следующим образом: теория грамматик изучает в известных аспектах «внутреннее строение» рекурсивных множеств некоторых специальных классов, по преимуществу наиболее простых, и как раз настолько простых, что реально возникающие в математике конструкции не выводят за пределы этих классов, за исключением тех (как правило, диагональных) конструкций, которые специально предназначаются для доказательства существования сколь угодно сложных объектов. Говоря о прикладном значении теории грамматик, следует прежде всего отметить ее приложения к лингвистике, которой формальные грамматики доставляют весьма удобный метаязык. Кроме того, они нашли широкое применение для описания упоминавшихся выше языков программирования. Кажется достаточно правдоподобным, что сфера приложений формальных грамматик, в частности в гуманитарных исследованиях, будет со временем расширяться *). *) Имеются чрезвычайно интересные опыты использования конструкций, по существу представляющих собой формальные грамматики, в поэтике; см. «Морфологию сказки» В. Я. Проппа (1-е изд., Л., 1928; 2-е изд., «Наука», 1969), недавние работы А. К. Жолковского и Ю. К.. Щеглова.
12 ВВЕДЕНИЕ Основоположником теории формальных грамматик по праву считается американский лингвист Н. Хомский. Именно он указал на возможность использовать для описания естественных языков некоторые исчисления, рассматривавшиеся ранее в теории алгоритмов (но не игравшие там особенно существенной роли), придав им удобную для этого форму (с тех пор за такими исчислениями закрепилось данное Н. Хомским название «порождающих грамматик»); он же ввел в рассмотрение те специальные классы порождающих грамматик, которые представляют для лингвистических приложений наибольший интерес, и указал пути их использования в лингвистике (замечательно, что именно эти классы грамматик оказались связанными с упоминавшимися выше простыми классами рекурсивных множеств); наконец, он положил начало математическому исследованию формальных грамматик, введя некоторые важные для этого понятия (в частности, понятие машины с магазинной памятью) и доказав ряд основных фактов*). Сделаем еще несколько замечаний, относящихся уже не столько к самой теории грамматик, сколько к ее изложению в настоящей книге. 1) Теория грамматик является в настоящее время настолько разветвленной дисциплиной, что было бы очень трудно собрать в одной книге все ее наиболее интересные результаты или хотя бы отразить все направления исследования. Такую задачу автор перед собой не ставил, и вряд ли это было бы целесообразно. Имелась в виду совсем другая цель, а именно: изложить основы этой теории, ее «классические» понятия и факты, а из направлений более специальных и более новых лишь некоторые, но достаточно полно и подробно — так, чтобы читатель мог не только составить представление об общем характере теории грамматик, но и почувствовать используемые в ней методы, ее «кухню», а при наличии желания и прочих условий также и подготовиться к самостоятельной работе в этой области. Разумеется, при выборе специальных вопросов для изложения в книге автор в значительной мере руководствовался своими личными вкусами. *) Весьма существен также вклад Н. Хомского в собственно Лингвистику; это, однако, не относится к предмету настоящей книги.
ВВЕДЕНИЕ i& Среди сравнительно новых разделов теории грамматик, не получивших отражения в книге, особого упоминания заслуживает «теория управления выводом», представляющаяся весьма перспективной как с теоретической, так и с прикладной точки зрения. Эта область, заслуживает, впрочем, отдельной монографии. Упомянем также об окрестностных грамматиках (некоторые косвенные сведения о них имеются в настоящей книге в § 4.5 и упражнении 5.7), А-грамматиках (также вскользь затронутых в § 4.5), оценках сложности распознавания порождаемых грамматиками языков. 2) Весьма важное место отводится в книге сопоставлению грамматик с автоматами; это дает возможность представлять себе грамматики и классы грамматик не изолированно, а в некотором достаточно широком контексте и благодаря этому лучше понимать строение порождаемых грамматиками языкэв и работу самих грамматик. Поэтому в главах 1, 3, 4 и 5 рассматриваются различные классы автоматов (собственно — машин Тьюринга) и изучаются их связи с классами грамматик. Другой вопрос, значение которого в книге сознательно подчеркивается, — оценки сложности работы грамматик (т. е. вывода в грамматиках). Эти оценки являются важнейшим средством классификации грамматик и языков; именно они позволяют составить представление о том, как грамматика «работает». Поэтому вопрос об оценках сложности вывода в произвольных грамматиках рассматривается в начале книги — он составляет содержание второй главы; оценкам сложности вывода в грамматиках специальных типов посвящена основная часть третьей главы и вся седьмая. 3) Наряду с формальными грамматиками существуют и другие математические конструкции, специально предназначаемые для описания некоторых существенных аспектов естественного языка или для описания лингвистического исследования. Вместе с теорией грамматик теории этих конструкций составляют так называемую математическую лингвистику. Подробнее о значении этого термина см. [Гладкий — Мельчук 1969, стр. 15—22]. Для нас сейчас важно лишь то, что теория грамматик — это только часть математической лингвистики, хотя и занимающая в ней центральное место.
14 •ВВЕДЕНИЕ ■Настоящая книга посвящена только теории грамматик; ■однако автор счел целесообразным изложить в ней в виде приложений два специальных вопроса математической лингвистики, собственно к теории грамматик не относящихся: способы описания синтаксической структуры •предложения и «теорию замещаемости». Это вызвано, с одной стороны, тем, что некоторыми возникающими при изучении указанных вопросов понятиями (впрочем, весьма простыми) приходится пользоваться в теории грамматик, с другой — наличием тесной связи между лингвистическими интерпретациями теории грамматик и этих вопросов. Кроме того, систематического и достаточно строгого изложения способов описания синтаксической структуры предложения до сих пор вообще, кажется, не появлялось в доступной широкому читателю литературе *). По стилю оба приложения несколько отличаются от основного текста книги — в них уделено сравнительно -много внимания лингвистическим приложениям. Это обусловлено самим характером материала, состоящего в значительной степени из определений понятий, вызванных к жизни не столько математическими, сколько лингвистическими соображениями. Для чтения приложения I достаточно знакомства с § 1.1 (или даже с его началом). Знакомство с материалом § П1.1 необходимо для чтения глав 3—7; остальные два параграфа приложения I используются только в § 6.3 (не считая одного несущественного замечания в § 6.1). Для чтения приложения II достаточно знакомства с §§ 1.1 и 1.2; материал этого приложения, именно, его второго параграфа, использован только в §§ 5.2 и 8.4**). 4) В настоящей книге слово «язык» всюду означает «множество последовательностей элементарных симво- *) Очень хорошее «нематематическое» изложение имеется в статье [Падучева 1964]. **) Читателю, интересующемуся лингвистическими вопросами, можно рекомендовать прочесть оба приложения сразу после гл. 1. Прочие читатели могут ознакомиться с § Ш. 1 перед чтением гл. 3, с §§П1.2, П1.3 перед чтением гл. 6, а из приложения II посмотреть только определение взаимозамещаемости и лемму ПИ. 1, дойдя до теоремы 5.7, н определение конфигурации, дойдя до стр. 277.
ВВЕДЕНИЕ 15 лов», что в лингвистической интерпретации могло бы означать «множество текстов», в частном случае «мно-- жество правильных текстов». Такое словоупотребление является обычным в математической лингвистике (в последнее время оно проникло и в теорию автоматов), но расходится с принятым в собственно лингвистике (языковедении), где под языком понимают, как правило, не-, которую систему, «работающее устройство», включаю-, щее в себя грамматику *), что же касается совокупности текстов на данном языке, т. е. результата его работы, то эту совокупность лингвисты называют обычно «речью» (такое употребление терминов «язык» и «речь» восхо-, дит к Ф. де Соссюру). Однако использование слова «язык» в смысле «множество последовательностей сим-, волов» настолько уже-укоренилось в теории грамматик, и других разделах математической лингвистики, что от-; казаться от него не представляется возможным, тем бо- лее, что не видно, чем его заменить (во всяком случае,: лингвистический термин «речь» здесь не годится). 5) Формальные грамматики могут использоваться- для описания различных уровней естественного языка, например фонологического, морфологического или син-- таксического. В любом случае задача грамматики со-: стоит в том, чтобы описать, как строятся некоторые бо-. лее сложные объекты из более простых: для фонологического уровня — морфы**) из фонем, для морфологического — слова (точнее словоформы, см. ниже) из морф, для синтаксического — предложения из слов. Поскольку в нашей книге лингвистическое истолкование, привлекается только в иллюстративных целях, мы будем обращаться лишь к одной «естественно-языковой» интерпретации— синтаксической, во многих отношениях самой удобной. Таким образом, элементарные символы- во всех лингвистических примерах будут интерпретироваться как слова (а «правильные последовательности» *) Так же обычно понимается слово «язык» и в математике; например, «языком узкого исчисления предикатов» называют не множество правильно построенных формул этого исчисления, а совокупность правил образования таких формул (а иногда и правил преоб; разования). **) Морфами называются наименьшие осмысленные единицы языка (корни, суффиксы и т. п.).
16 ВВЕДЕНИЕ элементарных символов — как грамматически правильные предложения*)). Однако понятие «слово» весьма расплывчато и нуждается в уточнении. В лингвистике такое уточнение производится несколькими различными способами; это приводит к нескольким различным понятиям, из которых для наших целей следует отметить два: а) сегмент — единица внешней стороны языка; для письменной формы языка сегмент можно понимать просто как последовательность букв от пробела до пробела; б) словоформа — единица языка, рассматриваемая одновременно в плане выражения и в плане содержания; она может пониматься как сегмент, снабженный совокупностью значений, одно из которых — лексическое (это приблизительно то же самое, что понимается под «значением слова» в толковых словарях), а остальные — грамматические («мужской род», «дательный падеж» и т. п.)**). Например, в предложении Топи печь, пора пироги печь два вхождения сегмента печь, отвечающие разным словоформам; каждое из предложений Судно на море догнал и Судно весело бежит содержит вхождение сегмента судно, и опять-таки этим вхождениям отвечают разные словоформы (в первом случае различаются как лексические, так и грамматические значения, во втором — только грамматические). Во всех лингвистических замечаниях и примерах, содержащихся в основном тексте и в приложении I, «слова» могут трактоваться либо как сегменты, либо как словоформы, но всякий раз нужно четко представлять себе различие между этими концепциями. Иная интерпретация понадобится нам лишь в приложении II. *) Для естественных языков грамматическую правильность следует отличать от осмысленности. Так, предложение Ехала деревня мимо ямщика бессмысленно, но грамматически правильно. Для простых формализованных языков объемы понятий грамматической правильности и осмысленности обычно совпадают; например, всякое арифметическое выражение, правильным образом составленное из символов натуральных чисел, знаков сложения и умножения и скобок, имеет смысл, т. е. представляет некоторое натуральное число. **) В трактовке понятий сегмента и словоформы мы следуем А, Д, Зализняку [Зализняк 1967, стр. 19—20J.
ГЛАВА 1 ОСНОВНЫЕ ПОНЯТИЯ § 1.0. Некоторые предварительные пояснения Поясним некоторые термины и обозначения — общематематические и из теории графов, — употребляемые в литературе не всегда одинаковым образом. Отношение «быть подмножеством» обозначается символом s. Запись A cz В означает А ^ В& А Ф В. Пустое множество обозначается 0. Множество всевозможных упорядоченных пар элементов множества М обозначается М2. Множество всех подмножеств М обозначается 2м. Мощность множества М обозначается ц(М). Операции алгебры логики и кванторы обозначаются &, V, ~~), ^ => V, 3 соответственно. Если р — отношение эквивалентности на множестве М, то множество классов, на которые р разбивает М, называется ф актор-м но жеством множества М по отношению р и обозначается М/р. Мощность М/р называется индексом отношения р. Множество М с заданными на нем предикатами Л, ..., Рп обозначается {М; Я, Рп). Во всех остальных случаях упорядоченная система объектов ^i %h обозначается альтернативно через (ЗДЬ ... •■■Ли) или (51, ЯЛ>. Множество М с заданным на нем двуместным предикатом (бинарным отношением) R называется графом и обозначается, в соответствии с вышесказанным, (М; R). Вместо R(a,b) пишем aRb, Элементы множества Л|
18 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I называются узлами графа (М; /?)*). Пара узлов (а, Ь), для которой имеет место aRb, называется дугой графа; а есть начало этой дуги, Ь — ее конец. Вместо «пара (а, Ь) является дугой» говорим «из а в Ь идет дуга» или «а подчиняет Ь». Последовательность узлов графа а0, аь ..., ап (п ^ 0) называется путем (идущим) из ао в ап в этом графе, если для каждого t=l, ..., п из «г—1 в aj идет дуга; а0 есть начало пути, ап — его конец; число п есть длина пути. Если из а в Ь идет путь, говорим, что Ь зависит от а. (В частности, всякий узел зависит от себя.) Узлы графа, не являющиеся началами никаких дуг, называются висячими, узлы, не являющиеся ни началами, ни концами никаких дуг, — изолированными. Конечный граф называется деревом, если: а) в нем существует единственный узел (называемый корнем), который не является концом никакой дуги; б) всякий его узел, отличный от корня, является концом точно одной дуги; в) в нем нет замкнутых путей (т. е. путей, концы которых совпадают с началами) ненулевой длины. Легко видеть, что в каждый узел дерева идет в точности один путь из корня. Множество всех узлов дерева, подчиненных одному узлу а, называется кустом этого узла, а множество всех узлов, зависящих от а, — группой зависимости узла а. Число элементов куста называется его ш и- риной. Наибольшее значение ширины куста узла дерева называется шириной дерева. Дерево называется бинарным, если ширина куста каждого его невисячего узла равна двум. Высотой, рангом и степенью узла дерева называются соответственно длина пути из корня в данный узел, наибольшая длина пути из данного узла в висячий и наименьшая длина пути из данного узла в висячий. Наибольшее значение высоты узла дерева (совпадающее, очевидно, с наибольшим значением ранга и с ран- *) Этот термин обычен в лингвистических работах и часто встречается в работах по математической лингвистике. В теории графов более принят термин вершина; мы избегаем его потому, что во многих математико-лингвистически.х работах «вершиной дерева» называют корень (см. ниже).
§ 1.1] ЦЕПОЧКИ И ЯЗЫКИ 19 гом корня) называется высотой дерева. Наибольшее значение степени узла дерева называется сте- пенью дерева. Дерево, состоящее из одного лишь корня, называется единичным. Множество М с заданными на нем двумя бинарными отношениями Ri и R2 называется биграфом (и обозначается (М; Ru R2)). Нагруженным биграфом называется упорядоченная система {М; Ru R2, U, g), где {M; Ru R2) — биграф, U — конечное множество и g — отображение М в U. Упорядоченная система (М; R, <р), где М и R — множества и ф — отображение R в множество всевозможных упорядоченных пар элементов М, называется муль- тиграфом. Элементы М называются узлами муль- тиграфа, элементы R — его дугами. Если (а, Ь) = = ф(а), говорим, что дуга а идет из а в Ь; а есть начало а; Ь есть конец а. Путь в мультиграфе определяется так же, как в графе. (Граф можно было бы определить как мультиграф с разнозначным ф.) § 1.1. Цепочки и языки Мы будем рассматривать непустое конечное множество V, которое будем называть словарем (или ал- фавитом), а его элементы—элементарными символами (или просто символами, а также буквами). Произвольную конечную последовательность элементов V, т. е. отображение в V некоторого (конечного) начального отрезка натурального ряда, будем называть цепочкой*) в словаре V. Отображаемый отрезок натурального ряда может быть и пустым; тогда мы говорим о пустой цепочке. Непустую цепочку мы, как правило, будем записывать в виде и = Ь] ... Ь„, где bt — образ числа i. Пустую цепочку будем обозначать символом Л. Мощность отображаемого отрезка натурального ряда будет называться длиной цепочки; в частности, длина пустой цепочки равна нулю.. Длина Цепочки со обозначается |со|. *) Мы не пользуемся более распространенным в математических работах термином слово во избежание ненужной омонимии в лингвистических приложениях. 2*
20 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I Например, алкилалкоксисилан — цепочка длины 17 в словаре V, состоящем из 32 русских букв, а также в словаре V' = {а, и, к, л, н, о, с} и в любом словаре, содержащем V. Иногда мы будем изображать цепочку Ъ1 h ... К-, ЬП «—н 1 1 1— Рис. 1. Ь\ ... Ьп на отрезке горизонтальной прямой так, как показано на рис. 1. Множество всех цепочек в словаре V будет обозначаться через V*, множество всех непустых цепочек в V — через V+. Конкатенацией (или результатом конкатенации) непустых цепочек Ь] ... Ьп и сх ... ср называется цепочка dx ... dn+v, где di = bi, ..., dn = bn, dn+i = = C\, ..., dn+p = сp. Кроме того, конкатенация цепочек и и Л, равно как и Л и со, где ш — произвольная цепочка, считается по определению равной со. Конкатенацию цепочек и и ф мы будем обозначать соф. Заметим, что слово «конкатенация» обозначает у нас и операцию и ее результат. Иногда эту операцию называют также умножением, а ее результат — произведением цепочек. Операция конкатенации, очевидно, ассоциативна, но не коммутативна *). Вместо (ош ... а мы будем обычно писать со"; со1 п раз будет означать со; со0 будет означать Л. Если со = фгр, мы будем называть ф началом о» и г|з концом со. В частности, всякая цепочка есть начало и конец самой себя. Мы введем также две частичные операции, обратные для конкатенации: левое деление и правое деление. Именно, левым (правым) частным от деления цепочки со на цепочку ф называется цепочка гр такая, что фгр = со (соответственно г|зф = (о). Левое частное от деления со на ф будет обозначаться через ф\и, правое — через со/ф. *) За исключением случая, когда V состоит из одного элемента.
$ t.tj ЦЕПОЧКИ И ЯЗЫКИ 21 Например, цепочка рококо есть конкатенация цепочек рок и о/со, цепочка окорок — конкатенация цепочек око и рок; рок=око\окорок=рококо/ око; око=рок\ \рококо=окорок/рок; частных рок\окорок, хзко\ \рококо, окорок/око, рококо/рок не существует. Если для каких-либо цепочек и, ср, т]ь т]2 в словаре V имеет место равенство со = т]1фт]2, мы будем называть цепочку г|1*ф*т]2, где символ * не принадлежит V, вхождением цепочки ср в цепочку со. Если существует вхождение ср в со, мы будем называть ср подцепочкой со. В случае, когда длина цепочки ср равна 1, т. е. ср состоит из одного символа Ь, будем говорить о вхождении символа Ь в цепочку и. Вхождения символов в цепочку мы нередко будем называть ее точ- к а ми. Число вхождений символа а в цепочку и будет обозначаться | СО | а. - ЕСЛИ <Х = Т)1*Ь*Т)2И Р = ?1 * С * ?2 — ТОЧКИ ОДНОЙ И той же цепочки со = r|ibr]2 = \\с\г, и если при этом |t)i| <|Ы» мы будем писать а<Р или Р>а и говорить, что а лежит (или расположена) левее р, а Р — правее а. Если а < Р < y или y < Р < а, говорим, что р лежит (или расположена) между а и Y- Для любых двух точек а, р цепочки и таких, что а ^ р, мы будем называть множество точек g, удовлетворяющих неравенствам а^|^р, отрезком цепочки со и обозначать [а, р], а множество точек, удовлетворяющих неравенствам а < g < р, — интервалом цепочки ев и обозначать (а, р). Иногда нам будут нужны также несобственные интервалы (—, а) и (а, —) — множества точек, удовлетворяющих соответственно неравенствам \ < а и а < \. Интервал, в отличие от отрезка, может быть пуст. Между отрезками цепочки и вхождениями в нее непустых подцепочек имеется очевидное взаимно однозначное соответствие. Иногда для упрощения изложения отрезки будут отождествляться с соответствующими подцепочками (только в тех случаях, когда это не ведет к недоразумениям). Пары точек а, р и у, б, по определению, разделяют друг друга, если одна из точек y> 6 лежит, а другая не лежит между аир (или, что то же самое,
22 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ.1 одна из точек а, р лежит, а другая не лежит между у и 6). Пример. Цепочка рококо содержит два вхождения цепочки око: р * око * ко и рок * око *, одно вхождение символа р: *р*ококо, 7 вхождений пустой цепочки: * * рококо, р * * ококо и т. д. Если обозначить вхождения символа о (слева направо) через а, р, y. то а < < Р < Y; отрезкам [а, р] и [р, y) отвечают разные вхождения одной и той же подцепочки око. Иногда мы будем фиксировать некоторый пересчет словаря V: аи ..., ak и связывать с этим пересчетом следующее отношение «предшествования» на V*: более короткая цепочка предшествует более длинной, а для цепочек равной длины предшествование определяется лексикографически (т. е. цепочка а, ... а, а, ... а, *1 S-l lS П предшествует цепочке а. ... а, а. ... а. , если /„</Л. г м ls— i h >п s s/ Это отношение является линейным порядком; более того, существует взаимно однозначное отображение v: у*—->#(# = {0, 1,...}), сохраняющее порядок (упражнение 1.3). Число v(co) мы будем называть стандартным номером цепочки со, а определенное только что отношение на V* — стандартным порядком. Произвольное множество цепочек в словаре V мы будем называть языком в этом словаре. Рассматривается, в частности, и пустой язык; обозначаться он будет, в согласии с § 1.0, символом 0. Над языками можно производить обычные теоретико- множественные операции — объединение (обозначается U), пересечение (обозначается Л), вычитание (обозначается —), взятие дополнения (дополнение языка L до множества V* будет обозначаться через CvL или, если недоразумение невозможно, через CL; дополнение до множества V+ — соответственно через CvL или С L). Введем теперь некоторые специфические операции над языками. Умножение (иначе, прямое умножение или конкатена ци я) определяется как операция, ставящая в соответствие двум языкам L\ и L% язык L = {ф!р | ф е Lu ifeL2}. Этот язык обозначается LiL2 и называется (прямым) произведением Li
§ I.1J ЦЕПОЧКИ И .ЯЗЫКИ 23. нa L2 (или конкатенацией Li и L2). Для экономии скобок мы будем считать, что умножение связывает теснее, чем объединение, так что, например, Li U L2L3 будет означать Li U (L2L3). Операция умножения ассоциативна, но не коммутативна. Ввиду ее ассоциативности ясен смысл записи. Li ... Ln- Кроме того, она дистрибутивна относительно объединения: L(Li U L2) = LLi U LL2; (Lil)L2)L = = LiL U L2L (упражнение 1.4, a)). Итерацией (или результатом итерации) языка оо L называется язык (J Ln, где W = {Л}, L1 = L и Ln = L...L при п > 1. Этот язык обозначается п раз L*. Иногда нам будет удобно рассматривать также усеченную итерацию языка L, определяемую как оо (J L"; она будет обозначаться L+. n=l Операции левого и правого деления языка' на цепочку определяются и обозначаются соответственно следующим образом: co\L = {ф | соф е L}; L/o) = {ф | фсо е Ц. Наконец, подстановка языков L\, ..., Ln в язык L вместо символов ait ..., ап есть операция, сопоставляющая языку L в словаре V = {ait ..., ап) и языкам Llt ..., L„ в словарях Vi, ..., Vn соответственно следующий язык в словаре Vi U ... U Vn: {»/, ••• ю«*|а<, ••• aik^L< мг, ^^г,, •••, ©<ft €= L,ft} U L', где L' = {Л}, если AeL, и L' = 0, если Л ^ L. Этот язык будет обозначаться S(L; au ..., an|Li, ..., Ln). В частном случае, когда языки Lu ..., Ln одноэлементны, подстановка называется гомоморфным отображением, или гомоморфизмом, языка L. Если L — язык в словаре V = {аь ..., ап} и £/ ^ V, то гомоморфное отображение S(b; ax an\Li L'n), где L'i есть {аД при ^еУ и {Л} при а< ^ £/, называемся проектированием L на U, а его результат —
24 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I проекцией L на U. Образ цепочки при проектировании также называется ее проекцией. Проекцию цепочки со и языка L на словарь U мы будем обозначать соответственно При© и При^- Если {со} — язык, состоящий из одной цепочки со, то мы будем вместо L{a>}, {a>}L, {со}* и {со}+ писать соответственно Leo, coL, и* и и+. Пример. Если У = {0, 1}, L — язык, состоящий из всевозможных двоичных записей целых положительных чисел (т. е. цепочек, начинающихся символом 1), и Li — язык, состоящий из всевозможных двоичных записей нечетных положительных чисел (т. е. цепочек, начинающихся и оканчивающихся символом 1), то L= IV*, Ii={l}UlV*l, LU= LI ■= U — {1}, Щ = Ю П (V* 11 V*); L+ = L; (n\L = V*, если со начинается единицей; a>\L = 0, если со начинается нулем; Li/co = = LiU{A}, если со оканчивается единицей; Lx/<& = 0 если со оканчивается нулем; 5(L4; 0, l|Li, L) = L. Пусть £i, ..., |ft — абстрактные символы и Ви ... ...,ВР — языки (точнее, символы, обозначающие языки). Выражение, составленное из |i, ..., £&, Ви ... ..., Вр с помощью знаков объединения и умножения *), соответственно знаков объединения, умножения и итерации, называется многочленом, соответственно регулярным выражением от £i, ... ,£й с коэффициентами Ви ..., Вр. Если интерпретировать £i, ..., |ft как переменные, пробегающие какие-либо множества языков, то многочлен (регулярное выражение) становится функцией от этих переменных; значение этой функции, получаемое при подстановке на место переменных gi, ..., \ъ. конкретных языков Lu ... ,Lu, есть также некоторый язык; мы будем говорить, что этот язык представляется (или задается) данным многочленом (регулярным выражением) при \i=Li, ... ..., \h = Lft. Например, язык, состоящий из всевозможных цепочек в словаре {а, Ь], содержащих вхождение фиксированной цепочки со, задается регулярным выражением Ф{1) — {а,Ъ}*1{а,Ь}* при |={и}. Многочлен (регулярное выражение), не содержащий (не содержащее) переменных, называется замкну- *) Знаком умножения можно считать пробел, между буквами.
§1.2] ГРАММАТИКИ 25 тым; замкнутый многочлен (регулярное выражение) представляет единственный язык. Два многочлена (регулярных выражения) от переменных \и .-., ift тождественны (или тождественно равны), если они отвечают одной и той же функции, т. е. при любой подстановке языков вместо переменных представляют один и тот же язык. В силу упомянутого выше дистрибутивного закона любой многочлен от |i, ..., \и тождественно равен не- s которому многочлену вида \}а-ц ••• o.fr , где а!Ь ... ..., air — переменные или коэффициенты. § 1.2. Грамматики В самом широком смысле формальными грамматиками, или просто грамматиками, называют любые «автоматические устройства» (т. е. исчисления или алгоритмы), позволяющие «задавать» языки. При этом «задание» может осуществляться по-разному, оно означает либо возможность для каждой цепочки данного языка подобрать такой режим работы устройства, чтобы к концу работы получить («породить») эту цепочку (причем, разумеется, ни одна цепочка, не принадлежащая языку, не должна «порождаться»), либо возможность «перечислить» язык, т. е. организовать работу устройства так, чтобы оно выдавало цепочки языка одну за другой и могло бы выдать любую из них, работая достаточно долго, либо, наконец, возможность для произвольной цепочки (в соответствующем словаре) получить от устройства ответ на вопрос, принадлежит ли эта цепочка языку. Из трех указанных подходов мы выберем первый. Как станет нам ясно впоследствии (а читателю, достаточно хорошо знающему теорию алгоритмов, должно быть ясно уже сейчас), это не сужает класса описываемых языков — любой язык, допускающий задание первым способом, допускает также задание вторым или третьим. В то же время именно такой подход лучше всего моделирует ситуацию, имеющую Место при пользовании языком (естественным или
-26 ОСНОВНЫЕ ПОНЯТИЯ ГГЛ.1 искусственным) *) —основная задача там состоит в порождении предложения, обладающего заданным смыслом. Правда, эта ситуация моделируется далеко не в полной мере — в модели происходит порождение не предложений с заданным смыслом, а любых правильных предложений (понятие смысла в этой модели вообще не присутствует в сколько-нибудь отчетливой форме). Тем не менее такая модель позволяет значительно приблизиться к пониманию того, как смысл преобразуется в текст, поскольку преобразования, с помощью которых в ней происходит процесс порождения правильного предложения, могут рассматриваться как прообраз — хотя и достаточно грубый — тех преобразований, с помощью которых осуществляется переход от смысла к тексту. Итак, мы останавливаемся на понимании грамматики как «устройства для порождения цепочек» и впредь будем говорить о «порождающих грамматиках». Но порождение цепочек может быть организовано различными способами. В частности, возможны такие способы, при которых все возникающие в процессе порождения промежуточные объекты будут тоже цепочками, и такие, при которых эти объекты могут иметь иную природу. Нас здесь будут интересовать исключительно способы первого типа**); таких способов тоже, как легко -понять, может быть много, и нам придется выбрать какой-то один (или в крайнем случае несколько). Мы выберем способ, предложенный Н. Хомским (впервые в [Chomsky 1956, 1957]) и не уступающий по силе, как мы увидим в § 1.4, никакому другому возможному эффективному способу***); в то же время он обладает тем *) В этой и предыдущей фразах слово «язык» употреблено в разных значениях (см. введение, стр. 14—15). **) Для более точного моделирования перехода от смысла к тексту более адекватны как раз такие грамматики, в которых промежуточные объекты имеют более сложную природу, например являются деревьями (см. [Гладкий — Мельчук 1971]). Однако теория таких грамматик еще недостаточно разработана; во всяком случае,— это для нас здесь наиболее важно — теория «древесных» грамматик не может не опираться существенным образом на теорию проще устроенных «цепочечных» грамматик, которые и являются предметом настоящей книги. ***) Разумеется, это утверждение не носит характера математической теоремы. Его статус будет разъяснен в конце § 1.4.
$ 1.21 ГРАММАТИКИ 27 преимуществом, что по крайней мере для наиболее важных частных случаев позволяет сопоставлять порождаемым предложениям весьма естественные описания их структуры (см. ниже, § 3.1). Еще одно весьма важное достоинство данного способа состоит в том, что он хорошо вписывается в некоторую более общую систему понятий математической логики, теории алгоритмов и теории автоматов*). Итак, мы переходим к определению порождающих грамматик в смысле Н. Хомского; до тех пор, пока не будут введены в рассмотрение другие типы грамматик, — а по большей части и после этого (когда невозможно недоразумение) — мы будем в качестве синонима для выражения «порождающая грамматика» употреблять просто слово «грамматика». (Порождающая) грамматика — это упорядоченная четверка Г = (V, W, I, R), где: 1) V я 2) W — непересекающиеся. непустые конечные множества; 3) / — некоторый элемент W; 4) R — конечное множество цепочек вида <р —► гр, где ср и ip — различные цепочки в словаре V U W и —*■ — символ, не входящий в V U W. Множества V и W называются соответственно основным и вспомогательным словарями (алфавитами) грамматики Г, а их элементы — соответственно основными и вспомогательными символами Г**);/ называется начальным символом'Г, R—схемой Г и элементы R — правилами Г. Цепочки ф и if называются соответственно левой и правой частями правила ср—»■ ip. Объединение VI) W мы будем иногда называть полным словарем грамматики Г. Пусть г = ф —»• ар — правило грамматики Г и ii*<p*?2 — вхождение ср в цепочку <а = Ъч>Ъ в словаре V U W. В этом случае мы будем говорить, что цепочка *) Заметим, что эта система понятий возникла еще до исследований Н. Хомского, и то обстоятельство, что его концепция сразу нашла готовую формальную базу, очень сильно способствовало успешному развитию этой концепции. Таким образом, и здесь теория опередила потребности приложений, как бывает чаще всего, вопреки распространенному среди «широкой публики» ходячему мнению. _. **) Вместо слов «основной» и «вспомогательный» нередко употребляются соответственно слова терминальный н нетерминальный.
28 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I т] = i^pga получается из и применением правила г. к вхождению |i * ер * Ъ. цепочки ф. Если цепочка т] получается из цепочки со применением какого-либо правила Г, будем говорить, что г| непосредственно выводима из и в Г, и писать со (= гт] или просто со Непоследовательность цепочек D = (coo, coi соп) (п^\) называется выводом со„ из соо в грамматике Г, если для каждого i, 1 ^ i ^ я, имеет место сог-1 (= сог- Число п называется длиной вывода D. Если существует вывод т] из со в Г, то мы будем говорить, что г| выводима из со в Г, и писать со Н гт] или со I— т]. Вывод (coo, coi, ..., con) называется полным, если соо == / и соп — цепочка в словаре V. Если D = (соо, coi, ..., соп) — вывод в грамматике Г и для некоторого i= 1, ..., п цепочка coi получается из сог-1 применением правила ср—up к вхождению |г*ср*г]г цепочки ф в сог-i, то мы будем, говорить, что это правило применяется на £-м шаге вывода D к вхождению £г*Ф*11г и что данное вхождение ф в со заменяется на им шаге вывода D. Размеченным выводом, соответствующим выводу D, мы будем называть последовательность^, со[, ..., со^_,, соп), где со' (/ = 0, ..., п—\) — вхождение, заменяемое на /-м шаге вывода D. Одному выводу может, вообще говоря, соответствовать много размеченных выводов (см. упражнение 1.9). Множество цепочек в основном словаре грамматики Г, выводимых из ее начального символа (иначе — множество последних цепочек всевозможных полных выводов в Г), называется языком, порождаемым грамматикой Г, и обозначается L(Г). Из сформулированных определений видно, что существенным свойством процесса работы порождающей грамматики является его недетерминированность: если оборвать вывод на каком-либо шаге, то продолжение, вообще говоря, не восстанавливается однозначно по оставшейся части и может быть выполнено разными способами. Таким образом, грамматика — это исчисление, т. е. разрешение производить некоторые операции [Марков 1954, стр. 203] — в данном случае подстановки
§1.2] ГРАММАТИКИ * 29 в цепочки одних подцепочек вместо других (а не алгоритм, т. е. не предписание производить какие-то операции). Пример. Пусть Т= ({а, Ь, с}, {А, В, С, D}, А, {А-+ВСА, BCB-+D, ВС-*be, DC->a, cA-+c, аА->-а}). Пример полного вывода в Г: (А, ВСА, ВСВСА, ВСВСВСА, BCDCA, BCDCBCA, BCDCbcA, BCabcA, bcabcA, bcabc). Соответствующий размеченный вывод (в данном случае единственный): (* А *, ВС *Л *, ВСВС*А*, ВС*ВСВ *СА, BCDC*A*, BCDC*BC*A, ВС * DC *bcA, * ВС *abcA, bcab*cA*, bcabc). Легко видеть, что L(T) = {a, bc}+. Грамматика T=(V, W, I, R) называется грамматикой составляющих, или НС-грамматикой*), если каждое ее правило имеет вид gi-d^—»-£i8g2, где gi, \г — произвольные цепочки в словаре V U W, А е W и 0 — произвольная непустая цепочка в V U W. Правила вида liA^z-*■ ISh, где gi, £2, А и б имеют указанный только что смысл, иногда называют НС-п р а- вилами; цепочка |ь цепочка g2 и пара цепочек (gi, |2) называются соответственно левым контекстом, правым контекстом и контекстом НС-правила liAl,2 -+ h®h- При применении НС-правила фактически заменяется только одно вхождение символа А, но возможность замены зависит от наличия нужного контекста. Если gi = \г = Л, то правило называется бесконтекстным (или контекстно-свободным), сокращенно Б-правилом (или КС-правилом). НС-грамматика называется бесконтекстной (или контекстно-свободной), сокращенно Б-гр а м м ати кой (или КС-грамматикой), если все ее правила бесконтекстные. (Б-)грамматика называется автоматной, сокращенно А-грам м а тикой **), если каждое ее правило *) Вместо «грамматика составляющих» часто говорят «грамматика непосредственно (или непосредственных) составляющих»; отсюда и сокращение «НС-грамматика». Мы опускаем слово «непосредственно», так как никаких других составляющих не бывает (ср. [Гладкий — Мельчук 1969], стр. 185), но сохраняем сокращение, ставшее уже общеупотребительным. **) Иногда используется термин «грамматика с конечным числом состояний», по нашему мнению, неудачный (см. [Гладкий — Мельчук
30 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I имеет вид А —*■ аВ или А—*а, где А, В — вспомогательные символы и а — основной символ. Языки, порождаемые НС-, Б- и А-грамматиками, называются соответственно НС-, Б- и А-я з ы к а м и. Классы произвольных грамматик, НС-, Б- и А-грам- матик мы будем иногда обозначать соответственно через Г (так же мы часто обозначаем конкретные грамматики, однако эта омонимия всегда устраняется контекстом), НС, Б и А. Кроме того, для произвольного класса грамматик ЧГ через 3:' (&~) будет обозначаться класс языков, порождаемых грамматиками класса 3~. Примеры НС-, Б- и А-грамматик будут приведены в § 1.3. Введем еще некоторые понятия и отметим несколько полезных для дальнейшего простых фактов. Правило ф—»-г|) грамматики Г называется заключительным, если а|з=й=Л и никакой символ, входящий в ф, не может входить в левую часть какого-либо правила Г. Перестройкой вывода D= (coo, coi, ..., соп) в грамматике Г мы будем называть (вообще говоря многозначную) операцию, сопоставляющую выводу D какой-либо другой вывод цепочки соп из ш0 в Г, в котором применяются в точности те же правила, что и в D, но в другом порядке. Лемма 1.1. Всякий вывод в произвольной грамматике можно перестроить так, чтобы ни одно заключительное правило не применялось раньше какого-либо незаключительного. Доказательство очевидно. Пусть (e>J, а>[, ..., <<_,, со„), где а/, = I, *ц>{*ц{ (0 ^ £ < п), — размеченный вывод в некоторой грамматике, и пусть правило, применяемое на i-м шаге (£=1, ..., п), есть q>i_i —► ipi_i. Тогда для каждого £ = 1, ..., п—1 имеет место равенство ^гфгТ]» = = ii-i*i>i-iT)i-i; ПРИ этом выделенное вхождение ср* может находиться либо целиком левее выделенного вхождения фг-i, либо целиком правее, либо пересекаться с ним. В этих случаях мы будем говорить соответственно, что £+ 1-й шаг данного размеченного вывода проис- 1969], стр. 184). Лучше всего было бы, пожалуй, говорить «конечно- автоматная грамматика», поскольку А-грамматики тесно связаны с конечными автоматами (см. ниже, § 5.1), но мы не будем этого делать, чтобы не увеличивать и без того слишком большое число терминологических вариантов
§ J-2] ГРАММАТИКИ 31 ходит левее i-ro, происходит правее t'-ro, зацеплен с t'-м. Назовем размеченный вывод упорядоченным, если никакой следующий шаг не происходит в нем левее предыдущего. Вывод, становящийся при подходящей разметке упорядоченным, назовем упорядочиваемым. Лемма 1.2. Всякий вывод в произвольной грамматике можно перестроить в упорядочиваемый. Доказательство. Пусть D' = (со£, ..., <в^_р соп), где (й\ = 11 *фг *г|, (0 ^ i < п), — неупорядоченный размеченный вывод в грамматике Г и i0= i0(Dr) — наименьшее из чисел i, для которых i + 1-й шаг в D' происходит левее г'-го. Очевидно, ll^-il s^ll^J- Пусть j0 — наименьшее число, обладающее тем свойством, что для каждого /, удовлетворяющего условию j0^j^i0, выполняется неравенство ||._, | ^>|£г Фг I. Для каждого / = /0. /0+1, •■•> «о имеем|у_,Ф/_,т|/_1°=Ч,,Ф^_1Фу_,Л/_1- Преобразуем D' следующим образом: шаги до }0— 1-го включительно оставим без изменения, затем в полученной таким образом цепочке £4<рг1у ,ф» ^/„-i применим к выделенному вхождению фг правило, применявшееся в D' на t'o+1-м шаге, затем будем производить все замены, как на шагах D' от /о-го до г'о-го включительно, — после чего, очевидно, получится цепочка Е^ФгД- — и, наконец, преобразуем эту цепочку в соп, как в D'. Ясно, что такое преобразование дает новый размеченный вывод D" в Г, и если он не упорядочен, то k{D") > io(D'). Повторяя это преобразование нужное число раз, получим упорядоченный размеченный вывод. Два вывода в грамматике Г назовем равносильным и, если их первые и последние цепочки соответственно совпадают. Вывод, в котором никакая цепочка не встречается более одного раза, назовем бесповторным. Лемма 1.3. Для произвольного вывода в любой грамматике существует равносильный ему бесповторный вывод, который можно получить из исходного выбрасыванием некоторых цепочек. Доказательство очевидно. Грамматики Г. и Г' называются эквивалентными, если L(D = £(Г).
32 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I Лемма 1.4. Для произвольной грамматики Г может быть построена*) эквивалентная ей грамматика Г, левые части правил которой не содержат вхождений основных символов. Если при этом Г — НС-грамматика, то и Г" может быть сделана НС-грамматикой. Доказательство. Пусть V = (V,W, /, R). Сопоставим каждому символу оеУ «двойника» — новый символ a^VlJW — так, чтобы разным символам отвечали разные «двойники». Положим V = {a\a^.V} и Tf=(V, W[)V, I, R\J R), где n = {a-+a\az=V} и R получается из R заменой в каждом правиле всех вхождений основных символов вхождениями их «двойников». Легко видеть, что Г' и есть нужная грамматика. В грамматике, удовлетворяющей условию леммы 1.4, каждое правило, правая часть которого непуста и состоит из основных символов, является заключительным. Пусть Т — некоторый класс грамматик и ф — fe-ме- стная операция над языками. Допуская языковую вольность, будем говорить, что класс S{Т) эффективно замкнут относительно ср, если по любым k грамматикам Ti, ..., Ти <= 0~ можно построить такую грамматику ref, что ЦТ) = q>(L(ri), .... ЦП))**). Теорема 1.1. Класс языков, порождаемых всевозможными грамматиками, эффективно замкнут относительно операций объединения, пересечения, умножения, итерации, усеченной итерации, левого и правого деления и подстановки. Доказательство. 1) Пусть Г' =(V, W, /', R') и Г" = {V", W",I",R") — произвольные грамматики. В силу леммы 1.4 мы можем считать, что левые части правил Г' и Г" не содержат вхождений основных символов. Будем считать, кроме того, что W П W = 0; если это не так, переименуем символы, входящие в W", что не изменит языка L{Y"). При выполнении этих условий очевидно, что грамматики (V, W, I, R U R" U {/ -♦ /', *) «Построить» будет на протяжении ЁсеЙ книги означать «эффективно построить». Здесь, например, «по произвольной грамматике Г может быть построена Г'» означает «существует алгоритм, строящий по произвольной грамматике Г нужную Г'»; в дальнейшем всюду аналогично. **) Таким образом, эффективная замкнутость есть на самом деле свойство класса &~, а не класса 9?(Т).
§ 1.3] ПРИМЕРЫ ГРАММАТИК 33 / — /"}) и (V, W,I, «'U Я" U {/ —/'/"}), где V = ^vu v\ w == w и w и {/}, / ф v и V и vr и w, порождают соответственно языки £(Г") U L{T") и /.(Г')^(Г"). Чтобы построить грамматику, порождающую пересечение, сопоставим взаимно однозначным образом каждому символу а е V новый символ а и каждому символу 6_е V" _новый символ Ь^_ Положим V' = = {а | а е !/'},_ V" = {£] 6 <= У"} (V' П 7'^= 0). Обозначим через R', соответственно через R", множество правил, полученное из R' (из R") заменой каждого вхождения каждого основного символа а в каждое правило вхождением символа а (а). Пусть теперь I<£V [}y"[)V'[}V"[}W'[)W и t Y = (V'(}V", W'VW"[)V'VV"V{I}, I, R'[)R"U U{/_->/7"}U«iU/?2>, где Rl={aF->ba\ae£V, teV"}, R2={aa->a |ae=V'flV"). Нетрудно видеть, что L (Г) = L (Г) Л L (Г"). 2) Пусть Г = (У, W, I, /?) —произвольная грамматика. Как и выше, считаем, что левые части ее правил не содержат вхождений основных символов. Пусть х — произвольная цепочка из V*. Положим W = W\){I', #}, где /', # ф V U W, «'={/'-»# / #. # # -* # / #, # #->А} U U{#a^a#|aeEl/}, /?; = {Г-*#/, #х-*Л}. Легко видеть, что грамматики f = (V, W, I', R[)R') и Г* = (V, W, V, R (J Rx) порождают соответственно языки L(T)+ и x\L(T). Чтобы получить язык L(T)', достаточно добавить к схеме грамматики Г' правило /'->-Л. Грамматика для L {Т)/х строится аналогично Тх. 3) Доказательство для подстановки предоставляется читателю. Замечание. Относительно операций вычитания и взятия дополнения рассматриваемый класс языков не замкнут (см. ниже замечание в конце § 1.4). § 1.3. Примеры грамматик Во всех приводимых здесь и далее примерах грамматик мы будем, если не оговорено противное, обозначать основные символы строчными латинскими буквами, 2 А. В. Гладкий
34 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I вспомогательные — заглавными латинскими буквами (те и другие буквы могут иметь индексы и надстрочные знаки), начальный символ — буквой /. Это позволит нам ограничиться выписыванием схем грамматик. Пример 1. а) Любой непустой конечный язык {ац, ..., con}, wi ф Л, порождается Б-грамматикой со схемой {/ —► (oi, ..., I —*■ con}- б) Тот же язык, если щ = а^ ... alk порождается А-грамматикой со схемой {Аю-+ацАц, • ••> Л, fe(— 2-*•«/, kt-iA{, kru At,k{-i-+at,k.\i=l, .... n}t где А10= ... =Л„0 = /. в) Пустой язык порождается А-грамматикой со схемой {/ —► al). Таким образом, любой конечный язык, не содержащий Л, является А-языком. Пример 2. Для любого словаря V язык V* порождается А-грамматикой со схемой (/—*а/, I—* а\а ^ V}. Будем называть простейшей записью натурального числа п цепочку || ...|. Множество простейших п раз записей элементов произвольного множества натуральных чисел М будет всегда отождествляться с самим множеством М. Пример 3. а) Каковы бы ни были числа k = = 1, 2, ... и / = 0, 1, ..., k —- 1, множество Ры = = {кп-{-1\п = 0, 1,..-} (арифметическая прогрессия) порождается А-грамматикой с основным словарем {|}, начальным символом Л0 и схемой {Л0—Иь •••, Лй_2 —|ЛЙ_1, Лй_!—|Л0, A0-+\BU si-> -> | fi2, • • •, Яг-2-► | #j_i, Яг_!-*|} (так ПРИ t>U при /= 1 последние / правил заменяются правилом А0—*■ |, при / = О — правилом Au-i —*■ |). б) По аналогии с примером 1, б) легко построить А-грамматику, порождающую объединение конечного числа арифметических прогрессий и конечного множества чисел. Пример 4. Язык а+Ь+ порождается А-грамматикой со схемой {/ —► al, / -► аВ, В —► ЬВ, В —► Ь}.
§ 1.3] ПРИМЕРЫ ГРАММАТИК 35 Пример 5. Язык {апЬп\п = 1, 2, ...} порождается Б-грамматикой со схемой {l-*alb, I-+ab}. Пример 6. Языки {апЬпат\т, п=\, 2, ...} и {атЬпап\т, п=\, 2, ...} порождаются Б-грамматика- ми со схемами {/—+ la, I-+Aa, A-+aAb, A-+ab} и {/—*al, I —»■ аА, А-+ЬАа, А-+ Ьа] соответственно. Пример 7. Множество всевозможных «правильных скобочных последовательностей» порождается Б-грамматикой с основным словарем {), (} и схемой {/->//, Пример 8. Язык L в словаре {а, Ь), состоящий из всех непустых цепочек, содержащих одинаковое число вхождений а и Ь, порождается Б-грамматикой со схемой {/ —► //, I —*■ alb, I —► Ыа, I -+ab, I -> Ьа). Непосредственно ясно, что все цепочки в {а, Ь), порождаемые данной грамматикой, принадлежат L. Обратное доказывается возвратной индукцией по длине цепочки; базис этой индукции тривиален, а индукционный шаг основывается на следующем очевидном факте: любая цепочка weL длины, большей или равной 4, пред- ставима по крайней мере в одном из видов а\Ь, Ьца, Si&j, где I, ц, U, £2 <= L. Для произвольной цепочки со в словаре V = {аи .., ... ,ак) назовем ее обращением и обозначим 6 цепочку ain ... а^, если со = ati ... ain, и Л, если со = Л. Пример 9. а) Язык L3 = {хх\х е V+) (з — от «зеркальное отражение») порождается Б-грамматикой со схемой {l-+ala, I-+aa\a<=V}. б) Язык C'L3 порождается Б-грамматикой со схемой: (I) l-*alb (a, b^V) (II) I^a (III) I-^aAb (IV) I-*ab (V) A-*aAb (VI) A-+ab HV) (a, b^V, (a, btBV; (a, b<=V) (a, 6e7) а ф b) афЬ) Действительно, всякий полный вывод в этой грамматике происходит по одной из трех схем: a) lh IIj б) I" HIV'VI; в) I* IV (k, / = 0, 1, ...); по схеме а) порождаются всевозможные цепочки нечетной длины, 2*
36 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I по схемам б) и в)—всевозможные цепочки вида оцсог, ГДе | COi | = | 0)2 | И 0)2 Ф 0)1. Пример 10. Язык {апЬпап\п = 1,2,...} порождается грамматикой со схемой {/ —► alBa, I —► аба, аВ-*Ва, ЬВ-*ЬЬ}. Действительно, каков бы ни был полный вывод в этой грамматике, в нем на одном и только на одном шаге должно применяться второе правило, и после этого цепочка будет иметь вид апЬа, где ш содержит п вхождений а и п— 1 вхождений В. Вывод закончится лишь тогда, когда все В превратятся в Ь, но для этого все В должны «собраться вместе» в середине цепочки. Пример 11. Пусть К = {а,, ..., ak, b). Язык {xbx |*е{а,, ..., ап}*} порождается грамматикой со схемой {/->/Л*аг-, I-*b, a^j—*-Ajait bA{-*~aib\it /=1, .... k). Пример 12. Пусть V = {а1 ak, b}. Язык [xibx2 \хих2 е{а1( ..., ak}*, xl Ф х2} порождается Б-грам- матикой со схемой: (I) /-*/' (II) /-*/" (III) /'-*/Ч- (IV) V-^Aiui (i (V) А[ -> aiMt (VI) At -> ajB (VII) В-*а,В (VIII) £-»& (lX)Ai->b (i (X)/"-*C (XI) C-^afia, (XII) C->a{D (XIII) D-*a*D (XIV) D^6 ('=1, = 1, ... (i, J, (». j = (/=1, = 1, ... (i, / = (»=1, (/=1, .... fe) , k) /=1, . 1 k ..., k) , k) = 1 ..., k) ..., k) .., k) ; * Ф i) k) Легко видеть, что любой полный вывод в этой грамматике происходит по одной из схем: а) IIIlMVV'VIVirvIII; б) I III* IV V'IX; в) IIXXIfeXIIXIH'XIV {k, t, m = 0, 1, ...).
§ 1.3] ПРИМЕРЫ ГРАММАТИК 37 По схеме а) получаются всевозможные цепочки вида x'ajy'bx"a,y", где *', у', х", у" е {а, ak}\ \ х' Н х" |, 1Ф\\ по схеме б) — всевозможные цепочки вида z'bz", где z', z" <={au ..., ak}* и | z' |< | z" |; по схеме в) — то же с противоположным неравенством. Объединение этих трех множеств цепочек и есть нужный язык. Пример 13. Множество {п?\п=1, 2,...} порождается грамматикой со схемой: (I) 1-^ ABBDF (II) BD-+DCB (III) ВС-+СВ (IV) AD^AAE (V) ЕС^АЕ (VI) ЕВ->ВЕ (VII) EF-+BBDF (VIII) DF-»| (IX) Я-Н (X) Л-Ч (XI) /-Н Нетрудно видеть, что полный вывод в этой грамматике происходит следующим образом. Сначала из / по правилу I получается цепочка ABBDF = Al'B21DF, a затем выполняется произвольное число циклов, на каждом из которых цепочка An*B2nDF преобразуется в ^<n+i)2£2(n+i)£j^ цикл состоит в том, что каждое вхождение В с помощью «стимулятора» D порождает «двой< ника» — вхождение С (правило II), которое затем пере-. ходит влево (правило III), после чего превращается в А (правило V)—причем до начала превращений С ъ А появляется еще одно вхождение А. (правило IV), — и, наконец, появляются еще два вхождения В (правило VII).; как раз в этот момент «стимулятор» снова Принимает «исходное положение». После окончания каждого очередного цикла можно, вместо того чтобы начинать новый, применить правила VHIt—X, превращающие An'B2nDF в (n-f 1)2. (Впрочем, правило X .можно начать
38 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ.1 применять и раньше — это ничего не изменит). Так получается любая цепочка вида (п + I)2, и ясно, что только такие цепочки в словаре {)} выводимы из / по правилам I—X. Цепочка | = 12 получается по правилу XI. Дальнейшие примеры «абстрактных» грамматик см. в упражнениях 1.14 и 1.15 (см. также упражнение 3.6). Пример 14. Пусть Г = (V, W, ПРЕДЛ, R), где 1) V состоит из словоформ русского языка; 2) W состоит из символов ПРЕДЛ, Stxyz, Stxyz, Axyz, Vху, Loc;> где t = одуш, неодуш; х = муж, жен, ср; у = ед, мн; z = им, род, дат, вин, твор, предл; t = 1,2, 3, 4, 5; W есть произвольная подпоследовательность последовательности 12345 (возможно, пустая). Содержательная интерпретация вспомогательных символов: ПРЕДЛ — «предложение»; Sixyz — «группа существительного, одушевленного или неодушевленного в зависимости от t, рода х в числе у и падеже 2»; Stxyz — «существительное» (смысл индексов тот же); Ахуг — «прилагательное в роде х, числе у и падеже 2»; VXy — «(непереходный) глагол в изъявительном наклонении, прошедшем времени, роде х и числе у вместе с обстоятельствами тех типов (см. ниже), номера которых входят в Ч?»; Locj — «обстоятельства различных типов, характеризующие движение», а именно Loct — «путь» (по дороге, по воздуху), Loc2 — «отправной пункт» (из деревни, от реки), Loc3 — «пункт назначения» (в лес, на концерт), L0C4 — «придорожные предметы» (мимо деревни, вдоль опушки), Locs — «способ передвижения» (пешком, в карете). 3) R состоит из следующих правил (всюду, где не оговорено противное, индексы принимают все допустимые значения): I. ПРЕДЛ -^StxyvuVlT II. ПРЕДЛ->Vxf%xyим • Ilia. Vfy-^-vZr^oct (здесь предполагается, что W содержит i; W — / означает последовательность, получаемую из W выбрасыванием i) Шб. VxyStxy нм ""*■ Vху Stxy им IV. Vjy->VXy
§ 1.4] Машины тьюриягА 33 Va. Stxyz-> AxyzStxyz, если либо z ф вин, либо у = ед я х ф муж V6. S, Vb. S одуш ху вин неодуш ху вин ™ху род^одуш яг/вин > А 9 ^ ■г1д:г/ им°неодуш ху вин если х=муж или у = мн Vila. Зодушмуж^я^ш^' па- ренб^, ... >J неодуш ср у г ' лесоуг, ... • ПОЛеуг, КО- VII6. Ахуг-> молодойхуг, сверхско- VIIb. Vllr. лхуг ростнойхуг, ... V ху—> ехалху, летелху, .. • Loc!->- по Stxy^T; Loc2 -* из btxy р0д, от Ь(Ху род; LOC3—>б £>txy bhhi H-a S}Xywa, " "^*г/ дат» L0C4 -* ЛШ.ИО S^j, род, вдоль Stxypm; Loc5 -*■ пешком, верхом, Ни Ъ(Ху Предл> б &(ху предл- (Здесь ямщикух и т. п. — сокращенная запись; например, ямщикроя. мн. означает ямщиков.) Читатель легко проверит, что язык L(T) содержит такие, например, цепочки, как Ехал ямщик мимо деревни, Ехала деревня мимо ямщика, Молодая очаровательная ведьма летела на межобластной шабаш на сверхскоростном турбореактивном помеле. § 1.4. Машины Тьюринга Машины Тьюринга и различные их разновидности играют в теории грамматик чрезвычайно важную роль. С одной стороны, выявление связей и параллелей между теорией машин и теорией грамматик позволяет лучше понять главные идеи последней; с другой — при изучении грамматик машины Тьюринга нередко оказываются удобным техническим средством.
40 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I Концепция машины Тьюринга, которой мы будем пользоваться, отличается от обычной, излагаемой в руководствах по теории алгоритмов (см., например, [Юеепе 1952]). Поскольку наше изложение рассчитано на читателя, знакомого с основами теории алгоритмов, мы не будем в основном тексте касаться вопроса о взаимоотношении нашей концепции с обычной и отнесем это в упражнения. По той же причине мы,не разбираем примеров и проводим рассуждения о машинах Тьюринга по большей части «на пальцах», на уровне объяснения руководящих идей (но достаточно подробно, чтобы знакомый с соответствующей техникой читатель мог восстановить все формальные дет'али; тем, кто найдет свой уровень владения этой техникой, недостаточным, полезно выполнить упражнения 1.16—1.19). Само определение машины также не будет.до конца формализованным; в нем будут' фигурировать такие наглядные образы, как «лента», «ячейка, обозреваемая головкой» и т. п.; впрочем, в этом мы следуем традиции. Обычная «классическая» машина Тьюринга представляет собой устройство для реализации алгоритмов. Работа алгоритма есть детерминированный процесс: каждый следующий его шаг жестко определяется предыдущим, и ход всего процесса полностью предопределен исходными данными. Для достижения такой детерминированности на машину Тьюринга в ее классическом виде накладывается требование ни в какой момент не допускать возможности выполнения двух разных команд. Нам, однако, понадобятся и такие машины Тьюринга, которые реализуют не алгоритмы, а исчисления, сходные с грамматиками, — «недетерминированные машины Тьюринга»; формально они будут отличаться от обычных только отсутствием упомянутого только что требования. Впрочем, термин «недетерминированная машина Тьюринга» неудобен: детерминированная машина оказывается частным случаем недетерминированной. Поэтому мы будем называть недетерминированные в указанном только что смысле машины просто «машинами Тьюринга», а «классические» — «детерминированными машинами Тьюринга». Второе отличие наших машин от обычных состоит в том, что мы снабдим их двумя лентами, причем одна из
§ 1.4] МАШИНЫ ТЬЮРИНГА 41 них будет служить «входной»; на этой ленте записывается исходная цепочка, которую машина в процессе работы прочитывает, не изменяя ее, — и, более того, каждый символ читается только один раз; вся остальная работа производится на другой, «рабочей» ленте. Это видоизменение, в отличие от предыдущего, не имеет принципиального значения, но оно позволит нам сделать некоторые рассмотрения более прозрачными*). Далее, обычно в определение машины Тьюринга включают требование, чтобы из любой ситуации, в которой состояние машины не заключительное, она переходила в некоторую новую ситуацию (в частном случае эта новая ситуация может совпадать со старой); мы же отказываемся от этого требования. Данная модификация также не принципиальна и служит лишь для большего удобства моделирования грамматик. Последней особенностью наших машин будет «эла* стичность» рабочей ленты. Это означает, что: а) стирая символ в ячейке рабочей ленты, машина (или, если угодно, головка) уничтожает и самое ячейку, так что соседние с ней ячейки становятся соседними между собой («стягивание» ленты); б) между любыми двумя ячейками рабочей ленты машина может создать новую, сразу записав в ней что-либо («растягивание» ленты). При таком способе работы отпадает надобность в «пустом символе». Для нас «эластичность» будет удобна тем, что позволит при моделировании грамматик машинами обходиться без сдвигов всего содержимого ленты, которые иначе пришлось бы производить на каждом шаге. Перейдем к формулировке определения. Машина Тьюринга с эластичной рабочей лентой, сокращенно Э-машина, состоит из: а) двух конечных**) разделенных на ячейки лент — входной и рабочей; *) Главное преимущество введения входной ленты состоит в том, что МП-машины (см. ниже, § 4.5) становятся частным случаем машин Тьюринга. **) Имеется в виду конечность ленты в каждый момент работы машины. В процессе работы размеры рабочей ленты могут неограниченно расти; входная лента не меняется в процессе работы, но может оказаться сколь угодно длинной при большом объеме исходных данных.
42 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I б) двух алфавитов (словарей) V и W, также называемых входным и рабочим (их элементы называются соответственно входными и рабочими символами); в) символов ф, ф &V[)W, называемых соответственно левым и правым граничными маркерами (множества VU{#, ф} и № !_){#} будут обозначаться соответственно V и W'); г) входной и рабочей головок, движущихся по соответствующим лентам (в любой момент работы машины каждая головка обозревает некоторую ячейку своей ленты, иначе — находится в этой ячейке); д) конечного множества Q = {qu ..., qs) (внутренних) состояний, в котором выделены элемент 01, называемый начальным состоянием, и непустое подмножество Qo, элементы которого называются заключительными состояниями; е) програм мы — конечного множества цепочек в алфавите V'\}W \}Q\}{Jl, П, ->}, называемых инструкциями, каждая из. которых имеет один из следующих видов: (i) <7aa-><7p; (ii) Aqa-*q^, (Hi) qa-*Aq^, (iv) 9а-*4(5 Л; (\)qa->q&U. Здесь ае=7', A<=W,qa, <7pe=Q. Содержательно каждая инструкция интерпретируется как разрешение выполнить некоторые действия, зависящие qt состояния, в котором находится машина, и (вообще Говоря) от обозреваемых головками символов, а также от положения рабочей головки. Именно, инструкция, имеющая в левой части qa и в правой q$, означает, что, находясь в состоянии qa, машина может в случае (i) при а Ф ф сдвинуть входную головку, если в обозре в а ем ой ею ячейке записан символ а, на одну ячейку вправо; в случае (И) уничтожить обозреваемую рабочую ячейку, если в ней записан символ Л, и поместить рабочую головку в ячейку, примыкающую к уничтоженной слева; в случае (Ш) создать непосредственно справа от обозреваемой рабочей ячейки новую ячейку, записать там символ А и переместить туда (рабочую) головку; в случаях (iv) и (v) передвинуть рабочую головку, если она не находится в крайней слева, соответственно в крайней справа ячейке, на одну ячейку влево, соответственно вправо; одновременно машина должна —
§ 1.4] МАШИНЫ ТЬЮРИНГА 43 в любом из описанных случаев — перейти в состояние <7р (которое может и совпадать с qa). Особым образом интерпретируется выполнение инструкции типа (i) при а = ф: в этом случае происходит только перемена состояния, а входная головка остается на месте (как и рабочая). Указанную совокупность действий мы будем называть элементарным шагом (или просто шагом) работы машины. Вполне возможно, что в некоторый момент дкажутся применимыми несколько разных инструкций, так что машина сможет выполнять любую из них «по выбору»; это и есть недетерминированность. Полный набор сведений о том, в каком состоянии находится Э-машина, что записано на лентах и какие ячейки обозреваются головками, мы будем называть ситуацией данной машины. Формально ситуацию можно определить как упорядоченную систему (qa,x'f х", X', X"), где qas=Q, ^еГ, /sF+, X'е= W'\ X" е W'+. Здесь х'х" — цепочка, записанная на входной ленте, х' — часть этой цепочки влево от головки, Х'Х" и X' — то же для рабочей ленты. Ситуацию вида (qx, Л, 4МФ, Л, ф), где х е V*, мы будем называть начальной; ситуацию вида (qf, # х, ф, Л, ф), где qf^Qo и хеУ*, — заключительной; будем употреблять также выражения «начальная х-ситуа- ц и я», «заключительная х-с и т у а ц и я», смысл которых очевиден. Если ситуация S' может быть получена из ситуации 5 применением некоторой инструкции, будем говорить, что S' непосредственно достижима из S (в машине М), и писать S)=S' или S)=S'. Последовали тельность ситуаций С= (S0, Su ..., S„) (n ^ 1) будем называть вычислением (машины М), если S,-_1)=Si для каждого i, 1 ^ i ^ п. Число п называется ся длиной вычисления С. Если существует вычисление машины М, начинающееся ситуацией S и оканчивающееся ситуацией S', мы говорим, что S' достижима из S (в машине М), и пишем S^-S' или S">-S'. м Вычисление, начинающееся начальной х-ситуацией,
44 ОСНОВНЫЕ ПОНЯТИЯ Ггл. i назовем х-в ы числением, вычисление, начинающееся начальной (х-) ситуацией и оканчивающееся заключительной (л:-) ситуацией, — полным (х-) вы числением (машины М), х-вычисление, оканчивающееся ситуацией (qf, #х, ф , Л, #t/), где qt <= Qo, будем называть [х, ^-вычислением (машины М). (Таким образом, полное х-вычисление— это то же самое, что [х, Л]-вычисление.) Если существует полное х-вычис- ление машины М, мы будем говорить, что М допускает цепочку х. Множество цепочек, допускаемых машиной М, мы будем называть языком, допускаемым машиной М, и обозначать L(М). Заметим, что в процессе х-вычисления граничный маркер, записанный в крайней слева рабочей ячейке, никогда не уничтожается, и ни в какой другой рабочей ячейке он появиться не может. Поэтому мы будем, например, говоря «на рабочей ленте записан только символ А», «рабочая лента уничтожается» и т. п., подразумевать: «на рабочей ленте записана цепочка фЛ», «уничтожаются все ячейки рабочей ленты, кроме той, в которой записан символ ф». Полное вычисление начинается и кончается при отсутствии рабочей ленты; входная цепочка к концу полного вычисления должна быть вся прочитана. Если каждой инструкции Э-машины М взаимно однозначно сопоставлен некоторый символ с,-, то цепочка с/ ... с1п, где Cj. — символ, сопоставленный инструкции, выполняемой на i'-м шаге вычисления С = (So, ... ..., Sn), будет называться шифром вычисления С. Вычисление имеет точно один шифр и вполне определяется этим шифром и исходной ситуацией (ср. упражнения 1.10 и 1.11). Будем называть Э-машину М детерминированной (ДЭ-м а ш и н о й), если ее программа удовлетворяет следующим двум условиям: (а) она не содержит двух различных инструкций с одинаковыми левыми частями; (б) если некоторое состояние содержится в левой части инструкции одного из типов (i) — (v), то оно не может содержаться в левой части инструкции другого типа. ДЭ-машина для всякой входной цепочки х имеет не более одного полного х-вычисления.
§ 1.4] МАШИНЫ ТЬЮРИНГА 45 Мы будем говорить, что ДЭ-машина, допускающая язык L, распознает этот язык, если для любой цепочки х во входном алфавите она имеет лишь конечное множество ^-вычислений (попросту говоря, если, начав работать с произвольной цепочкой на входной ленте, машина в конце концов останавливается). Распознающая язык ДЭ-машина существует тогда и только тогда, когда этот язык рекурсивен (см. ниже, замечание к упражнению 1.22,6)). Пусть М — Э-машина с входным алфавитом V и рабочим алфавитом W. Назовем Э-машину М с рабочим алфавитом W aF UW U{d} (d<£V U W) пря м ой одно- ленточной моделью (п. о. м.) машины М, если [х, г/]-вычисление машины М существует тогда и только тогда, когда в машине Й из ситуации (qi, А, #ф, А, #*d) достижима ситуация вида (д/, Л, #ф, 4М, dy), где qf e= Q0. Лемма 1.5. Для любой Э-машины можно построить ее п. о. м. Если при этом исходная машина детерминированная, то и п. о. м. можно сделать детерминированной. Доказательство. Принцип работы Й может быть таким: во «входной зоне» (левее d) и «рабочей зоне» (правее d) рабочей ленты Й функционирует точно так же, как М на входной и рабочей лентах соответственно, но всякий раз, когда М переходит от «входного» шага к «рабочему» или наоборот, рабочая головка машины М будет передвигаться из зоны в зону, предварительно поставив в обозревавшейся перед тем ячейке метку, чтобы найти эту ячейку по возвращении. Ясно, что свойство детерминированности, если машина М им обладает, при таком преобразовании сохраняется. Теорема 1.2. Для любой Э-машины М можно построить ДЭ-машину Mi такую, что L(Mi) = L(M). Доказательство. Пусть Р = {ci, ..., с„} — множество символов, находящееся во взаимно однозначном соответствии с программой машины М. Построим ДЭ- машину Mi с входным алфавитом V и рабочим алфавитом, содержащим V U W U P U {d, е, /}, где V, W — соответственно входной и рабочий алфавиты машины М и d, е, /<£ V U W U Р, работающую следующим образом. Начиная работать в начальной х-ситуации, М\ прежде
46 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I всего переписывает х на рабочую ленту, приписывает справа dfcte, передвигает рабочую головку на граничный маркер и переходит в некоторое специальное состояние q'. Дальнейшая работа Mi состоит в последовательном выполнении «макрошагов», которые могут быть описаны следующим образом. Перед началом «макрошага» машина находится в ситуации (q', ф х, ф, Л, ^fcxdfZe), где Z — некоторая цепочка в алфавите Р. При выполнении «макрошага» Mi функционирует на участке ленты между ф и началом Z, как описанная в доказательстве леммы 1.5 п. о. м. машины М, однако с той разницей, что она производит при этом не любые «М-шаги», а такие, в результате которых получается «М-вычисле- ние» с шифром Z. Для этого головка перед каждым «Л1-шагом» передвигается вправо до символа с,-, стоящего непосредственно вслед за /, «перетаскивает» / вправо через 'этот символ, затем возвращается в ячейку, где следует выполнять очередной «М-шаг» (эта ячейка, разумеется, должна быть ранее помечена), и выполняет его, следуя той инструкции, которая отвечает символу с,, если эта инструкция применима. Если же она неприменима, то f «перетаскивается» влево, пока не окажется перед первым символом цепочки Z; эта последняя заменяется цепочкой, непосредственно следующей за ней в смысле некоторого, раз навсегда фиксированного стандартного порядка на Р*\ участок ленты между d и f («рабочая зона») уничтожается; метка, имеющаяся на одном из символов цепочки х, стирается; рабочая головка становится на граничный маркер, и машина переходит в состояние q\ после чего выполняется следующий «макрошаг». Если машине удалось «протащить» символ f через всю цепочку Z (так что он оказался непосредственно перед е), то различаются два случая, а) Если имитированное на данном «макрошаге» х-вычисление машины М с шифром Z является полным, то рабочая лента уничтожается и машина останавливается, перейдя в состояние, сигнализирующее об успешном окончании работы, — цепочка х допущена, б) В противном случае дальнейшие действия таковы же, как в рассмотренном выше случае столкновения с неприменимой инструкцией,
§1.41 МАШИНЫ ТЬЮРИНГА 47 Ясно, что машина Mi имитирует все ^-вычисления машины М, и если среди них имеется хоть одно полное, то она рано или поздно это обнаружит, а в противном случае будет работать вечно. Возможность обеспечить детерминированность Mt очевидна. Пусть М — ДЭ-машина с входным алфавитом V и рабочим алфавитом W, причем V s W, и f — функция, определенная на некотором подмножестве множества V* и принимающая значения также из V*. Мы скажем, что машина М вычисляет функцию /, если [х, ^-вычисление машины М для любых х, у е V* существует тогда и только тогда, когда у = f(x). Теорема 1.3. а) Для всякой ДЭ-машины, вычисляющей некоторую функцию, можно построить ДЭ-ма- шину, допускающую множество значений этой функции. б) Для всякой ДЭ-машины М можно построить ДЭ-ма- шину, вычисляющую функцию с множеством значений ЦМ). Доказательство, а) Пусть ДЭ-машина М с входным алфавитом V и рабочим алфавитом W вычисляет функцию /. Построим Э-машину Ми работающую так: сначала на рабочей ленте записывается произвольная цепочка z e V* и к ней приписывается справа символ йф V [] W; потом Mi работает как п. о. м. машины М, после чего на рабочей ленте оказывается записанной цепочка zdf(z) (если только f(z) определена; в противном случае Mi работает вечно); затем входная цепочка х (которая до этого не читалась) сравнивается с цепочкой f(z); если окажется х = f(z), и только в этом случае, рабочая лента уничтожается, и машина переходит в заключительное состояние. Ясно, что Mi допускает как раз множество значений /. Остается воспользоваться теоремой 1.2. б) ДЭ-машина Mit которая сначала переписывает входную цепочку на рабочую ленту, затем работает как п. о. м. данной машины М и, наконец, в случае успешного окончания работы уничтожает «разграничитель» d, будет вычислять функцию, принимающую значение х для любого ле!(М) и не определенную вне L(М). Выясним теперь взаимоотношение между Э-машина- ми и грамматиками.
48 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I Будем говорить, что грамматика Г и Э-машина М эквивалентны, если L(T) =L(M). Аналогично определяется эквивалентность двух Э-м а ш и н. Теорема 1.4. а) Для всякой Э-машины можно построить эквивалентную ей грамматику, б) Для всякой грамматики можно построить эквивалентную ей Э-ма- шину. Доказательство, а) Пусть М — данная Э-машина с входным алфавитом V\ и Mi — ее п. о. м. По Л14 легко построить машину М2, имеющую такие два состояния q' и q", что при х е V* из ситуации(д', Л, фф, Л, ф х) тогда и только тогда достижима ситуация (q", Л, # ф, Л, #), когда ле! (М). Построим теперь грамматику Г следующим образом. 1) Основной словарь Г есть V. 2) Вспомогательный словарь Г есть (W—V) U Q U {/}, где W и Q — соответственно рабочий алфавит и множество состояний машины М2 и / ф V U W U Q- 3) Начальный символ Г есть /. 4) Схема Г состоит из правил /-+ф<7, фq' —*■ Л и правил, определенным образом сопоставляемых инструкциям машины М2, а именно: каждой инструкции 8qa-+q$ типа (И) сопоставляется правило q$-*bqa; каждой инструкции qa.^>~bq$ типа (Ш) —правило 8q^-^qa; каждой инструкции Qa-*Q?i Л типа (iv) — всевозможные правила вида q$y ~* УУа, где у е W, и каждой инструкции вида 9а -»9в П типа (v)—всевозможные правила вида Y(7B_>(7aY. гДе y^W. Таким образом, схема грамматики Г представляет собой «обращение» программы М2; поэтому, какова бы ни была цепочка х е V*, в грамматике Г тогда и только тогда можно вывести ф q'x из Ф q", или, что то же самое, х из /, когда в М2 ситуация {q", Л, фф, Л, #) достижима из (q', Л, фф, Л, фх). Отсюда L(T) =L{M). б) Пусть Г — (V, W, I, R) — произвольная грамматика. Построим Э-машину М с входным алфавитом V и рабочим алфавитом V [) W, которая будет сначала переписывать входную цепочку на рабочую ленту, затем производить на рабочей ленте произвольный вывод в Г в о'братном порядке, а потом в случае, когда в результате такого «обратного вывода» на рабочей ленте останется только символ /, уничтожать его и переходить
§ 1.4] МАШИНЫ ТЬЮРИНГА 49 в заключительное состояние; при этом можно сделать так, чтобы ни в каком другом случае заключительное состояние не наступало. Очевидно, L{M) = L(T). Подведем итог. В силу только что доказанной теоремы класс языков, порождаемых грамматиками, совпадает с классом языков, допускаемых Э-машинами. Этот последний ввиду теорем 1.2 и 1.3 совпадает с классом множеств значений функций, вычисляемых ДЭ-машина- ми. Но легко видеть, что ДЭ-машинами вычисляются в точности те же функции, что и обычными одноленточ- ными машинами Тьюринга (упражнение 1.20), т. е. частично рекурсивные функции *); множества же значений частично рекурсивных функций суть рекурсивно перечислимые множества. Итак, из теорем 1.2—1.4 вытекает Теорема 1.5. Класс языков, порождаемых грамматиками, совпадает с классом рекурсивно перечислимых языков. Теперь мы можем разъяснить сделанное в § 1.2 утверждение, что «порождающий» способ описания языков не уступает по силе никакому другому эффективному способу. Именно, в силу доказанных теорем это утверждение немедленно вытекает из тезиса Черча, согласно которому всякая функция, допускающая вычисление каким-либо эффективным в интуитивном смысле способом, частично рекурсивна. Вместе с тезисом Черча наше утверждение носит, разумеется, не математический, а естественнонаучный характер. Замечание. Из теоремы 1.5 и известной теоремы Поста (см., например, [Юеепе 1952], стр. 237 русского перевода), в силу которой множество тогда и только тогда рекурсивно, когда оно само и его дополнение рекурсивно перечислимы, следует—поскольку существуют нерекурсивные рекурсивно перечислимые множества — замечание, сделанное в конце § 1.2. *) Обычно в курсах теории алгоритмов с помощью машин Тьюринга определяются только числовые частично рекурсивные функции, а «словарные» частично рекурсивные функции вводятся с помощью нумерации цепочек. Не составляет большого труда доказать равносильность такого определения используемому нами «непосредственному» (точные формулировки см. в упражнении 1.21).
50 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. Г Упражнения 1.1. Подсчитать число вхождений подцепочек в цепочку длины п. 1.2. Доказать, что для произвольных цепочек фиф тогда и только тогда ф^ = фф, когда существуют цепочка со и числа т, п = 0, 1, ... такие, что ф = ев"1, if = со". 1.3. Пусть V = {а\, ..., ак} — некоторый словарь. Сопоставим каждой цепочке со е V* число v(co) следующим образом: v(A) = 0; \(а{ ...а1 ] = 4ич',+ ... + k2 • ln_2 + k -in-.x + in. (He смешивать с обычным представлением натурального числа в системе счисления! В чем разница?) Показать, что v — взаимно однозначное отображение V* на N = {0, 1, ...} и что v(q>) <v(^>) тогда и только тогда, когда ф предшествует if в смысле стандартного порядка, отвечающего пересчету а\ ак. 1.4. а) Доказать, что L(LX U L2) = LLX (J LL2, (I, U L2)L = = UL U L2L. б) Имеют ли место аналогичные тождества для пересечения? 1.5. Сформулировать строгие (индуктивные) определения многочлена и регулярного выражения. 1.6. Представить с помощью бескоэффициентных регулярных выражений от языков [й{], ..., {а„}, {Л}: а) множество цепочек, содержащих вхождения данной непустой цепочки со = ai ... а{ ; б) множество цепочек, начинающихся (оканчивающихся) вхождением данной непустой цепочки со = а, ... а, ; в) множество цепочек, не содержащих вхождений цепочки г) множество цепочек, содержащих ровно k вхождений цепочки 1.7. Показать, что для всякого регулярного выражения Ф(1,, ..., 1к) найдется такое выражение ф (Е,, ..., lk) = =*f{g\{lv •••> h)< ■■■• elfa, ■■-, Eft), E,. ••-.!*) (s>0), где /, gi> • ••> gs— многочлены, что для любых k языков Lj, ..., Lft, каждый из которых содержит пустую цепочку, <p(Llt ..., Lk) = = г|) (Z.,, ..., Lft). При этом, если ф не содержит коэффициентов, то это же верно для /, £,, ..., g$. 1.8. Выразить объединение, умножение и итерацию языков через подстановку. 1.9. Для того, чтобы каждому выводу в грамматике Г соответствовал единственный размеченный вывод, необходимо и достаточно, чтобы схема Г не содержала правил ф1->г|>ь Фг -> i|>2> Удовлетворяющих одному из следующих двух условий: (i) ЗсоЗсо' (сосо'=И=Л & ф2 = соф,©' & г|>2 = соф,©'); (ii) Зф{Зф£Э?30[ф, = ф(£&ср2= = W2 & (Ф[ = bQ & Ч>2 = Щ v Ь = fi9 & Ь = 9(Рг) & Ф1Ф2 ^ л]. Доказать,
УПРАЖНЕНИЯ Б1 1.10. Назовем характеристикой вывода [Огоцкий 1967] *) последовательность применяемых в этом выводе правил; аналогично для размеченного вывода. (Размеченный вывод имеет, очевидно, единственную характеристику.) Показать, что в грамматике тогда и только тогда существуют различные размеченные выводы с одинаковыми характеристиками, отвечающие одному и тому же выводу, когда ее схема содержит правило вида Фт -*■ Ф" («, я = 0, 1, ...). 1.11. Могут ли полные выводы в одной и той же грамматике, оканчивающиеся разными цепочками, иметь одинаковые характеристики? 1.12. Назовем вывод в грамматике Г= (V, W, I, R) приведенным налево, если на каждом его шаге соответствующее правило применяется к самому левому вхождению своей левой части (при подходящей разметке вывода). Множество цепочек из V*, выводимых в Г из / с помощью выводов, приведенных налево, обозначим Lj[ (Г). Показать, что: а) для произвольной грамматики Г можно построить **) такую грамматику Г', что L(T) =/.л(Г'); если при этом Г — НС-грамматика, то и Г' можно сделать НС-грамматикой; б) если Г — Б-грамматика, то Ь(Г) = Ьл (Г). 1.13. Назовем грамматикой со стоп-правилами упорядоченную четверку А = (V, I, R, R'), где V — конечное множество, / е V, R — конечное множество правил такого "же вида, как правила обычной грамматики, и R' — подмножество R («множество стоп-правил»). Вывод в А (вывод определяется, как для обычной грамматики) назовем 1-выводом, если в нем применяются только правила из R — R' и к его последней цепочке никакое правило из R не применимо, и 2-выводом, если на всех его шагах, кроме последнего, применяются правила из R — R', а на последнем — правило из R'. Множество цепочек, выводимых из / с помощью 1-(2-) выводов, обозначим Z-i(A) (Z.2(A)). Показать, что: а) для любой грамматики Г можно построить такие грамматики со стоп-правилами А, Аь Д2, что L(T) = /-i(A) UZ.2(A) = /-i(Ai) = = Z.2(A2); б) для любой грамматики со стоп-правилами А можно построить такие грамматики Г, Гь Г2, что /-i(A) U L2(A) =/.(Г), Z-i(A) = = 1(Г,), Z.2(A) =L(T2). [Fris 1965]. 1.14. Построить А-грамматики, порождающие: а) множество всевозможных цепочек в словаре К = {аь ... ..., я*}, содержащих вхождения данной цепочки х = а{ ... а1 (соответственно содержащих не менее п вхождений х, начинающихся вхождением х, оканчивающихся вхождением х, не содержащих вхождений х, содержащих ровно п вхождений л:); б) язык V+ = {* | х <= V+, | * | > л}; в) язык C'L0, где L0 — произвольный конечный язык в V; *) В этой работе используется термин цепочка вывода. *) См. сноску на стр. 32.
52 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. I г) язык V*i = {х | х е V+, | х | = s« + /, «' = 0, 1, ...} (s, / > 1); д) язык co^cog" .•• и^, где coj юга — произвольные непустые цепочки в V. 1.15. Построить Б-грамматики, порождающие: а) множество правильно построенных формул логики высказываний в обычной «скобочной» записи (с фиксированным набором переменных); б) то же для логики предикатов; в) то же, что а), для бесскобочной записи; г) то же, что б), для бесскобочной записи; д) язык {апЬт | я, т = 1, 2, ...; п < т); е) язык {ххЬх2 | ху х2 е {alt .... ак}*; \ х{ | < | х2 |); ж) язык {аР+тЬт+,1сп+р | т, п, р = 1, 2, ...}; з) язык (а '6 ' a pb рс ld ' с Pd Р\р, пц, п{ = -1, 2, ...}; и) «язык Дика» Dk — множество всех цепочек в алфавите la., ..., а., а. аЛ, равных единице в свободной группе со свободными образующими а., ..., а. (т. е. таких, которые могут быть преобразованы в Л последовательным вычеркиванием вхождений подцепочек вида aiui и aiai (ср. ниже, § 6.5). 1.16. Для каждого из языков упражнений 1.14 и 1.15 построить допускающую его Э-машину. 1.17. Построить ДЭ-машины, распознающие следующие числовые множества (в простейшей записи): а) множество четных чисел; б) произвольную арифметическую прогрессию; в) множество полных квадратов. 1.18. Построить ДЭ-машины, вычисляющие функции: а) /(■*) = xdx (d — фиксированный символ); б) f(x) =х/хй (хо — фиксированная цепочка). 1.19. Пусть v — некоторая стандартная нумерация словаря V и Ь ф]/. Построить ДЭ-машины, вычисляющие следующие функции: а) v(*); б) v-'(«): в) v-4v(Jt-)+l); г) (f (г), принимающую для каждой цепочки вида xby, где х, у t= V, значение v_I (v (x) + v (у)); д) g (г), принимающую для каждой цепочки вида xby, где х, у е V, значение v-1 (v (x) • v (у)). 1.20. Машину Тьюринга с неэластичной рабочей лентой (Н-м а ш и н_у) можно определить так же, как Э-машину, с той только разницей, что рабочий алфавит дополняется «пустым символом» X и инструкции видов (ii) и (Hi) заменяются инструкциями вида (vi) Aqa -> Bq^, где qa,q^sQ, А, В е W U {Ц; такая инструкция означает замену в обозреваемой ячейке рабочей ленты символа А на символ В (без сдвига головки) и переход из состояния qa в состояние <7р.
УПРАЖНЕНИЯ 53 Одноленточная машина Тьюриига с неэластичной лентой (ОН-м а ш и н а) отличается от Н-машины отсутствием входной ленты, входной головки, входного алфавита и инструкций типа (i). Детерминированные Н- и ОН-м а ш и н ы (ДН-м а- ш и н ы, ДОН-м а ш и н ы) определяются очевидным образом. (Машины Тьюринга, обычно рассматриваемые в курсах теории алгоритмов; — это ДОН-машины со следующим дополнительным ограничением: каково бы ни было незаключительное состояние q, программа машины либо содержит инструкцию (типа (iv) или (v)) с левой частью q, либо для каждого А е W содержит инструкцию (типа (vi)) с левой частью Aq.) Ситуация, вычисление и ^-вычисление для Н-машины определяются точно так же, как для Э-машины. Начальная и заключительная ^-ситуация тоже определяются аналогично тому, как это делается для Э-машины, но последней компонентой вместо # будет #Я\ где k — произвольное натуральное число, ^-вычисление и полное х-вычисление можно определить теперь так же, как для Э-машины; [я, (/]-вычислением (у е W*) естественно назвать .«-вычисление, оканчивающееся ситуацией вида (<ь, #*, ф,Л, # yV5) (<ь <= QQ) Допускание языка и вычисление функции Н-машиной определяется так же, как для Э-машины. Для ОН-машины ситуация определяется как тройка (qa> x\ х") (обозначения сохраняют прежний смысл); язык LsW* допускается, если вычисление, начинающееся ситуацией вида (<7ь Л, xW) и оканчивающееся ситуацией вида (qt, Л, Xй) (?/ s Q0) существует тогда и только тогда, когда х S L; ДОН-машина вычисляет функцию g: L-+Ii"(LeP), если вычисление, начинающееся ситуацией вида (<7i, Л, xW) и оканчивающееся ситуацией вида (qt, Л, уХи) (qt e Qo), существует тогда и только тогда, когда У = g{x). а) Перенести на Н- и ОН-машины теорему 1.2. б) Перенести теорему 1.3 на ДН- и ДОН-машины, а также на ДОН-машины с указанным выше дополнительным ограничением. в) Показать, что классы языков, допускаемых Э-, Н-, ДН-, ОН- и ДОН-машинами, а также ДОН-машинами с вышеуказанным ограничением, совпадают, причем для всякой машины каждого из перечисленных классов можно построить эквивалентную ей машину любого другого класса. 1.21. Назовем Э-машину числовой, если ее входной алфавит состоит из единственного символа |. Язык, допускаемый (функцию, вычисляемую) числовой Э(ДЭ)-машиной, назовем числовым рекурсивно перечислимым множеством (ч. р. п. м.), соответственно числовой частично рекурсивной функцией (ч. ч. р. ф.). Для произвольного алфавита V назовем язык isf нумерационно рекурсивно перечислимым множеством (н.р. п. м.) и функцию f: Т-*■ V* (Г g (/*) нумерационно частично рекурсивной функцией (н. ч. р. ф.), если существует такая стандартная нумерация v алфавита V, что для некоторого ч. р. п. м. V имеет место L' = v(L) —соответственно для некоторой ч. ч. р. ф. f имеет место f(x) ез v_1(f (v(*))) (знак ss означает совпадение областей определения и совпадение значений в каждой точке общей области определения).
54 ОСНОВНЫЕ ПОНЯТИЯ [ГЛ. 1 Показать, что: а) понятия н. р. п. м. и н. ч. р. ф. не зависят от выбора стандартной нумерации; б) понятие н. р. п. м. не изменяется при расширении алфавита (точнее; если L s V* и V S V, то свойство языка L быть н. р. п. м. не зависит от того, относительно которого из алфавитов V и V определяются н. р. п. м.); в) язык (функция) тогда и только тогда является н. р. п. м. (н. ч. р. ф.), когда он(а) допускается (вычисляется) некоторой Э-ма- шиной. 1.22. Показать, что: а) для всякой ДЭ-машины, распознающей язык L, можно построить ДЭ-машину, допускающую язык CL; б) если имеются ДЭ-машины, допускающие языки L и CL, то по ним можно построить ДЭ-машину, распознающую L. Замечание. Отсюда и из теоремы Поста следует, — поскольку, как уже было отмечено, ДЭ-машины допускают в точности рекурсивно перечислимые множества, — что существование распознающей язык ДЭ-машины равносильно рекурсивности этого языка.
ГЛАВА 2 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ § 2.1. Сигнализирующие функции грамматик Одним из наиболее существенных вопросов, возникающих при изучении порождающих грамматик (как в теоретическом, так и в прикладном аспекте), является вопрос об оценке сложности их работы, т. е. сложности выводов. Для оценки сложности выводов в грамматиках используются так называемые сигнализирующие функции, введением которых мы сейчас и займемся. Пусть /(Г, D, i) —вычислимая функция, принимающая в качестве значений натуральные числа и определенная на всевозможных тройках (Г, D, i), где Г = = (V, W, I, R) — грамматика (причем мы считаем, что основные и вспомогательные словари всех рассматриваемых грамматик содержатся в некоторых счетных множествах Е и Ei соответственно), £> = (wo, coi, ..., (On) — вывод в Г и i = 0, 1, ..., п. Для произвольной цепочки х е L(T) и произвольного вывода D = ((о0, wi (on) цепочки х из / в Г положим Г(Г, D, x)= max /(Г, D, i). Далее, для любой цепочки хе£(Г) положим Р(Г, х) = minf (Г, D, х), где минимум берется по всем выводам цепочки х из / в Г. Наконец, положим F{T,n)= max P(T, x); xst(r), \x\<n для тех п, для которых не существует таких xeL(T), что \х\^ п, полагаем F(T,n) = 0.
бв СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 Так определенную функцию F(T,n) мы будем называть квазисигнализирующим оператором для грамматик, а функцию Fr(n), получаемую из F(T,п) фиксированием переменной Г, — квазисигна- лизирующей функцией (или просто квази- сигнализирующей) типа F грамматики Г Таким образом, квазисигнализирующий оператор F(T, n) сопоставляет каждой грамматике Г числовую функцию Ft (n). Если участвующая в определении оператора функция /(Г, D, I) выбрана так, чтобы она в каком-то смысле характеризовала «сложность» цепочки со,- по отношению к ее «месту» в выводе D, то функцию f(T, D, х) —наибольшую «/-сложность» входящей в вывод цепочки — естественно считать мерой /-сложности вывода; тогда F(T, x) есть /-сложность самого простого вывода цепочки х, а F(T, п) —наименьшее число N такое, что все принадлежащие L(T) цепочки длины, не превосходящей п, можно вывести с /-сложностью, не превосходящей N. Таким образом, значение оператора F для конкретной грамматики, т. е. ее квазисигнализирую- щую типа F, можно считать определенной характеристикой сложности выводов в данной грамматике. Однако действительно пригодные для произвольных грамматик характеристики сложности выводов доставляются лишь теми квазисигнализирующими операторами, которые удовлетворяют некоторому специальному условию (его значение станет нам ясно из дальнейшего) . Это условие — рекурсивность графика соответствующей функции Р(Т, х), т. е. существование алгоритма, позволяющего по любой тройке (Г, х, р), где Г — грамматика, х — цепочка в ее основном словаре и р — натуральное число, узнать, выполняется ли равенство Р(Т, х) = р. Квазисигнализирующий оператор F(T, n), удовлетворяющий этому условию, мы будем называть сигнализирующим оператором для грамматик, а соответствующие квазисигнализирующие — сиг- на ли-зирую щи м и (функциями) типа F. Может оказаться, что некоторый квазисигнализирующий оператор, не являющийся сигнализирующим в классе всех грамматик, становится таковым в некотором более частном классе. Точнее: пусть F(T,n) —квазисигнализирующий оператор, £Г — некоторый класс грамма-
§ 2.1] СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ ГРАММАТИК 67 тик и F3" (Г, п) — функция, индуцируемая оператором F на £Г. Если соответствующая функция Рт имеет рекурсивный график, то мы будем называть FT(T, n) относительным сигнализирующим оператором в классе £Г, а функцию Fr (n), получаемую из F*(Г, ^фиксированием переменной Г, — сигнализирующей (функцией) типа F грамматики Г относительно £Г. Мы будем рассматривать следующие основные типы квазисигнализирующих. 1. Временная сложность (обозначение Ту (п)): соответствует случаю / ( Г, D, i) = i. 2. Емкость Sr(n): получается при /(Г, D, i) = = \m\- 3. Левая глубина ®/${п): /(Г, D, i) — увеличенное на единицу расстояние от самого левого вхождения в (о, вспомогательного символа до правого конца ац; точнее, если a)t = XiAir\l, где ^еГ и AteVu то f{T,D,i) = \iu\+U если й,еГ, то /(Г, D,i) = 0. 4. Правая глубина ^"(п): определяется симметрично ^г(п). 5. Разброс Dr(n): /(Г, D, i) есть длина наименьшей подцепочки (оь содержащей все вхождения вспомогательных символов, если таковые имеются; в противном случае /(Г, D, г) = 0. 6. Активная емкость /г (п); /(Г, D, i) есть число вхождений вспомогательных символов в ац. Соответствующие квазисигнализирующие операторы будут обозначаться Т, S, Щл, Щп, D, /*). Содержательный смысл функций 7г и St ясен: первая характеризует сложность вывода числом его шагов, вторая — объемом затрачиваемой «памяти» (носителями «памяти» в выводе естественно считать его промежуточные цепочки). Легко видеть, что операторы Г и 5 сигнализирующие. Действительно, пусть заданы грамматика Г, цепочка х и натуральное число р. Чтобы узнать, имеет ли место равенство f (Г, х) = р, можно поступить следующим образом. Выпишем все полные выводы в Г, *) Т, S, D, I — от time, space, dispersion, index (индекс — другое название активной емкости, см., например, [Стойкий 1969]).
58 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 1 имеющие длину р. Если ни один из них не оканчивается цепочкой х, то заведомо Т (Г, х) ф р. В противном случае выпишем все полные выводы в Г, длины которых меньше р. Если среди этих выводов найдется хотя бы один, оканчивающийся цепочкой х, то Т(Г, х) Ф р, а если таких выводов нет, то f (Г, х) = р. Совершенно аналогично проверяется выполнение равенства 5 (Г, х) = = р; при этом вместо длины вывода (wo, ..., con) рассматривается число max | со,- I и берутся не произволь- 0<t<n ные выводы, а только бесповторные (иначе выводов с данным значением max | со; | могло бы оказаться бес- 0 < I < п конечно много). Ограничиться бесповторными выводами можно в силу леммы 1.3 и того, что при выбрасывании из вывода каких-либо цепочек число max |(o,| не о< г<« увеличивается. Что касается операторов Щл, Щп, D, I, то ни один из них сигнализирующим не является. Чтобы показать это, рассмотрим произвольно грамматику Г0 = = (V, W, /о, Яо) такую, что V = {|} и ЦГ0) = М0 — нерекурсивное множество целых положительных чисел. Положим Г, - {{a} []V[]W, {/, Ь), I, R0 U {/ -> /о, I -* Ь, Ь-^аа}), где /, а, Ь ф. V, U W. Добавим теперь к схеме грамматики Г, правила /-*/', Г-*1'АА, Г-+ВВ, ВВ-+аа, аА^аа, где /', А, В — новые символы, которые будут считаться вспомогательными. Полученная грамматика Гг порождает язык L(Ti) \]{а2п\п> 1, 2, ...}, но при /1бСМа имеем Щл (Г2, а2п) = Щп (Г2, а2п) = б(Т2, а2п)=Т{1\, а2п)= == 2п, а при леМо ни одна из этих величин не превосходит п. Поэтому предположение о рекурсивности, например, графика функции 7(Г, х) немедленно приводит к противоречию, так как из него вытекает существование алгоритма, позволяющего для любого п = 1, 2, ... узнать, выполняется ли равенство 7(Гг, а2") = 2п, т. е. принадлежит ли число п множеству СМ0. Впрочем, для некоторых важных классов грамматик индуцируемые операторами <ул, Щп, D, I относительные операторы будут сигнализирующими. В частности, это
§ 2.1] СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ, ГРАММАТИК 59 имеет место для НС-грамматик (см. § 3.3); именно ради применения к НС-грамматикам (в основном даже к Б- грамматикам, см. гл. 7) мы и рассматриваем указанные операторы. Для произвольной грамматики Г = (V, W, I, R), порождающей бесконечный язык, имеют место неравенства (1) Sr(n)>max(n, 1); Гг(«)>1; /г (п) < DT (п) < <у? (п) < Sr (n) < dTv (л) + I, /г (п) < DT {п) < Щ^ (п)< 5Г (n) < dTv (n) + I; ,sr(«)+i . (3) ГГ(я)<" fe_T . Здесь d = max I I Ф I — I Ф 11 и k — мощность множе- ства V\}W. Неравенства (1) и (2) непосредственно следуют из определений (для получения последнего из неравенств (2) надо еще воспользоваться тем очевидным фактом, что ни на каком шаге вывода цепочка не может удлиниться более чем на d). (3) вытекает из леммы 1.3, поскольку для бесповторного вывода (wo, .-., con) такого, что max 1 сог 1 == /, число п во всяком случае меньше числа различных цепочек в словаре V U W длины, не kl+l -1 большей /, а это число равно . .—. Отметим следующее свойство сигнализирующих. Лемма 2.1. Для произвольной грамматики Г следующие утверждения равносильны: (1) язык L(Y) рекурсивен; (2) любая сигнализирующая грамматики Г вычислима*); (3) любая сигнализирующая грамматики Г мажорируется **) подходящей вычислимой функцией; (4) хотя бы одна сигнализирующая грамматики Г вычислима; (5) хотя бы одна сигнализирующая граммати- *) Поскольку сигнализирующая любой грамматики есть всюду определенная функция, вычислимость здесь и далее можно заменить общей рекурсивностью. **) Мы говорим, что функция g(n) мажорируется функцией h(n), если для каждого я, для которого g(n) определена, h(n) также определена и g(n) ^ А (л).
60 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 ки Г мажорируется вычислимой функцией. При этом по алгоритму, требуемому каким-либо одним из перечисленных утверждений, можно построить алгоритмы, требуемые остальными. - Доказательство. Достаточно доказать импликации (1) zd (2) и (5) гэ (1). Пусть язык L(T) рекурсивен и Ft (п) —какая-либо сигнализирующая Г. Для произвольной цепочки х в основном словаре Г мы можем узнать, принадлежит ли она L(T), и в случае положительного ответа найти значение Р(Г, х), последовательно проверяя равенства Р(Т, х) = 0, Р(Г,х) = 1 и т. д. Таким образом, функция F (Г, х) (с фиксированной Г), а следовательно и F(T,n), оказывается вычислимой. Пусть теперь некоторая сигнализирующая Ft (n) грамматики Г мажорируется (всюду определенной) вычислимой функцией h(n). Тогда для каждой цепочки ^еЦГ) имеет место F(T, x) ^.h{\x\)\ в тоже время при хфЬ{Т) функция Р(Т,х) не определена. Поэтому iet(r) тогда и только тогда, когда выполняется хотя бы одно из равенств Р(Т,х) = 0, ..., Р(Г,х) = h(\x\), а они поддаются проверке в силу рекурсивности графика Р(Т,х). Заметим, что если для некоторого сигнализирующего оператора F(T,x), некоторой вычислимой функции h(n) и некоторого класса грамматик &~ имеет место F(T,n)^. h(\x\), какова бы ни была грамматика Ге?", то указанный только что метод доказательства импликации (5) гэ (1) дает единый алгоритм, позволяющий для любой грамматики Fef и для любой цепочки х в основном словаре этой грамматики распознать, принадлежит ли х языку L(T). В дальнейшем нам будут полезны следующие обозначения. Пусть °Г — некоторый класс грамматик, F — квазисигнализирующий оператор и § — класс числовых функций. Тогда через 9?%{{Г) мы будем обозначать класс языков, порождаемых такими грамматиками класса 3~, у которых квазисигнализирующие типа F мажорируются какими-либо функциями класса 3. Если 3 состоит из одной функции /, будем вместо &% {ST) писать Я?1 (&~). Кроме того, вместо Й'з(Г) (Г — класс всех грамматик, см стр. 30) мы будем писать Я?\,
§ 2.1] СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ .ГРАММАТИК 61 Наконец, Lk(T), где Г — грамматика, F — квазисиг- нализирующий оператор и k — натуральное число, будет означать множество цепочек xeL(T), удовлетворяющих условию f (Г, х) sg: k. Замечание. Обратившись к конструкции, примененной в доказательстве леммы 1.4, легко увидеть, что для фигурирующих там грамматик Г и Г' имеют место соотношения Sr'(rt) = Sr(rt), Гг(п)<йГг(п), где k — постоянная, зависящая от Г (и допускающая эффективное вычисление). Действительно, если D — полный вывод цепочки х в Г и D' — соответствующий полный вывод х в Г', то максимальные длины цепочек в D и в D' совпадают, а длина самого вывода D' равна сумме длины D и длины х; но длина х не превосходит длины D, умноженной на максимум длин правых частей правил Г. Нам понадобится также Лемма 2.2. Для произвольной грамматики Г можно построить эквивалентную ей грамматику Г", удовлетворяющую следующим условиям: а) V не имеет правил с пустой левой частью, б) Для любого полного вывода D в Т, оканчивающегося цепочкой х, можно построить равносильный ему полный вывод D' в Г", отличающийся от D только тем, что на тех местах (кроме последнего, если х = Л), на которых в D стоит Л, в D' стоит цепочка из одного символа Е, не встречающегося в остальных цепочках D. При этом D' можно разметить так, чтобы при х Ф Л правые части всех применяемых правил были непусты, а при х = Л правило с пустой правой частью применялось только на последнем шаге. Если D — упорядочиваемый вывод, то D' — также упорядочиваемый вывод. Обратно, любой вывод в V можно получить из некоторого вывода в Г указанным способом. в) Sr(n) = S?(n); ТГ(п) = ТГ(п). Если А ф: L (Г), то можно сверх сказанного потребовать, чтобы а') Г' не имела правил с пустой правой частью. Доказательство. Пусть Г = ( V, W, I, R). Каждому правилу из R вида Л -*■ i|v соответственно <р =*■ Л,
62 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 сопоставим всевозможные правила а -*■ аф и а —► фа, соответственно аф—> а, фа —> а, где а е V U W, a также правило Е —► ф, соответственно ф—*£, где £ — символ; не входящий в V U W. Присоединим к W символ Е и к Я — все новые правила; одновременно удалим из R все правила вида Л—*ф. Полученная грамматика Г' удовлетворяет условию а). Выполнение условия б) легко проверяется непосредственно; условие в), равно как и эквивалентность Г и Г', следует из б). Наконец, в силу а) и б) при АфЬ(Т) из схемы Г' можно удалить правила вида ф-*Л, что дает а'). § 2.2. Сигнализирующие функции машин Тьюринга Пусть f(M,C,i)—вычислимая функция, принимающая в качестве значений натуральные числа и определенная на всевозможных тройках (М, С, i), где М — Э-машина, С = (s0, Si, ..., s„) —вычисление машины М и i = 0, 1 п. (Алфавиты и множества состояний всех рассматриваемых машин считаем содержащимися в некотором множестве Е.) Для произвольной цепочки jteL(M) и произвольного полного х-вычисления С = = (s0, Si, ..., s„) машины М положим f (М, С, х) = = max f(M,C, i). Для любой цепочки xeL(M) по- ложим F(M, x) = minf(M,C,x), где минимум берется по всем полным х-вычислениям машины М. Наконец, положим F(M, n)= max F(M, x); для тех п, для которых не существует таких xeL(r), что |x|s£; п, полагаем F(M, п) = 0. Так определенную функцию F(M, n) мы будем называть квазисигнализирующим оператором для Э-машин, а функцию FM(n), получаемую из F(M,n) фиксированием М,—ква з исигна л из и р ую- щей (функцией) типа? машины М. Если М — ДЭ-машина, то можно определить FM(n) непосредственно как max f(M, С, х), поскольку в этом случае цепочка x^L(M) имеет единственное полное вычисление. В случае, когда график функции Р(М, х) рекурсивен, мы будем называть соответствующий оператор Р(М,п)
§ 2.2] СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ МАШИН ТЬЮРИНГА 63 сигнализирующим оператором для Э-м а- шин и функцию FM{n)—сигнализирующей (функцией) типа/7 машины М. Нас будут интересовать два типа сигнализирующих функций Э-машин: время работы — обозначение Тм(п) — и емкость — обозначение SM(n). При определении этих функций в качестве f(M,C,i) берется соответственно число i и длина рабочей ленты в ситуации Sj (т. е. число ее ячеек, не считая ячейки, занятой граничным маркером). Тот факт, что соответствующие операторы действительно являются сигнализирующими, устанавливается точно так же, как для грамматик (§ 2.1). Аналогично неравенствам (1), (2), (3) из § 2.1 нетрудно получить следующие неравенства (доказательство предоставляется читателю): (10 Тм(п)^п + 1, (20 sM(n)^±(TM(n)-(n + l)), SM(n)+l (30 TM(n)<r(n + l)(SM(n) + l)- k_x , где k, г — мощности рабочего алфавита и множества состояний машины М соответственно. В главе 1 (теорема 1.2) мы доказали, что для каждой Э-машины М можно построить ДЭ-машину Mi такую, что L(Mi) = L(M). Ясно, что при «детерминиза- ции» машины время вычисления и число используемых ячеек будут, вообще говоря, расти. Просмотр конструкции, примененной в доказательстве теоремы 1.2, дает возможность оценить этот рост. Именно, пусть xeL(M), и при этом то полное х-вычисление С машины М, имитацией которого заканчивается (единственное) полное х-вычисление Ci машины Mi, имеет длину t, а максимальная длина рабочей ленты в вычислении С равна s. Соответствующие величины для вычисления Ct обозначим ti и s^ На каждом «макрошаге» вычисления d имитируется некоторое х-вычисление машины М, длина которого t' не превосходит t; поэтому длина участка рабочей ленты между d и началом Z на данном макрошаге никогда не будет больше t (в начале макрошага она равна 0 и на каждом «М-шаге» может возрасти разве что на 1), а длина Z в точности равна f. Отсюда
64 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 si ^ 1*1 + 2^ + 3. Далее, каждый макрошаг состоит из f «М-шагов», каждый из которых требует не более 2(|х| + 2f + 3 + D) элементарных шагов машины Mi (D — постоянная; при выполнении сМ-шага» головка должна «прогуляться» из начала цепочки длины не более |jc|+2r + 3 в ее конец и обратно, выполнив «по дороге» ограниченное число специальных операций — собственно «М-шаг», перенос метки и т. п.); после выполнения последнего «М-шага» для завершения макрошага может понадобиться еще не более |x|-f-2^' + 3 + + £>i элементарных шагов (£>i — постоянная). Всех макрошагов будет не больше, чем различных цепочек в hi+[-\ алфавите Р длины, не превосходящей t, т. е. . . ; наконец, до начала первого макрошага машина должна сделать 2(|х|+4) шагов. Это дает U ^ А№+Ч(В^-\- + В21 х | + Bs), где А, Ви В2, Bs — постоянные. Отсюда непосредственно следует Лемма 2.3. Для любой Э-машины М можно построить ЛЭ-машину Mi, допускающую язык L(M) и такую, что ТмМ < AhT»ln)+l • Тм(п) ■ {BJM{n) + В2п +В3), SMl(n)^2TM(n) + n + 3, где h — число инструкций машины М и А, Ви В2, Вз — постоянные, зависящие от М. § 2.3. Ускорение и сжатие выводов. Связь между сигнализирующими грамматик и машин В построениях этого параграфа важную роль будет играть «лемма о сцеплении», которую мы сейчас сформулируем и докажем, введя предварительно! понятие сцепленной грамматики. Грамматика называется сцепленной, если в каждом ее размеченном полном выводе каждый следующий шаг зацеплен с предыдущим. Лемма 2.4 (о сцеплении). Для произвольной грамматики Г можно построить эквивалентную ей сцепленную грамматику Г" такую, что Sr(n) = Sr(n), ТГ'(п)<ЬТГ(п),
§ 2.3] УСКОРЕНИЕ И СЖАТИЕ ВЫВОДОВ 65 где k — постоянная, зависящая от Г (и допускающая эффективное вычисление). Доказательство. Пусть Г = (V, W, I, R). В силу леммы 2.2 мы можем считать, что левые части правил Г не пусты, и рассматривать только такие выводы в Г, в которых правило с пустой правой частью применяется разве что на последнем шаге. Сопоставим каждому символу а е V. U W взаимно однозначным образом двух «двойников» — новые символы а и а°\ множества «двойников» обозначим соответственно 2 и Z0. Каждому правилу Р, ...p„-»Yi ... У,еЯ (&, Y/eVUWO сопоставим множество, состоящее из всевозможных правил вида Р? • • • РЬМ?+1 • • • P£-*YiYg • • • V0,, i= 1. • • -, Р (правила 1-го рода). Каждой паре а, ре VU W сопоставим правило ар°-*а°р (правило 2-го рода), каждому aeV — правило а—*а (правило 3-го рода), каждой паре а, Ь е V — правило a°b-+ab (правило 4-го рода). Положим Г'= {V, Z\JZ°, I, R'), где R' — совокупность всех правил 1-го—4-го рода. Сцепленность Г' легко проверяется непосредственно. Докажем эквивалентность Г и Г'. Для каждого упорядочиваемого вывода D = (соо, ..., юп) в Г легко построить вывод в Г', состоящий из п последовательных кусков: <> \И\+« \}'-"К-,+1 \> причем для каждого / = 1, .... п цепочка r\t отличается от coj только наличием черты над одним из вхождений символов и верхнего индекса 0 у остальных. При этом каждый кусок начинается применением правила 1-го рода, а на всех остальных шагах куска, если таковые есть, применяются правила 2-го рода. Поскольку <о„ е V", из г\, можно с помощью правил 2-го, 3-го и 4-го рода вывести соп- (Сначала следует «загнать» черточку в конец цепочки, затем применить правило 3-го рода, далее пользоваться правилами 4-го рода.) 3 А. В. Гладкий
66 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 Ясно также, что цепочку в словаре V можно вывести в Г из 7 только вышеописанным образом. Ввиду леммы 1.2 из сказанного вытекает эквивалентность Г и Г', а также равенство S^ (п) — Sr («). Остается оценить Гг'- Пусть D' = (%, ..., т^) — произвольный полный вывод в Г', и пусть trik (k = 1, 2, 3, 4) —число шагов этого вывода, на которых применяются правила рода k (шагов рода k). Нам достаточно найти такую не зависящую от D' постоянную /, чтобы выполнялось неравенство тг ^ 1ть Действительно, длина соответствующего D' вывода в Г равна ти а так как т3 = 1 и т4 = = |ilm|—1. мы получим т — т, -f- т2 + т3 -+- тк ^ < (/+ l)mi + hm|< (/ + /+ l)mi (/ — максимум длин левых и правых частей правил Г). Пусть г\. — последняя цепочка вывода D', содержащая вхождение символа из Z. Шаги 1-го и 2-го рода — это все шаги с номерами, не большими i0, и только они. Для каждого г = 0, 1, .... i0 имеем TiJ = |JaiC?> где |», ^е2°*иае I. Положим gt = 1£° |, h, = gt—gt_v Если t'-й шаг 2-го рода, то А* = 1, а если 1-го, то — е < Аг ^ 0, где е — максимум длин левых частей правил Г. Очевидно, и Отсюда, обозначая через Eft сумму А2 по всем шагам рода k, получаем m2 = \ = gu~^i<SiAemi<\%\ + emi=sz = I 11m 1 +<?m, <(/+'<?)/TV Доказательство закончено. Теперь мы можем показать, что для произвольной грамматики имеется возможность «сжимать» и «ускорять» ее выводы равномерным образом в любом наперед заданном отношении, лишь бы не нарушились неравенства (1) (стр. 59); для этого, разумеется, нужно перейти к другим, эквивалентным грамматикам. Стоит заметить (см. ниже доказательства теорем 2.1, 2.2), что эти новые грамматики, вообще говоря, сложнее старой — имеют больше вспомогательных символов или
§ 2.3] УСКОРЕНИЕ И СЖАТИЕ ВЫВОДОВ 67 правил, и сами правила могут быть длиннее, — причем усложнение грамматики оказывается тем сильнее, чем больше мы захотим упростить выводы, т. е. «сжать» или «ускорить» их. Это обычная ситуация — за простоту и удобство пользования устройством приходится платить усложнением его самого. Теорема 2.1 (о сжатии выводов). Для любой грамматики Г и любого положительного действительного числа с можно построить грамматику Г", эквивалентную Г и такую, что Sr («) ^ max (n, 1, cSr(n)); Тт'(п)^ТГ(п) + max (en, 1). Доказательство. Пусть Г = (V, W, I, R). В силу леммы 2.2 мы можем считать, что левые части правил Г не пусты, и рассматривать только такие выводы в Г, в которых правило с пустой правой частью применяется разве что на последнем шаге. Пусть / — натуральное число, большее 1/с и одновременно большее max |<р| и max||ip|— |<р||. Сопо- ставим каждой цепочке (ое(7 \jViT, |<в|<2/, взаимно однозначным образом новый символ а (со). Множество таких символов обозначим Z. Каждому правилу ф-+феУ?, каждой цепочке а е (F U f)', | со |^2/, содержащей вхождения <р, и каждому вхождению | * <р * ч\ цепочки фвш сопоставим правило / = /(ф, ф, £, ti) следующим образом: если |^фТ1|<2/, то / = a(co)-*a(|tpTi); если же | |фт! | > 21, то / = a(<o)->a(d)a(d), где £i£2 = itn и I Si \ = 1 (<*(d) существует, поскольку | ltyr\ | < 3/). Далее, каждому правилу <p-*ipe#, каждой паре цепочек со,, a2<=(V\JWy, /<|ю, |<2/, /О^КЯ, такой, что а>|<02 содержит вхождения ср, и каждому вхождению £, * ф * ti цепочки ср в с^сог сопоставим правило g = g(<f, ф, £, г\, <о1( со2) следующим образом: если 11^г\ | < 2/ (заметим, что в любом случае | ltyt\ | > /), то g- = a(cu1)a(co2)->a(^tpTi); если 2/ <| 1Щ |< 41, то g = =a(co1)a(«2) ->a (d) a (d), где d£z = l$r\ и Id I = [jl ItH l] ([ ] — целая часть); если, наконец, | £ipr| | > 41, то g = а (со,) a (со2) -> a (d) a (d) a (d), где ddd == 1Щ, | d 1=2/, | d I = l (a (d) существует, так как | %Щ | < 5/). з*
68 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 Сопоставим также каждой цепочке со, |<и|^2/, правило h = h(a): a(co) —* со. Положим теперь Г'= (V,Z, а(/), R'), где R' состоит из всех правил /, g и h. Покажем, что Г' —нужная грамматика. Назовем образом цепочки %^ (V l)W)* любую цепочку 6 = a(coi) ... a(coft) такую, что ам ... ®k = X и при k> 1 для каждого /= 1, ..., k имеет место |(0j|^ /. Из определения правил / и g ясно, что если из цепочки %t непосредственно выводима в Г цепочка %2, то из каждого образа 6i Цепочки xi будет непосредственно выводим в Г' некоторый образ цепочки хз (с помощью некоторого правила g, если |6i| > 1, и правила /, если |6i| = 1). Поэтому для каждого полного вывода D = = (%о, ..., Хп) в Г существует вывод D'= (80, ... ..., 6п) в Г' такой, что 6j есть образ х* для каждого г' = 0 п (в частности, 0о = а(/)); при этом в силу определения образа | 62 К max (1, у| %t |). Из 6„ можно с помощью правил h вывести %п, причем длины промежуточных цепочек в этом выводе не будут превосходить тах(1, |хп|). Таким образом, мы получаем вывод Хп из а(/) в Г', в котором максимальная длина цепочки не превосходит тах(|х«|, 1, -г max | Хг I), при- чем число шагов этого вывода не больше п + + тах(у|х«|, 1] (число применений правил / и g равно п; число применений правил h не превосходит у | х« I при |хп| 5* / и единицы при |хп| < I). В то же время — по лемме 1.1 — всякая выводимая в Г' цепочка в словаре V может быть выведена так, что сначала будут применяться правила / и g, а потом h; отсюда ясно, что эта цепочка может быть выведена и в Г. Итак, Г' есть нужная грамматика. Следствие. Для любой грамматики Г и любого натурального числа k можно построить грамматику Г", эквивалентную Г и такую, что ST' (я) ^ max (п, 1, Sr (n) — k); ТУ («X Тг (п) -[- max (n, 1).
§ 2.3] УСКОРЕНИЕ И СЖАТИЕ ВЫВОДОВ 69 Теорема 2.2 (об ускорении выводов). Для любой грамматики Г и любого положительного действительного числа с можно построить грамматику Г", эквивалентную Г и такую, что 7У(п)<тах(1, сТт{п)); Sr(n)<Sr(n). Доказательство. Пусть Г = (V, W, I, R). В силу леммы о сцеплении мы можем считать грамматику Г сцепленной. Фиксируем натуральное число/, большее 1/с, и рассмотрим всевозможные размеченные выводы в грамматике Г: О' = (а'0, ..., а'п_х, <оп), о^ = |, * <р, * r\it удовлетворяющие условиям: (а) 1 ^ п ^ 21; (р) существуют такие /i и k из ряда 0, ..., п— 1, что|г =11^= = Л. Непосредственной индукцией по п легко показать, что для любого i = О, ..., п — 1 справедливо ||гфгТ1г| ^ tig ^ 2lg, ГДв g — МЭКСИМуМ ДЛИН ЛеВЫХ И правых частей правил Г (здесь используется сцеплен- ность Г!). Поэтому число размеченных выводов, удовлетворяющих условиям (а) и (р), конечно. Сопоставим каждому такому размеченному выводу правило р = = |офот1о-* ffln и положим Г' = (V, W, I,R'), где R' состоит из всех р. ПуСТЬ D= (fflo. •••> Mm), m ^ I, — ПОЛНЫЙ ВЫВОД В Г. Разобьем D на куски, длина каждого из которых не меньше / и не больше 21; число кусков будет не больше пг/1. Но каждый из этих кусков вывода можно, очевидно, выполнить с помощью одного из правил р; мы получаем, таким образом, полный вывод в Г' длины, не большей пг/1, с той же последней цепочкой сот. Вывод в Г длины, меньшей /, можно заменить выводом в Г' длины 1. С другой стороны, из определения правил р ясно, что каждый вывод в Г' можно заменить выводом в Г. Неравенство Sv {n) ^ St {п) очевидно. Итак, Г' — нужная грамматика. Следствие. Для любой грамматики Г и любого натурального числа k можно построить грамматику Г", эквивалентную Г и такую, что 7V(n)<max(l, Tv{n)-k); Sr<(n)<Sr(n).
70 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 Для машин Тьюринга также имеют место теоремы о сжатии и ускорении, а именно: Теорема 2.1' (о сжатии вычислений). Для любой Э-машины М и любого положительного действительного числа с можно построить Э-машину М', эквивалентную М и такую, что SM'(«)<max(l, cSM(ti)); Тм'(п)^Тм(п). Если при этом М — ДЭ-машина, то и М' можно сделать ДЭ-машиной. Теорема 2.2' (об ускорении вычислений). Для любой Э-машины М и любого положительного действительного числа с можно построить Э-машину М', эквивалентную М и такую, что ТМ'(пХ(п + 1) + с(Тм(п) -{п + 1)); Sm> (n) < SM (n). Если при этом М — ДЭ-машина, то и М' можно сделать ДЭ-машиной. Теорема 2.1' доказывается совершенно аналогично теореме 2.1. Что касается теоремы 2.2', то ее доказательство аналогично доказательству теоремы 2.2 со следующими отличиями: а) не требуется предварительной переделки машины (в случае грамматики переделка обеспечивается леммой 2.4); б) любая Э-машина при обработке цепочки длины п должна прочесть ее с начала до конца— это и приводит к выделению слагаемого п + 1; в) поскольку никакой элементарный шаг Э-машины не затрагивает более двух ячеек, при построении новой машины придется прибегнуть к кодированию цепочек в рабочем алфавите (аналогично тому, как это делается при доказательстве теоремы о сжатии). Займемся теперь вопросом о соотношении между сигнализирующими грамматик и машин. Обратимся сначала к доказательству пункта а) теоремы 1.4. Нетрудно видеть (см. доказательство леммы 1.5), что если машина М, работая с цепочкой длины п, затрачивает t = п-\-¥ шагов и максимальная длина рабочей ленты будет при этом равна s, то для Mi при обработке той же цепочки (подходящим способом) максимальная длина
§2.4] СЛОЖНЫЕ РЕКУРСИВНЫЕ ЯЗЫКИ 71 рабочей ленты Si и число шагов t\ будут удовлетворять условиям: si = s + ft+l. t\ ^ (s + «+ l)min(n, t')c -f- t (min(n, t') — максимально возможное число «переклк> чений» с имитации «входной» команды на имитацию «рабочей»; с — постоянная). Соответствующие величины для М2 будут таковы: s2 = su tz ^ ti + ti + й <g; sg: (s + tt+ l)min(n, /')c2 + t (ci, c2 —постоянные). Ha*- конец, длина (подходящего) вывода той же цепочки в грамматике Г и максимальная длина цепочки, входящей в этот вывод, будут равны t2 + 2 и s2 -f 1 соответ* ственно. Обратившись теперь к доказательству пункта б) теоремы 1.4, мы увидим, что если длина вывода цепочки х,\х\ = п, в Г равна t, а максимальная цепочка этого вывода имеет длину s, то в М найдется х-вычисление, длина которого не превосходит din + dzt =g; d$t (db d%, d3 — постоянные; d\ шагов нужно на переписывание входного символа на рабочую ленту, d2 шагов — на имитацию применения одного правила), причем максимальная длина фигурирующей в нем рабочей ленты равна s. Отсюда с учетом теорем 2.1, 2.2, 2.2' и того факта, что все упоминавшиеся постоянные эффективно определимы по соответствующей грамматике (машине), получается Теорема 2.3. а) Для любой Э-машины М можно построить эквивалентную грамматику Г такую, что Sr{n)^SM(n); ТГ (п) < (SM (п) + п) • min (n, Тм (п) -п) + Тм (п). б) Для любой грамматики Г можно построить эквивалентную Э-машину М такую, что SM (n) = Sr (ft); Тм (п) < max ({п + 1), ТГ (п)). § 2.4. Существование сколь угодно сложных рекурсивных языков Если F — некоторый достаточно «хороший» сигнализирующий оператор для грамматик и / — вычислимая функция, то факт принадлежности какого-либо языка классу j?f может рассматриваться как определенная характеристика сложности этого языка: если Li e j?/ и
72 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 Ьгф-3£\, то L2 сложнее Lb поскольку при некотором способе порождения L\ можно обойтись более простыми выводами, чем те, которые понадобятся при любом способе порождения L2. Для сигнализирующих наиболее важных типов — Г и S — правомерность указанного подхода к определению сложности становится особенно наглядной, если обратить внимание на следующее: при F = Т, f(n) Гзг 1 и при F = S, f (п) ^ п из L ф SE\ следует, что для любой грамматики Г, порождающей язык L, найдется бесконечно много чисел п, удовлетворяющих неравенству Fp (n) > >f(n)*). Действительно, если, например, существует лишь конечное число таких щ, i = 1, ..., р, для которых Tv{tii) >f{tii), и при этом f(n) ^ 1, то можно, положив &= max (Tr(tii) — f{tii)) и воспользовавшись след- (=],..., р ствием из теоремы об ускорении выводов, построить грамматику Гь эквивалентную Г и такую, что Гг, (п) ^ sgjmax(l, Тт (п) — k) ^/ (п); аналогично при F = S, f(n)^ п. Возникает вопрос: сколь сложным может быть язык в этом смысле? Иначе говоря, можно ли при заданном F указать такую общерекурсивную функцию /, чтобы все рекурсивно перечислимые языки оказались в классе S?f? В такой форме этот вопрос немедленно получает отрицательный ответ; действительно, по лемме 2.1 всякий язык, для которого какая-либо сигнализирующая мажорируется вычислимой функцией, рекурсивен, так что никакой нерекурсивный язык не может принадлежать классу SB* ни для какого сигнализирующего оператора F и ни для какой вычислимой функции /. Однако наиболее важны и в теоретическом, и в прикладном аспекте как раз рекурсивные языки, и естественно поставить вопрос для них. Оказывается, что и в этом случае он решается отрицательно: имеет место Теорема 2.4. Для любого сигнализирующего оператора F(T,n) и любой общерекурсивной функции f(n) можно построить грамматику Го, порождающую рекурсивный язык и такую, что L (Го) ф. 3?*. *) Аналогичный факт имеет место и для F — °У , <Уп, D, I (упражнение 2.9).
§2.4] СЛОЖНЫЕ РЕКУРСИВНЫЕ ЯЗЫКИ 73 Доказательство. Напомним, что рассматриваются лишь такие грамматики, основные и вспомогательные словари которых содержатся в счетных множествах Е и £, соответственно (что не уменьшает общности). Пусть Е — {щ, а3, а5, ...}, £\ = = {а2, а4, а6, ...}. Положим а{ = а, а3 = Ь и введем некоторое эффективное кодирование грамматик цепочками в словаре {а, Ь). [Можно, например, считать кодом цепочки o.ta.i2 ... aif цепочку bail+[bba2+1 b ...bait+lb, кодом цепочки Л цепочку bob, кодом правила q> -> ip цепочку x(<p)6x(ip), где х(<р), х(гр) —коды <р и гр соответственно, и кодом грамматики (V, W, I, R) цепочку balb ... baisbalbbbK(rx) ... x(ru), где а!, ..., as и ги ... • • •, ги ~~ некоторые пересчеты множеств V U W и R соответственно, а/ = /их(го — код rt.] Грамматику, имеющую код х, обозначим Гх. Пусть L0 — множество всех цепочек х в словаре {а, Ь), не удовлетворяющих конъюнкции следующих условий: а) существует грамматика Тх; б) хе!(Г,); в) F(TX, x)^f(\x\). Для всякой грамматики Г, порождающей язык L0, найдется число п такое, что F(T, n)>f(n). В самом деле, если L0 = L(r), то для некоторой цепочки z будет Г —Г2; при этом zeL(rz) = L0, так как из гф.Ь(Тг) следовало бы по определению языка L0, что 2El0 = L(rz). Но тогда F(TZ, z)>f(\z\), откуда F(TZ, \z\)>f(\z\). В то. же время язык L0 рекурсивен; действительно, х е L0 тогда и только тогда, когда не выполняется ни одно из равенств F{TX, х) — 0 F(FX, x) = f(\x\), каждое из которых эффективно проверяемо. Грамматику, порождающую L0, нетрудно построить, зная алгоритмы, вычисляющие функцию f(n), и график функции Р(Т, х) (упражнения 2.11, 2.12). Итак, теорема 2.4 доказана. Но справедливо и более сильное утверждение: Теорема 2.5. Для любого сигнализирующего оператора F(T,n) и любой общерекурсивной функции f(n) можно построить грамматику, порождающую рекурсивный язык и такую, что для любой эквивалентной ей грамматики Г при всех достаточно больших п имеет место неравенство Fr(n) > f (n).
74 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 Доказательство. Закодируем грамматики, как в доказательстве теоремы 2.4. Если п — стандартный номер цепочки х в словаре {а, Ь) (стр. 22), будем писать хп вместо х и Гп вместо Гж. Искомый язык L0 мы будем строить индуктивно, решая последовательно для каждого п = 0, 1, ..., следует ли причислить к Lo цепочку хп. Одновременно будет определяться некоторая вспомогательная частичная числовая функция h(n)—«функция опровержения», не принимающая никакого значения более чем один раз. «Нулевой шаг» построения состоит в следующем. Если существует грамматика Г0 и ^(Г0, х0) ^ /(l-^ol) (что эффективно проверяемо), то полагаем хо ф. L0 и h(0) = 0. В противном случае (т. е. если грамматики Го не существует или неравенство ^(Го, ^о) =SS /(|*о|) не имеет места) полагаем Хо е L0, а /г(0) остается не определенным. Пусть произведены шаги с номерами 0, ..., п — 1, в результате которых для каждой из цепочек х0, ..., хп-1 решено, принадлежит ли она языку L0, и для каких-то чисел /ь ..., /„ из ряда 0, .... п— 1 найдены значения функции опровержения, причем все эти значения различны; мы будем говорить в этом случае, что «грамматики Гй^,, ..., Th (i > опровергнуты». Тогда n-й шаг состоит в следующем. Проверяем выполнение неравенств: (0) Р(Г0, *„)< /(|*п|); (1) F(Ti, x„) <- </(|*п|); ••■; (n)F(rn,xn)s^f(\xn\) (точнее, тех из них, которые имеют смысл, т. е. для тех I ^ п, для которых Г, существуют). Если н, ..., ih — все те числа из ряда 0, ..., п, для которых соответствующие неравенства справедливы, ищем среди них наименьшее— пусть это ip, — для которого грамматика Г{ еще не опровергнута. Если такое число нашлось, полагаем h(n)—ip, хпф.Ьо. Если такого числа нет, а также если ни одно из неравенств (0), ..., (п), имеющих смысл, не выполняется (в частности, если ни одно не имеет смысла), то полагаем хп е L0, a h(x) оставляем не определенным. Рекурсивность построенного языка Lo очевидна, и порождающую его грамматику легко построить по алгоритмам, вычисляющим f(n) и график Р(Г, х). Ясно
УПРАЖНЕНИЯ 75 также, что L0 не может порождаться ни одной из опровергнутых грамматик (поскольку из F(Г,х) ^ Д|*|) следует, во всяком случае, что хе£(Г)). Поэтому для завершения доказательства достаточно установить, что всякая грамматика Г&, для которой найдутся сколь угодно большие числа п, удовлетворяющие неравенству •Р(Г&, n)^f(n), рано или поздно опровергается. Но имеет место даже более сильное утверждение: грамматика 1\ будет опровергнута, если существует k -f- 1 чисел ти ..., rtih+i, не меньших k и таких, что для каждого i—l,...,k + l имеет место F(Tk, \xm.\)<!f(\xmi |) Действительно, пусть 1\ обладает указанным свойством и никогда не опровергается. Тогда на каждом из шагов с номерами т.\, ..., m^+i должна быть опровергнута некоторая грамматика с номером, меньшим k; иначе говоря, функция опровержения для каждого из чисел ти ..., rtik+i будет определена и примет значение, меньшее k, а это невозможно из-за разнозначности данной функции. Упражнения 2.1. а) Найти временную сложность, левую и правую глубину для каждой из грамматик примеров 6—13 из § 1.3. б) Найти емкость грамматики примера 13 из § 1.3. в) Найти разброс и активную емкость для каждой из грамматик примеров 7, 8, 10, 11, 13 из § 1.3. 2.2. Показать, что для любой грамматики Г и любой общерекурсивной функции f(m), удовлетворяющей условию Vm[m ^ f(m)], можно построить грамматику Г', эквивалентную Г и такую, что Sr, (я) = f (Sr (n)). 2.3. Пусть &~i — класс всех грамматик, у которых левые части правил не содержат основных символов. Пусть далее Ш(&~, О, F, f(n, Fv (n), ...,Fr (п)\\, где Т — класс грамматик, О — s-местная операция над языками, F — квазисигнализирующий оператор для грамматик и f{n,nt\, ..., та)—общерекурсивная функция, означает: «Для любых грамматик Ги ..., Г8 е Т можно построить грамматику Ге?", порождающую язык О(L(Ti), ..., L(T.)) и такую, что Fr {п) < f (n, FT (n) Fr (n)\>- Показать, что а) При F = T, S, уп, <%Ш, / имеет место Я (*",, U, F, max (Fr_ (n), FFi (n)));
76 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 б) имеет место Я (Tv X, Т, max (Гг_ (k) + ТТг (я - Щ, . U ^; Й ^. ft Я {Тх, X, S, max (Sr_ (k), ST^ (я - k), я), U ^^ ft ^; TL Я (^-1, X, °¥Ъ, max (<У£ (я), <У£ (я))) (Ъ = Л, П), Я (0-,, X, A max (DTi (я), D^ (я), n)), Ш{9~\, X. /. max(/ri(«), /Гг(я))+1) (X — знак умножения); в) имеет место «рГ„ Л> Г, ГГ1(я) + ГГ2(я) + я2), Ш(&-1г Л, /, max(/ri(«), /Гг («)) + «), и _ при F=S, Ул, Уп, D - «(*"„ Л, Л тах(^Г1(я), FTt(n))y г) при 0 = +, * имеет место И (*",. О, Г, max (Гг (я,) + ... + Гг (яЛ))) (я, > 1), Я (^р О, S, max (Sr (я - £) + *)), Я (5^, О, <УЪ, <У^ (я)) (Ъ = Л, П), Я(^„ О, А тах(£>г(я), я)+1), Я^, О, /, /г (я) + 1). 2.4. Вывести соотношения, аналогичные приведенным в упражнении 2.3: а) для подстановки; б) для левого и правого деления на фиксированную цепочку. 2.5. Показать, что для F = Т, S все соотношения упражнения 2.3 сохраняют силу при замене класса Э~\ классом Г. 2.6. Пусть Э~\ означает то же, что в упражнении 2.3, и пусть 1 — функция f(n) = 1 и С — класс всех функций-констант. Показать, что: а) При F = <Vn, °УП, D S\ (Тх) = S\ {Тх Л НС) = S\ (Б) = = Si (JT,) = <?£ (Г, Л НС) = <?£ (Б) *): б) S\ (Т{) = S[ (Т{ Л НС) = S[ (Б) = S° {Т{); в) S'c (<Г,) = 21с (<г, Л НС) = S'c (Б). линейн *) При F = <yn, <^п это класс Л-языков, при F — D — класс :йных языков (см. ниже, § 5.3 и следствия из теорем 7.2 и 7.3).
УПРАЖНЕНИЯ 77 Заметим, что для любого класса функций 2г имеет место <?|(;г1)=<?|(г> г|(^-,пнс) = г|(нс), а если § замкнут относительно умножения на константу, то аг\ (<г,) = z\ (Г), <?£ (<г, п не) = г\ (не) (см. замечание на стр. 61). 2.7. Пусть &~2 — класс всех грамматик, у которых левая часть каждого правила содержит хоть одно вхождение вспомогательного символа, и 1, С те же, что в упражнении 2.6. Показать, что: а) при F = yn, <Уп &i (9~2) = &\ (НС) = s\ (Б) = &с (^г) = = ^(HC) = ^(B) = ^f(^,); б) 2?f = 2° (Г2) = 2° (Т2)=&[ {Т2)=2%^3?'с (Т2) = 2 (Г). Заметим, что для любого класса функций % имеет место i?| (fT2) = S'g (Г), а если $ замкнут относительно умножения на константу, то i?g (fT2) = 2?% (Г) (ср. замечание к упражнению 2.6). 2.8. Показать, что при F = <У , "V11, D для любой грамматики Г и любого положительного действительного числа с можно построить грамматику Г', эквивалентную Г и такую, что Fr, (ri) ^ ^Г max(n, 1, cF(n)). Если при этом Г — НС-, сответственно Б-грам- матика, то и Г' можно сделать НС (Б)-грамматикой. 2.9. Пусть F(T, n)—квазисигнализирующий оператор для грамматик, и участвующая в определении F функция /(Г, D, i) обладает следующим свойством: существует функция g, отображающая (EUEj)* в натуральный ряд, обращающаяся в нуль на Е* и такая, что для любой грамматики Г и любого вывода D = (ю0, «>i, • • •, g>t>) в Г имеет место f(r, D, i) = g(coj). Показать, что в этом случае для любой общерекурсивной функции h(n) и любой грамматики Г = = (У, W, I, R), для которой A(rt)>g(/) и L (Г) ф Z{, существует бесконечно много чисел п, удовлетворяющих неравенству FT (л) >h(n). 2.10. а) Показать, что если для класса грамматик У существует общерекурсивная функция f(n) такая, что в любой грамматике Ге&~ длины полных выводов цепочек из L(T) длины, не превосходящей п, не превосходят f(n), то для любого квазисигнализирующего оператора Е соответствующий относительный оператор F является сигнализирующим и для любой грамматики ГеУ функция Fr (n) рекурсивна. б) Показать, что если для класса грамматик 3~ существует общерекурсивная функция f(n) такая, что в любой грамматике ГеУ длины цепочек, встречающихся в полных выводах цепочек из L(Y)
78 СИГНАЛИЗИРУЮЩИЕ ФУНКЦИИ [ГЛ. 2 длины, не большей п, не превосходят }(п), то для любого квазисиг- нализирующего оператора F, удовлетворяющего условию упражне-" ния 2.9, соответствующий относительный оператор F является сигнализирующим и для любой грамматики ГеУ функция Fr (n) рекурсивна. 2.11. Построить грамматику, порождающую множество всевозможных цепочек из {а, Ь}*, являющихся кодами грамматик при способе кодирования, примененном в доказательстве теоремы 2.4. 2.12. Указать способ построения грамматик, порождающих языки из теорем 2.4 и 2.5, по грамматике Г{, порождающей язык Lx ={га # f (п) | п = 0,1, ...} в словаре {|, #}, грамматике Г^, порождающей язык L2 = {х (Г) # х # р | F (Г, х) = р) в словаре {а, Ь, ], #}, где х (Г) и х (я) — коды грамматики Г и цепочки х (см. доказательство теоремы 2.4) и грамматике Г3, порождающей язык Z-з = {а, Ь, |, #}* - L (Т'2). 2.13. а) Показать, что при F = S грамматика Г0 из теоремы 2.4 может быть построена так, чтобы имело место неравенство STo (п) = max (S{ (g (n)), ks'(g (n)), **(g (n))), где g(n)=2n+ f (2")+ 1, k— константа и Si(n)=S, (Г,, Т'2, Т'3 — грамматики из упражнения 2.12). б) Получить аналогичную оценку для Тт (п). 2.14. Найти временные и емкостные сигнализирующие машин, построенных при выполнении упражнений 1.16 и 1.17. 2.15. Сформулировать определения временной и емкостной сигнализирующих для Н-машин и ОН-машин (упражнение 1.20). Найти соотношения между сигнализирующими Э-машин, Н-машин и ОН- машин. 2.16. Показать, что если функция Гг (п) примитивно рекурсивна, то и язык £(Г) примитивно рекурсивен.
ГЛАВА 3 ГРАММАТИКИ СОСТАВЛЯЮЩИХ § 3.1. Деревья выводов Пусть Г = (7, W, I, #) — НС-грамматика, /) = = (со0, ..., со„) — вывод в Г такой, что |<Оо|=1, и D' = = (со'0, ..., g£_,, со,,), со', == ^*ф.*т1., — некоторый соответствующий D размеченный вывод. Пусть ©, = рп ... pJfe; (р„ е= 7 U IF). Если Фг -> ф, - правило, применяемое на t'-м шаге D при разметке, отвечающей /)', то фг и грг можно представить (вообще говоря, не единственным образом — см. упражнение 3.2) в виде ф|=зсИ,£(, Ь=%№и где At е= IF, xi, &е=(И UW)*, e;e(7U^)+. Фиксировав для каждого i=l, ..., п— 1 такое представление и обозначая точку pfl ... р\, /_,*рг/*рг1 /+1 ... $iki цепочки со* через Вц, будем говорить, что точка S,+i, /' цепочки ©г+1 является непосредственным потомком точки Btj цепочки со*, и писать B^-»Sf+i,/', если либо a) j = j'<!\h\, либо б) />|£H+W = =/+|в£ 1—1, либо, наконец, в)/=| |, |+1,| |, |+ I </'< ^1 h 1 + 1 б> I (т- е- либо Bi+i./' является «копией» Вц, либо Sj/ — точка, заменяемая на i-u шаге, a B;+i, /' принадлежит заменяющему ее отрезку). Обозначим теперь через М' множество всех точек всех цепочек соо, • • ■, юп. Ясно, что граф {М'; -») является деревом. Для а, р е М' будем писать а <(р, если либо aj а и р являются точками одной и той же цепочки иа<р, либо б) существуют а', р' е М', удовлетворяющие условию а) и такие, что из них идут пути в а и в р соответственно. Отношение <^ есть, очевидно, частичный порядок. Биграф {М'\ -*•, -<) мы будем называть растянутым деревом вывода/),
80 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 При графическом изображении растянутого дерева вывода удобно помещать вхождения, принадлежащие одной цепочке, на горизонтальной прямой, и отношение << понимать как «левее» (ср. § 1.1, стр. 20). Кроме того, договоримся для каждого i располагать цепочку (Иг+1 (т. е. соответствующую прямую) ниже цепочки <аг. При таком способе изображения можно, не опасаясь А недоразумений, заменить обозначения В{, символами р,,-. Если в {М; -*• ) из а в р идет путь ненулевой длины, мы будем называть р потомком а и а — предком (J. Пример. Пусть схема НС-грамматики Г содержит правила А-+аВА, ВА-+ВВА, BBB-+BDB, В-*Ь, bDB-^- -^■bcdB, ЬА-^-ba. Тогда размеченному выводу (*А*,а*ВА*, аВ*ВА*, а*ВВВ*А, a*B*DBA, a*bDB*A, abcd*B*A, abcd*bA*, abcdba) будет отвечать (в данном случае единственное) растянутое дерево вывода, изображенное на рис. 2. Теперь мы «стянем в точку» каждый путь в растянутом дереве Т — (ЛР; -», -<) вывода D, не имеющий боковых ответвлений и такой, что все его узлы представляют собой вхождения одного и того же символа *). (Иначе говоря, устраняются все узлы-«копии» и остаются лишь те, которые возникают при применении правил.) Каждый узел А возникающего таким образом дерева представляет собой множество элементов М', являющихся вхождениями одного и того же символа; этот символ мы будем обозначать g(A). Понятно, что если два «старых» узла В я В' оказались «стянутыми» в один «новый» узел, то для любого «старого» узла С а а а а а а а а в ^^\^.д ../\. В В ь в в/ в в D В Ь /с \d В ь ь 1 1 с с, > d Ъ i Ъ -II 1 1 д д л д л л а. Рис. 2. *) Формально эту операцию можно описать как переход к фак- тор-биграфу по некоторой — строящейся очевидным образом — конгруэнции.
§ 3.1]' ДЕРЕВЬЯ ВЫВОДОВ 81 тогда и только тогда В <^С, соответственно С <^В, когда В' <^С(С ~^В'). Поэтому на множестве М «новых» узлов естественным образом определяется отношение частичного порядка -^. Полученный так объект естественно представлять себе как нагруженный биграф Т = (М; -*-, <(, V [J W, g); мы будем называть его деревом вывода D. Выражения «непосредственный потомок», «потомок» и «предок» будут использоваться в отношении узлов дерева вывода так же, как это делалось для растянутого дерева. При графическом изображении дерева вывода удобно для каждой пары узлов А, В помещать А выше В, если А-*-В, и левее В, если А -^ В. Полезно заметить, что длина вывода равна числу невисячих узлов его дерева. Пример. На рис. 3 изображено дерево вывода, соответствующее растянутому дереву рис. 2. (Цифры в скобках нужны для дальнейшего.) Заметим еще, что отношение <( индуцирует на множестве висячих узлов дерева вывода линейный порядок, относительно которого это множество изоморфно последней цепочке соответствующего вывода *). В дальнейшем нам придется рассматривать деревья, сходные с деревьями вывода, в общем виде. Поэтому будет полезно следующее определение. Назовем расположенным деревом с помеченными узлами (сокращенно Ргдеревом) нагруженный биграф (М; -*-, <(, U, g) такой, что: а) (М; -») — дерево; б) для каждого невисячего узла А *) Это утверждение имеет следующий точный смысл: если Т = {М; -^., <^, g) — дерево вывода (й)0, ..., ш„), ш„ = р, ... pft (pi, ..., fk — элементарные символы) и Мв — множество висячих уз- лоз Т, то существует взаимно однозначное отображение т множества {1, ..,, к) на Ма, переводящее естественный порядок в <С и такое, что g(r(i)) = р(.
82 ГРАММАТИКИ СОСТАВЛЯЮЩИХ (ГЛ. 3 дерева (М; -*■) отношение <( индуцирует на кусте Л линейный порядок; в) В <( С тогда и только тогда, когда найдутся во и Со, подчиненные одному узлу и такие, что из них ведут пути (возможно, нулевой длины) в б и С соответственно и при этом В0 -< С0. Ясно, что <( есть частичный порядок. Любое дерево вывода является, очевидно, Pi-деревом. В следующей главе нам понадобится также понятие расположенного дерева с помеченными узлами и дугами (Рг-Д е рева). Так мы будем называть упорядоченную систему (М; ->, <^, U, Z, g, h), где (М; -*•, <(, U, g) — РгДерево, Z— конечное множество и h — отображение множества дуг дерева (М; ->) в Z. Для каждого Рги Р2-дерева Т отношение <( индуцирует на множестве его висячих вершин линейный порядок. Если Ль ..., Аи — последовательность, составленная из всех висячих узлов Т в соответствии с этим порядком, то цепочка g{Ai) ... g{Ah) будет обозначаться ц(Т). Говоря о пути в Р[- или Рг-дереве, мы всегда будем подразумевать -*-путь. Пусть Т = (М; -*-, <(, g) — дерево вывода D в НС-грамматике Г= (V, W, I, R), оканчивающегося цепочкой со. «Стянув в точки» все пути в Т, не имеющие боковых ответвлений, мы получим новое Pi-дерево 7\ = = (Mi;-*-, <(, Ui,gi), где: Ui — множество всех подмножеств V U W; каждый элемент Mi есть множество элементов М, «стянутых в одну точку»; для каждого Л4 е Mi множество gi{Ai) имеетвид {g(A) \'A^A{). Это Ргдерево, обладающее, очевидно, тем свойством, что всякий его невисячий узел имеет не менее двух подчиненных, мы назовем сжатым деревом вывода D. Если теперь для произвольного узла Л4еМ4 обозначить через с(А{) множество всех висячих узлов 7\, являющихся потомками Ль и положить С = {с(Л1) |Л1 е Mi}, то легко видеть, что С есть система составляющих цепочки со (§ Ш. 1) и соответствующее дерево составляющих изоморфно дереву (Mi; -*•). Более того, если сопоставить каждой составляющей с(Л1) в качестве меток все элементы множества gi(Ai), то получится размеченная система составляющих цепочки со, изоморфная «нагруженному дереву»
§ 3.11 ДЕРЕВЬЯ ВЫВОДОВ 83 {В,Ъ} {А,а} Рис. 4. Пример. На рис. 4 изображено сжатое дерево вывода, отвечающее дереву рис. 3. Оно дает для цепочки abcdba систему составляющих a(b(cd)) (ba). Таким образом, НС-грамматика позволяет естественным образом сопоставить каждой цепочке порождаемого ею языка некоторую размеченную систему составляющих (вообще говоря, не одну — пример см. в упражнении 3.4), которая оказывается тесно связанной с «историей» цепочки, т. е. ее выводом. Это обстоятельство (объясняющее и сам термин «грамматики составляющих») делает НС- грамматики особенно важными для лингвистических приложений — они позволяют не только порождать «грамматически правильные» цепочки, но и автоматически сопоставлять каждой такой цепочке описание ее синтаксической структуры. Неединственность описания дает возможность учитывать явление синтаксической омонимии (см. § П1.1). НС-грамматика, в которой каждая принадлежащая порождаемому ею языку цепочка имеет единственное дерево вывода, называется однозначной. Для НС-грамматик можно определить некоторые специфические характеристики сложности выводов, весьма сходные с рассмотренными в гл. 2 сигнализирующими операторами. Именно, пусть /(Г, С, А)—вычислимая функция, принимающая в качестве значений натуральные числа и определенная на всевозможных тройках (Г,С,Л), где Г= <V, W,I,R)—НС-грамматика (причем мы считаем, что основные и вспомогательные словари всех рассматриваемых грамматик содержатся в некоторых множествах F и F\ соответственно), С — система составляющих, отвечающая некоторому выводу в Г, и АеС. Для произвольной цепочки хе!(Г) и произвольной системы составляющих С, соответствующей какому- нибудь выводу х из / в Г, положим ?(Г, С, х) = = max/(Г, С, Л); далее определим F(T,x) и F{T,n)
84 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 точно так же, как в § 2Л. Функцию F(T,n) мы будем называть НС-си гна л изи рую щим оператором для НС-грамматик, а функцию Fr{n), получаемую из F(F, п) фиксированием Г, — НС-си гна л из и р у ю щей (функцией) типа Fграмматики Г. Термин «НС-сигнализирующий оператор» (а не «НС- квазисигнализирующий») оправдывается тем, что график соответствующей функции F(T, х) всегда рекурсивен; более того, она сама рекурсивна, так что рекурсивна и функция F(T,n). Это следует из результата упражнения 3.3 и того очевидного факта, что длина бесповторного вывода цепочки х в НС-грамматике не может превосхо- 6|х|+1-1 дить —tzt\—• где * — мощность полного словаря грамматики. Отметим три важных для лингвистических приложений типа НС-сигнализирующих, которые получаются если брать в качестве /(Г, С, А) функции ул(Л), уп(А) и ф(А) (§ П1Л). Эти НС-сигнализирующие мы будем обозначать соответственно через Y£(n), Yp(n) и Фг(п). Очевидно, Фг(n)<min(Y£(n), YjJ(n)). Полезно также обратить внимание на простые соотношения между Y и Щл и между Yn и ^п (упражнение 3.5, а)). ■ Можно определить также Фг (п) и Ф? (л) (ср. стр. 289). § 3.2. Неукорачивающие грамматики и машины Тьюринга без растяжения Пусть Г = (V, W, I,R) — произвольная грамматика. Назовем правило ф—»\f>ei? неукорачивающим, если |<p|^|t|)|. Если все правила грамматики Г неукорачивающие, то сама она тоже будет называться неуко- рачивающей. В частности, всякая НС-грамматика неукорачиваю- щая. Полезно заметить, что в силу леммы 2.2 для всякой неукорачивающей грамматики Г может быть построена грамматика Г', не имеющая правил с пустой левой частью (причем простой просмотр доказательства леммы показывает, что Г' может быть также сделана неукорачивающей), эквивалентная Г и даже такая, что каждый
§ 3.2] НЕУКОРАЧИВАЮЩИЕ ГРАММАТИКИ 85 полный вывод в Г является одновременно полным выводом в Г' и обратно. Значение неукорачивающих грамматик определяется прежде всего следующим фактом. Теорема 3.1. Для всякой неукорачивающей грамматики может быть построена эквивалентная ей НС-грамматика. Чтобы установить справедливость этой теоремы, мы докажем более сильное утверждение, представляющее интерес и само по себе. Будем называть грамматику Г, соответственно Э-машину М, грамматикой (машиной) без растяжения, если Sr(n) =s; n, соответственно SM(n) ^ п. Очевидно, всякая неукорачивающая грамматика есть грамматика без растяжения (обратное неверно — см. упражнение 3.8). Теорема 3.2. а) Для всякой грамматики без растяжения можно построить эквивалентную ей Э-машину без растяжения. б) Для всякой Э-машины без растяжения можно построить эквивалентную ей НС-грамматику. Из этой теоремы непосредственно следует теорема 3.1. Доказательство теоремы 3.2. а) Простой просмотр доказательства пункта б) теоремы 1.4 показывает, что длина рабочей ленты фигурирующей там машины М при имитации вывода в грамматике Г никогда не превышает максимальной длины встречающейся в выводе цепочки. Но если грамматика Г без растяжения, то в выводе цепочки длины п ни одна промежуточная цепочка не может быть длиннее п. б) Пусть М — Э-машина без растяжения с входным алфавитом V. Построим для нее машину М2, как в доказательстве пункта а) теоремы 1.4. В нашем случае М2 может быть простроена так, чтобы в любом ее вычислении, начинающемся с ситуации (q', А, # ф, Л, ф х), ни на одном шаге длина рабочей ленты не была больше |*|. Для этого можно воспользоваться «двухэтажной» рабочей лентой, — иначе говоря, рабочим алфавитом, состоящим из кодов пар вида (а, А), где а — входной символ машины М («символ верхнего этажа») и А — рабочий символ М («символ нижнего этажа»). В «верхнем этаже» машина М2 будет работать, как М на входной
86 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 ленте, а в «нижнем», как М на рабочей; по окончании имитации работы М (рабочая) лента уничтожается. Далее построим машину М3, обладающую следующими свойствами: (а) рабочий алфавит М3 получается из рабочего алфавита М2 добавлением одного символа О («пустого символа»); (Р) как и в М2, в М3 при хе V* из ситуации (qr, Л, ф ф > Л, Ф х) тогда и только тогда достижима ситуация (q", Л, ф|' Л, ф), когда xet(M); (у) в любом вычислении машины М3 каждому шагу, на котором выполняется инструкция вида (iii), предшествует шаг, реализующий инструкцию вида (ii). Чтобы построить М3, заметим, что следующие операции можно производить, выполняя перед каждым шагом вида (iii) шаг вида (ii): а) постановку метки в некоторой ячейке (непомеченная ячейка уничтожается, и на ее месте создается помеченная); б) стирание метки (аналогично); в) сдвиг символа 0 на одну ячейку влево (ячейка, содержащая 0, уничтожается, на ее месте создается ячейка, содержащая символ, стоящий в соседней ячейке слева; затем головка сдвигается — шагом вида (iv) — в соседнюю слева ячейку, эта ячейка уничтожается и взамен создается новая, содержащая 0); г) сдвиг символа 0 на одну ячейку вправо (аналогично). После сделанного замечания ясно, что М3 может работать так: (1) Всякий раз, когда М2 делает шаг вида (ii), уничтожая некоторую ячейку, М3 сначала уничтожает ту же ячейку, затем создает на ее месте новую, содержащую 0, ставит в соседней слева ячейке метку, сдвигает символ 0 влево до тех пор, пока он не окажется рядом с ячейкой, уже занятой таким же символом или символом ф, и, наконец, сдвигает голоьку вправо до помеченной ячейки и стирает там метку. (2) Когда М2 делает шаг вида (iii), Мъ помечает обозреваемую ячейку, сдвигает головку влево до первой ячейки, занятой нулем (такая обязательно найдется!), двигает этот нуль вправо, пока он не окажется непосредственно справа от помеченной ячейки, затем (стерев предварительно метку) уничтожает его и создает на его месте нужный символ. (3) Шаги машины М2, имеющие вид (iv) и (v), воспроизводятся машиной М3 без изменения. (Что касается шагов вида (i), то можно, очевидно, считать, что М2 их не делает.) Таким образом, М3 отличается от М2 тем, что,
§ 3.2] НЕУКОРАЧИВАЮЩИЕ ГРАММАТИКИ 87 уничтожая какую-либо ячейку, она создает взамен в левом конце ленты другую, занятую «пустым символом», а новую ячейку может создать только за счет одной из «пустых». М3 способна имитировать М2, потому что в процессе вычисления рабочая лента М2 никогда не содержит больше ячеек, чем их было вначале. Теперь построим по М3 грамматику Г! со схемой /?, так, как в доказательстве пункта а) теоремы 1.4 строилась по М2 грамматика Г. В силу свойства (у) машины М3 в любом полном выводе грамматики Т\ за каждым применением правила вида bq^-*qa следует применение правила вида qa-+eqy; поэтому мы можем заменить в Г\ каждое правило вида 6<7р —>- <7а совокупностью всевозможных правил вида 6qo-*eqy, где qa-^>- -^e(?vei?„ и полученная грамматика — обозначим ее Гг — будет эквивалентна IV Остается заменить в Г2 каждое правило вида 6q^-*eqy правилами dq^->бРщу, of«вру""*■eF*epv> eF«еру~*e1y каждое правило вида q^~> -*б^ —правилами <7p6->Gep6, Gep6-* Gep#e|3, G6^H^~> ->бЯвр, 6#вр—^-б^р, и каждое правило вида 6<7р —><7р6 — правилами bq^^dM^, 6Мв|3-► N6(iM6fi, N6?M6& -> Л^б, #8р6-><7э6, где F6m, Gep, H6fi, Мв(3, N6fi — новые символы, которые мы отнесем к вспомогательному словарю. Полученная грамматика — обозначим ее Г3 — является, очевидно, НС-грамматикой, и легко убедиться, что она эквивалентна Г2; действительно, каждое исключенное из схемы Г2 правило заменимо в выводе соответствующей системой правил Г3, и правила каждой такой системы могут' применяться в полном выводе грамматики Г3 только подряд, так что вместо, них можно применить правило из Г2. Итак, L(Tl)== L(M). Теорема 3.2, и тем самым теорема 3.1, доказана. ' Из теоремы 3.1 вытекает Следствие. Класс языков, порождаемых неукора- чиваюшими грамматиками, совпадает с i?(HC). Теоремы 3.1 и 3.2 легко усилить следующим образом. Назовем грамматику Г, соответственно Э-машину М, грамматикой (Э-машиной) с ограниченным растяжением, если существует такое число с, что 5г(л)^ сл(5м(л)^ сп). Тогда имеет место
88 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 Теорема 3.2'. а) Для всякой грамматики с ограниченным растяжением можно построить эквивалентную ей Э-машину без растяжения. б) Для всякой Э-машины с ограниченным растяжением можно построить эквивалентную ей НС-грамматику. Утверждение а) вытекает из теоремы о сжатии выводов и пункта а) теоремы 3.2; утверждение б) —из теоремы о сжатии вычислений и пункта б) теоремы 3.2. Из теоремы 3.2' вытекает в свою очередь Теорема З.Г. Для всякой грамматики с ограниченным растяжением можно построить эквивалентную ей НС-грамматику. Следствие. Пусть {с-п} означает класс всевозможных линейных функций и п — функцию f(n) = n. Тогда 2$.!,} = #5 = 2" (НС). Назовем грамматику почти неукорачива га- щей, если все ее незаключительные правила неукорачивающие. Справедливо следующее утверждение: Теорема 3.3. Для всякой почти неукорачивающей грамматики можно построить эквивалентную ей НС- грамматику. Доказательство. Пусть Г = (V, W, I, R) — почти неукорачивающая грамматика и xeL(T). Ввиду леммы 1.1 существует полный вывод D = (со0 сот, .. ., соР) в Г такой, что сор = х и на всех шагах до те— 1-го включительно применяются неукорачивающие правила, а на всех последующих — заключительные. Поскольку при каждом применении заключительного правила появляется хотя бы одно вхождение символа, сохраняющееся до конца, имеем р — те=^|л:|; поэтому для любого i = те, m-\-\, .... р будет \х\ ^ \и>%\ — | лг | -g, где g = max (|ф| — |ф|), так что |ш*| < (g + 1) • \х\; в то же время при 1 :g: i < те имеем |co;| =S^ |сот|. Следовательно, max | сог \^(g + 1) \х |, откуда Sv(n) ^.(g+l)n. О < I < л Остается применить теорему З.Г. Заметим, что грамматики примеров 10 и 11 из § 1.3 неукорачивающие, а грамматика примера 13 почти неукорачивающая. Поэтому соответствующие языки явля-
§ 3.3] СЛОЖНОСТЬ ВЫВОДА 89 ются НС-языками. Дальнейшие примеры см. в упражнениях 3.6 и 3.19. В заключение параграфа рассмотрим вопрос о свойствах замкнутости класса i?(HC). Теорема 3.4. Класс i?(HC) эффективно замкнут относительно операций объединения, пересечения, умножения, усеченной итерации и подстановки. Доказательство. Просмотр доказательства теоремы 1.1 показывает, что если Г', Г", Г — НС-грамматики, то соответствующие грамматики, порождающие языки ЦТ') \]ЦТ") и ЦТ)ЦТ"), будут также НС- грамматиками, грамматика, порождающая язык L(V) П П £(Г"), будет почти неукорачивающей, а грамматика Г+, порождающая (L(T))+, удовлетворяет условию 5г+(") < п + 2 =sC Зл. Доказательство для подстановки предоставляется читателю (оно также не отличается от доказательства для произвольных грамматик). Замечания. 1) По поводу операций левого и правого деления см. упражнение 3.9. 2) Вопрос о замкнутости класса i?(HC) относительно вычитания и взятия дополнения остается открытым. § 3.3. Сложность вывода в неукорачивающих грамматиках и НС-грамматиках Начнем со следующего очевидного, но весьма важного замечания. Поскольку для любой неукорачивающей грамматики Г имеет место 5г(я)^ п, из леммы 2.1 следует, что каждый НС-язык рекурсивен. Сверх того, в силу замечания на стр. 60 существует единый (и достаточно простой) алгоритм, позволяющий по любой неукорачивающей грамматике Г и любой цепочке х в основном словаре этой грамматики распознать, выводима ли х в Г из начального символа *). Более того, все НС-языки не только рекурсивны, но и примитивно рекурсивны (упражнение 2.16); при этом во всех имеющихся классификациях примитивно рекурсивных языков — или, что то же самое, предикатов — по сложности вычисления (см., например, [Ritchie 1963]) *) Это верно на самом деле и для любой цепочки в полном словаре Г.
90 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 НС-языки занимают самые нижние ступени иерархии. Переходя к временной сложности, отметим прежде всего, что для любой грамматики без растяжения Г неравенства (2) и (3) из § 2.1 дают kn+i ел < Гг(л)<-^-f. где с и k-—постоянные, зависящие от Г (и эффективно определяемые по Г). О возможности уточнения оценок временной сложности хотя бы для отдельных НС-языков известно немного, а то, что известно, получается довольно громоздкими рассуждениями; этот вопрос будет рассмотрен в следующем параграфе, а сейчас мы займемся сравнением временных сложностей НС-грамматик, неукорачивающих грамматик и грамматик без растяжения. Теорема 3.5. Для любой грамматики без растяжения Г можно построить неукорачивающую грамматику Г", эквивалентную Г и такую, что Гг'(п)<г-[Гг(л)]2, где г — постоянная, эффективно определяемая по Г. Доказательство. Пусть Г = (V, W, I, R) — грамматика без растяжения. Положим Г'= (V, W U {/0, Е}, /о, R'), где /о, Е — новые символы и R' получается из R следующим образом: а) каждое правило ф—>■ \|j e/?, где |ф|=7^=|\|}|, заменяется правилом ф£'*' ' —>\f>, если |ф|<|\|}|, и правилом ф—>'ф£'|ф|-|,1'', если |ф|>|\|}|; б) добавляются новые правила /о -*■ /о£, А) -*■ /, Еа —*■ ас, аЕ-+Еа, где а е V U W. Пусть (/ = со0, . • •, ач = х) — полным вывод в Г и \х\ —п. Непосредственной индукцией по i легко показать, что для любого / = 0, ..., п в грамматике Г' из цепочки /£n_1 выводима цепочка ш,,Еп-1т'I; при этом имитация применения одного правила ф->фе^ состоит в применении соответствующего правила из R' с предварительной «подгонкой» нужного числа символов Е к месту применения правила, если |ф|<|\|}|, или последующим сдвигом вновь полученных Е в конец цепочки, если |ф|>|\р|; таким образом, на имитацию одного шага в Г тратится не более 1 -|- ng
§3.31 СЛОЖНОСТЬ ВЫВОДА 91 шагов в Г', где g = max 11 ф | — I ф| |. В частности, из 1Еп~х выводима не более чем за /(1 + пё) шагов цепочка х, а поскольку /£n_1 выводима из /о за п шагов и п ^ pt (р — постоянная), цепочка х выводима в Г' из /0 не более чем за п + t(l + ng) < t(p + 1 + ptg) < P(p + 1 + pg) шагов. В то же время очевидно, что всякая цепочка в словаре V, выводимая в Г' из /0, выводима в Г из /. Итак, Г' эквивалентна Г, и 7>(лХ(р + 1 + pg) • [^г(п)]2- Замечание. Неизвестно, можно ли в теореме 3.5 заменить квадратичную функцию какой-либо медленнее растущей. Теорема 3.6. Для любой неукорачивающей грамматики Г и любого положительного действительного числа с можно построить НС-грамматику Г', эквивалентную Г и такую, что Tv (и) ^ max (1, cTr (n)). Доказательство. Обратившись к конструкциям, примененным для доказательства леммы 2.4 (о сцеплении) и теорем 2.1 (о сжатии выводов) и 2.2 (об ускорении выводов), мы без труда убедимся, что каждая из этих конструкций, будучи применена к неукорачивающей грамматике, приводит снова к неукорачивающей грамматике. Это дает нам возможность поступить следующим образом. Пусть Г — данная неукорачивающая грамматика и с > 0 — данное действительное число. Фиксируем еще два положительных действительных числа С\ и с2, пока произвольные. Применив конструкцию теоремы об ускорении выводов, построим неукорачивающую грамматику Гь эквивалентную Г и такую, что Гг, («) ^ <!тах(1, С[Гг(п)).Кэтой грамматике применим конструкцию теоремы о сжатии выводов, причем в качестве постоянной с, фигурирующей в формулировке этой теоремы, возьмем число с2. Полученная при этом грамматика Гг эквивалентна Ti и обладает следующими двумя свойствами: а) Гг,(п)^ГГ,(п) +max(c2n, 1); б) длины левых частей правил fag грамматики Гг (см. доказательство теоремы о сжатии) не превосходят двух, а правых — трех. К Гг применим теперь конструкцию леммы о сцеплении со следующими видоизменениями: правила 3-го и
92 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 4-го рода будут определяться иначе, а именно: правила 3-го рода будут иметь вид а(ш) —*ш, где со — произвольная непустая цепочка длины, не большей 2/, в основном словаре Гг (/ имеет тот же смысл, что и в доказательстве теоремы о сжатии), а правила 4-го рода — вид (а(со))°а—»ша, где со — произвольная цепочка длины, не большей 2/, в основном словаре Гг и а — произвольный основной символ Гг; кроме того, правилам h грамматики Гг не будут сопоставляться правила 1-го рода. Полученную так грамматику мы обозначим Гз. Если t — длина вывода в Гг, т — длина соответствующего вывода в Гз и Щ\, гпг, тз, т4 имеют такой же смысл, как в доказательстве леммы о сцеплении, то, рассуждая, как в этом доказательстве, мы получаем тг^. (3+1 )mi = = 4mi ^ \t (поскольку длины правых частей тех правил Гг, которым сопоставляются правила 1-го рода, не превосходят трех, а разности длин левых и правых частей этих правил — единицы; кроме того, t = mi -+- m3 + ^U) • Отсюда т ^ Ы. Таким образом, Гг,(л)^5ГгДп). При этом каждое правило 1-го рода грамматики Гз имеет один из следующих шести видов: (О Pi-*v>; (И) P,-^y,yS; (iiOP.Pg-v.vS; (iv)P?fe-v,Y2°; (v)PA°-y,y§yS; (vi) P&-*y,y2y°3. Построим теперь по грамматике Гз НС-грамматику Г4 следующим образом: а) Каждое правило 1-го рода вида (iii) — (vi) и каждое правило 2-го рода заменим некоторой системой новых правил, которую мы выпишем только для случая правил 1-го рода вида (v) и (vi) (для остальных случаев система строится совершенно аналогично). Для правила вида (у): PiP°^Fp°; FP°^Fy°y3°*> ^YzYa^YiYzM- Для правила вида (vi): p°P2^p°F; p°F-> -* GF; GF -> Gy°y°3; Gy°y°3 -* YiYEy§. 3Десь F, G — новые символы, разные для разных правил, которые мы присоединяем к вспомогательному словарю грамматики.
§ 31) ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ НС-ЯЗЫКОВ 93 б) Правила 1-го рода вида (i) и (и), а также правила 3-го и 4-го рода переносятся в схему Г4 без изменения. Грамматика Г4 эквивалентна Гз, поскольку, с одной стороны, применение каждого правила Гз можно заменить применением соответствующей системы правил Г4, с другой — в каждом полном выводе в Г4 правила одной системы могут применяться только подряд (ввиду того, что цепочка, входящая в полный вывод в Гз, не может содержать более одного вхождения символа вида у), и поэтому вместо каждой такой системы можно применить соответствующее ей правило грамматики Г3. Очевидно также, что Гг,(л)^ 4Гг3(п). Итак, мы имеем Гг,(п)< 20[Гг,(л)-f max(с2п, 1)]. Если положить с2 — , . , , гда dx — максимум разностей длин правых и левых частей Г[ {dx эффективно определяемо по Г и сх), то в силу последнего из неравенств (2) § 2.1 будет с2п<Тг, (л), так что ^г4(«)^40Гг,(л)^ ^40щах(1,с1Гг(л)). Положив с, = с/40, получим Trt(n)^. <! max (40, c7Y(n)). Остается добавить к схеме Г4 всевозможные правила вида /—>#, где / — начальный символ Г4, х ^ L (Г4) и | х | <; 40d4 +1 (d4 — максимум разностей длин правых и левых частей правил Г4); поскольку среди таких цепочек содержатся все выводимые в Г4 не более чем за 40 шагов, имеем для полученной таким образом НС-грамматики Г': 7V(n) <! max (1, сТг(п)). Замечание. Из теоремы 3.6 вытекает, что в теореме 3.5 квантор существования по г можно заменить квантором общности. В заключение заметим, что операторы левой и правой глубины, разброса и активной емкости (точнее, соответствующие относительные операторы) являются для класса неукорачивающих грамматик сигнализирующими и соответствующие сигнализирующие функции для любой неукорачивающей грамматики рекурсивны. (Это частный случай утверждения упражнения 2.10,6).) § 3.4. Оценка временной сложности некоторых НС-языков Как отмечалось в предыдущем параграфе, временная сложность любой НС-грамматики заключена между линейной и показательной функциями. Естественно
94 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 возникает вопрос: можно ли усилить эту тривиальную оценку, т. е. найти такую функцию f(n), растущую медленнее показательной, чтобы имело место равенство &Т\ (НС) = 2'(НС) *)? К сожалению, ответить на этот вопрос мы не можем. Мало того, неизвестно даже, верно ли соотношение .^(НС) — 9? (НС). Единственный результат, имеющийся пока что в указанном направлении, состоит в том, что ни для какой функции h(n), растущей медленнее, чем п2, равенство 3?\(НС) = i?(HC) не имеет места. Доказательство этого и будет основной целью настоящего параграфа. Начнем с введения некоторых вспомогательных понятий. Пусть Г — НС-грамматика, D = (юо, ..., соп)—вывод в Г такой, что | ооо [ = 1, Т'— какое-либо растянутое дерево вывода D и М'— множество узлов Т'. Распространим отношение «быть предком» («быть потомком»), определенное на М', на множество подмножеств М', являющихся интервалами цепочек со0, • • •, »и. Именно, если 0 ^ i ■< / ^ п и Q — интервал цепочки ©j, мы будем называть предком Q в цепочке и; наибольший непустой интервал этой цепочки, для которого все потомки его точек, являющиеся точками со.,-, принадлежат Q; если же такого интервала нет, то предком Q в цепочке со* мы будем считать любой пустой интервал ац, включая несобственные интервалы (—, у) и (б, —), где у и б — соответственно первая и последняя точки вц. Если Q имеет непустого предка в цепочке со,, то других предков Q в этой цепочке не существует. Интервал цепочки coj, для которого Р является предком в шг-, будет называться потомком Р в цепочке coj. Если 0 fg; i <Z j ^ n, P — интервал цепочки шг- и Q — множество всех точек coj, являющихся потомками точек Р (очевидно, Q также есть интервал), мы будем называть Р точным предком Q в ац, a Q — точным ПОТОМКОМ Р В COj. Пусть далее D = (соо, ..., со„) — вывод в НС-грам- матике Г, £>' = (сОд, ..., со^_р соп) — некоторый соответствующий D размеченный вывод и Т' — некоторое соответствующее D' растянутое дерево вывода. Если Т' фик- *) Имеет смысл ставить вопрос лишь об усилгнии верхней оценки — нижнюю, очевидно, усилить нельзя.
§ 3.4] ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ НС-ЯЗЫКОВ 95 сировано, то в каждой цепочке со», O^t^n—1, имеется единственная «активная точка», отвечающая «ядру» применяемого на i-\- 1-м шаге правила, т. е. такая точка, из которой в дереве Т' либо выходит более одной дуги, либо выходит одна дуга, но конец ее помечен иным символом, чем начало. Пусть эта «активная точка» есть %* * е,- * 9, (напомним, что точка — это вхождение символа). Если на i-м шаге применяется правило фг-1 —*■ \|)i-i, так что со* = U-ityi-it]i-i (причем вы- деленное вхождение \pt-i «то самое»), и если при этом ||{-|| ^ |хг| < |£t-iipi-i| (т. е. «активная точка» содержится в i|)i-i), мы будем говорить, что i -f 1-й шаг сильно зацеплен с i-м по отношению к размеченному выводу D' и дереву Т'. Если в НС-грамматике каждому полному выводу D отвечает единственное растянутое дерево Т' и при этом каждый следующий шаг D сильно зацеплен с предыдущим по отношению к Т' и любому соответствующему размеченному выводу D', мы будем называть эту грамматику сильно сцепленной. Лемма 3.1 (о сильном сцеплении). Для любой НС-грамматики Г можно построить сильно сцепленную НС-грамматику Г", эквивалентную Г и такую, что Гг(я)<Гг(п). Чтобы убедиться в справедливости этой леммы, достаточно заметить, что построенная при доказательстве теоремы 3.6 грамматика Г' станет сильно сцепленной, если к правилам 3-го рода фигурирующей в ее построении грамматики Г3 добавить всевозможные правила вида (а((й1))0а((й2)^-(а((й1))0р((й2), (а (со,))° Р (со2) -* -^yWPW. y(coi)P(co2)^-y(°>i)C02. где со,, со2 —непустые цепочки длины, не большей 21, в основном словаре Гг и р((о2), у(щ) — новые вспомогательные символы, а правила 4-го рода (а (со))0а ->а>а заменить правилами вида (а (со,))0 у (»2) -* (а (со,))0 б (со2), (а (со,))0 б (©<>) -+ е (щ) б (сог), е (со,) б (со2) -> е (cuj) со2, е (со,) со2 -* у (со,) со2, е (cuj) -> в>и где a>i, со2, у означают то же, что и раньше, а б (юг), e(coi) — новые вспомогательные символы. При этом временная сложность грамматики, вообще говоря, возрастает, но не более чем вчетверо, так что подбором постоянной с2 можно добиться выполнения нужного неравенства для временной сложности.
96 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 Введем еще следующее понятие. Для произвольной цепочки со будем называть ее сечением любой (собственный) пустой интервал (а, р), где а и р— соседние точки со. В качестве обозначения для сечения (а, р) будет использоваться также любая пара вида (А, В), где А—отрезок со с правым концом а и В — отрезок со с левым концом р. Пусть теперь Г — сцепленная грамматика и D== = (со0, ..., со„)— вывод в Г, являющийся отрезком полного вывода. Пусть гх, ..., гт — некоторый пересчет правил Г и g — максимум длин правых частей правил Г. Пусть далее со0 = в>'0в>'0' и со£, ©" — соответственно точные потомки cog и со" в сог Обозначим через й>'( и со" соответственно наибольший конец со, и наибольшее начало со", длины которых не превосходят g. Отрезок со^со" назовем 1-й зоной влияния сечения (со^, со") = А. Если В=х*Р*£ — точка цепочки со, и С = т] * у * 8 — точка цепочки со", то расстоянием точки В, соответственно С, от центра зоны будет называться число—| Р£ |, соответственно | туу | (таким образом, расстояние никогда не равно нулю). Пусть i\, ..., ip — последовательность, составленная из номеров тех шагов вывода D, на которых «активные точки» содержатся в соответствующих зонах влияния сечения А. Следом вывода D на сечении А мы назовем последовательность {{k\, u{), ..., (kp, ир)), где kj — расстояние «активной точки» цепочки соь-i от центра зоны и «j — номер правила, применяемого на шаге с номером ij. Возможен и пустой след. Лемма 3.2 (о замещении). Пусть £>, = (со0, ..., со„) и D2 = (0О, • • •, 0т) — выводы в сильно сцепленной НС-грамматике Г, являющиеся отрезками полных выводов, U ПуСТЬ С00 = «, ео = 0^', a>n = a>X. вт = втв£. где cog и Q'0 — точные предки для и>'п и Q'm соответственно. Если при этом след вывода Dl на сечении (а>'0, со") совпадает со следом вывода D2 на сечении (0^, 0"), то из цепочки сод0" выводима в Г цепочка со^0^. Доказательство. Пусть ((ku щ),..., (kp,up))— общий след и (й, ..., ip), (/i, ..., jp) — соответствую-
§ 3.4] Оценка Временной сложности нб-языков 9?' щие последовательности шагов выводов Dx и D%. Пусть для определенности k\ < 0. Тогда на шагах вывода Du предшествующих й (если такие имеются), может преобразовываться только цепочка со^. Если при некотором t = 1, ..., р— 1 числа kt и kt+i имеют разные знаки, то обязательно it+\ = it + 1. Если же kt и kt+u например, оба положительны, то между шагами it и it+i может преобразовываться только правая половина цепочки (т. е. потомок cog'). То же верно и для вывода £>2. Поэтому со^б^ можно вывести из u>'qQq так: сначала преобразовывать в>'0, как в выводе D\, до шага г'ь затем проделать шаги, входящие в след, до первого шага — с номером it в Di и jt в £>г,— для которого числа kt и kt+i имеют одинаковые знаки; затем, если, для определенности, эти числа положительны, преобразовывать правую половину цепочки 6//( как в выводе D2, до шага П+\ и т. д. Теперь мы можем перейти к основному утверждению этого параграфа. Пусть У —словарь, аи а^, Ь — элементарные символы такие, что аи а^ е V, Ь фУ, и пусть \|з — функция, отображающая {аи а$* в bV*b и удовлетворяющая условию |\|)(#) | =£J d"|#|, где d — постоянная. Положим 1ф = {xty(x)x\x ^ {аи а2}+}. Функцию \|з можно подобрать так, чтобы L^ был НС-языком (в частности, это верно при ty(x)=bb— пример 11 из § 1.3 с тривиальной модификацией; дальнейшие примеры см. в упражнении 3.19). В то же время имеет место Теорема 3.7. Если f(n)—числовая функция, по порядку меньшая*) п2, то L$ ф 3?] (НС). Доказательство. Допустим противное: пусть существует НС-грамматика Г = {V, W, I, R), для которой ЦТ) =Un Тг(п) </(п), так что lim Тг(п)/п2=* Л-»оо = 0. Будем считать — ввиду леммы 3.1 мы имеем на это право, — что Г сильно сцеплена. Введем целочисленные параметры /, п. Число / всегда будет кратно п2; будем полагать l/n=r, lln2=*rjn=q. *) Говорят, что функция /(«) по порядку меньше g(n), если lim f («)/g («) = 0. Л-»оо 4 А. В. Гладкий
98 Грамматики составляющих [ГЛ. 3 Будем, кроме того, считать, что всегда q^g, где g— максимум длин правых частей правил Г. Пусть * е {аьа2}*, |*| = 2/. Положим у = у(х) = = х\р(х)х. Представим у(х) в виде у(х) = yi(x) ... • ■ ■ yzn+i(x) (вместо yi(x) часто будем писать просто yt), где Ы = ••• = \Уп\ = \Уп+г\ = ... = |t/2n+i|= r, так что, если х' и х" — соответственно левая и правая половины х, то yn+i = х"^(х)х'. Пусть Dx= (1 = н>°(х), ауЦх) н>*(х) =у(х)) — вывод у из / в Г, удовлетворяющий условию s ^ ^ Тт (\у\), откуда для любого е> 0 при достаточно больших / следует (1) s<e/2. Для каждого / = 0 s представим цепочку <о/ = со/(#) в виде и>1 = со' (х) а{ (х) со> (х) а[ (х) ... а[п (х) со|п+1 (х), где ®1(х) — предок у t{x) и длина каждого а\{х) не больше единицы. Пусть /0 —наименьшее из чисел /, для которых Будем различать два случая: 1) Найдутся сколь угодно большие п такие, что бесконечно много чисел /, кратных п2, удовлетворяет условию: не менее половины всех цепочек х длины 2/ таковы, что как среди отрезков со/0(х), ..., cu£(#), так и среди отрезков а>^+2(х) и^+, (х) имеются отрезки длины, не меньшей q. (Соответствующие пи/ будем называть допустимыми.) 2) Для каждого достаточно большого п все достаточно большие числа /, кратные п2, таковы, что по крайней мере для половины всех цепочек х длины 21 либо длины всех отрезков сй{°(*)> ..., в>%(х), либо длины всех отрезков ю£>+2(#), ..., ю|^+1(#) меньше q. Случай 1. Пусть iit t2 — соответственно наибольшее из чисел i'=l, ..., п и наименьшее из чисел i = = п -f- 2, ..., 2/i -f- 1, удовлетворяющих условию |col" {x)\^sq для данной цепочки х.
§ 3.41 ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ НС-ЯЗЫКОВ 99 Пусть ЗЯ0 — множество всех цепочек в {ai, a2) длины 2/ и 2fti — наибольшее по мощности подмножество Ш?о, для любых двух цепочек которого h и i2 соответственно совпадают. При достаточно больших допустимых I будет, очевидно, (j,(SWi) >21"'/6. Положим «We«{;Wa{;(*)©{j+I(jc)aA+1(*) ... ©{;(*)• Ясно, что | л(лг) |< |ю£| + |o»jJ«+ij + |со/»j + 2nq + 2tr, но 141' N°|^r' I &!i+i I <<? + £'> поскольку <7>g- и r = nq, имеем (2) | я(дс) |< 8r. Пусть 5Ш2 — наибольшее по мощности подмножество Ш?1, удовлетворяющее условию: если Xi, x2 e ЗИг, то jt(xi) =n(x2). В силу (2) при достаточно больших допустимых пи/ будет ц(Ш2) ^ 21ог/6. Общее значение п(х) для * е ЗИ2 обозначим Я. Начиная с этого момента, число п будем считать фиксированным, так что q и г будут расти пропорционально /. Обозначим через D'x «хвост» вывода DX) начинающийся с со'», через А — произвольное сечение цепочки со'° и через рд — длину следа вывода D'x на А. Если 5 — множество всех сечений со'», то, очевидно, (3) 2 РД<2^. В силу (1) и (3) для любого положительного действительного числа б и любого целого положительного числа k при достаточно больших допустимых / в каждом из отрезков со^, ©£+1, со'» доля сечений, не удовлетворяющих неравенству (4) РД < Ы, будет не больше l/k. Пусть и есть одно из чисел г',, п+ 1, г2 и S„ —множество сечений о»'0, принадлежащих ю^ (т. е. тех сечений а1', которые являются одновременно сечениями со*,»). Для произвольного AeSB обозначим через /д число 4*
100 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 цепочек, принадлежащих 9№2) для которых при данном А выполняется (4); число сечений, принадлежащих Sa, для которых (4) выполняется при фиксированной цепочке х, будет обозначаться gx. Очевидно, 2 /д= 2 ёх- Но Д е Su хеш2 для любой цепочки xel2 имеем g*^n(SB) • fl — -Н . Поэтому в 5„ найдется хотя бы одно сечение А, для которого (5) fA^(3№2).(i__L). Это сечение будем обозначать А[ при и = iu A2 при и —п-f-l и А3 при и = п2. Пусть *Ш3 — подмножество 9№2, состоящее из всех цепочек, для которых каждое из сечений Alt A2, А3 удовлетворяет условию (4). Из (5) следует, что при достаточно больших допустимых / будет ц(9№3) ^ 29г/6- Пусть теперь Ti4 — наибольшее по мощности подмножество Tt3, для любых двух цепочек которого хи х2 следы вывода D'Xl на сечениях Аи А2, Аз соответственно совпадают со следами вывода D'Xi на этих сечениях. В силу (4) при достаточно больших допустимых / будет ц(Э№4)>28'/6. Для произвольной цепочки х е 3№4 представим со'» = <о'° (х) в виде (al' = tl(x)t2(x)t3(x)li(x), где (£,(*)> £г+1(х)) = А, (г= 1, 2, 3). Поскольку 3№4<=Э№2 и все три сечения Аи А2, А3 принадлежат л(х), отрезки £2 (х) и £3М Для всех х е 2Я4 соответственно совпадают; будем обозначать их £2 и £°. Точный потомок отрезка t,i{x) (i = l, 2, 3, 4) в цепочке у(х) будет обозначаться Zt(x). Пусть 3№5 — наибольшее по мощности подмножество 3№4, для любых двух цепочек которого хи х2 прк каждом г'=1, 2, 3, 4 длины отрезков zt{xy) и zt(x2) совпадают. При достаточно больших допустимых / будет ц(Ш5)^27'!6. Общее значение длины zi(x) для хе9№5
$ 3.4] ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ НС-ЯЗЫКОВ Ml обозначим U., Поскольку AieS*,, A2^S„+i, A3eS<2, имеем <б) lu U < l, (7) h + h, h + h>l. Кроме того, имеет место хотя бы одно из двух неравенств: i(8) /, + h > 21, (8') h + U > 21. Для определенности будем считать, что выполняется (8). Пусть теперь ЗЯ6— наибольшее по мощности подмножество Ш5, для любых двух цепочек которого хи х2 отрезки Zi(xi) и zl{x2) совпадают. Очевидно, [л(Т16)'^2п,6~11. Общее значение z, (х) для х е 3№6 обозначим z°v Покажем, что в 2#6 найдутся две цепочки xt и х2 такие, что (9) z3(xl)zi(xl) Ф г3(х2)г4(х2). В самом деле, если х{ и х2 — различные цепочки из Tt6, то равенство z3 (*,) z4 (*,) = z3 (x2) z4 (x2) = z возможно только тогда, когда 13 + Ц < 21 — lu так что xl = z°w'z, х2 = z\w"z, и при этом w' Ф w". Но различных цепочек длины 2l-h-l3 — U имеется 221-1'-к~и < 21~1' (в силу (7)). Поэтому в Ш6 найдется не менее 2г/6 цепочек х, не удовлетворяющих условию z3(x)zA(x) — z. Пусть хи х2 — цепочки из 9Я6, удовлетворяющие (9). Из цепочек «М*0 = №)»(*■) в Г выводимы соответственно цепочки у{х{) = г\г2{х{)гъ(х{)гА{х^) и #Ы = г°Мх2)*Лх2)гЛхг)-
102 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 По лемме 3.2 из ©'"(л^), а значит И из /, должна быть выводима также цепочка у = z°lz2(*2)z3(*i)zi(x\)- Но в силу (8) и (9) цепочки у{х2) и у не могут одновременно принадлежать L^. Случай 2. Пусть для определенности найдутся сколь угодно большие п такие, что бесконечно много чисел /, кратных п2, удовлетворяют условию: по крайней мере для четверти всех цепочек х длины 2/ длины всех отрезков ю(\ ..., (о£> меньше q. Рассуждая совершенно аналогично случаю 1 (с очевидными упрощениями), можно для достаточно большого / найти две цепочки х{ и х2 такие, что ©'"(.Vi) и (о1а(х2) представимы в виде ю/»(^1) = ^2(^1), ю/»(^2) = ^2(^2), где а) следы «хвостов» выводов DX{, начинающихся с G>h(Xt), на сечениях (£j, £2(*г)) при /=1 и при / = 2 одинаковы; б) если zx (х{), z2 (Х{) — соответственно точные потомки отрезков £j, Z2(xt) в цепочках */(#,) (/==1, 2), то \z1(xi)\ = \z1{x2)\-=il, \z2(xl)\ = \z2(x2)\ = l2, причем /„ 12 > I и хотя бы одно из чисел 1и 12 больше 21; в) zi(xi)^zi(x2) (/=1, 2). По лемме 3.2 из со'»^), а значит и из /, должна быть выводима цепочка Z\ (x2) z2 (x{), которая в силу в) не может принадлежать L^ одновременно с у{х2), если /[ > 21, и одновременно с у (#[), если 12 > 21. Теорема доказана. Замечания. 1) Среди языков, удовлетворяющих условию теоремы 3.7, имеются такие, для которых доставляемая этой теоремой нижняя оценка временной сложности является точной, т. е. в принципе не может быть улучшена. Так, легко убедиться, что для грамматики примера 11 из § 1.3 временная сложность меньше я2, а по теореме 3.6 для порождаемого этой грамматикой языка можно построить и НС-грамматику не большей сложности. (Это верно и при упомянутой на стр. 97 модификации.) Другие примеры указаны в упражнении 3.19. Как уже отмечалось, примеры языков, для которых вытекающая из теоремы 3.7 оценка не является точной, неизвестны.
§ 3.4] ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ НС-ЯЗЫКОВ ЮЗ 2) Если функция \(> ни для какой постоянной d не удовлетворяет условию |\f>(#) |^ d- \x\, то утверждение теоремы 3.7 может не иметь места (упражнение 3.20). Остановимся еще на классе i?£(HC) (совпадающем, в силу теоремы 3.6, с 2^.П)(НС), где {с-п}—класс всех линейных функций). Ввиду теоремы 3.7 этот класс является собственной частью j?(HC); с другой стороны, ондсодержит все Б-языки (см. ниже, замечание к упражнению 4.1). Естественно спросить, является ли i?(B) собственной частью S?£(HC). Положительный ответ на этот вопрос вытекает из следующего примера. Пример 1. Пусть Г—НС-грамматика со схемой 1->ЬА{Ь ЬАХ -> ЬА2А2 A2Ai -> А2А2А2 А2Ъ -> А3А3Ь А2А3 —*■ Л3Л3Л3 ЬА3 -* ЬА4А4 AiA3 —> Л4Л4Л4 Л4Ь-> АХАХЬ А{->а Очевидный подсчет показывает, что Гг (п) ^ ^2(п —2).Втожевремя!(Г) = {ба24*б|й = 0, 1, ...}; в следующей главе будет доказано утверждение (следствие из теоремы 4.5), из которого непосредственно вытекает, что этот язык не является бесконтекстным. Рассмотрим еще один пример языка, принадлежащего разности 5^ (НС) — S'(B). Пример 2. Язык примера 10 из § 1.3 — {апЬпап\ п = 1, 2, ...} — не является Б-языком (см. ниже, § 4.3, пример 1). Покажем, как построить неукорачивающую грамматику с линейной временной сложностью, порождающую этот язык *). *) Это построение принадлежит Р. В. Фрейвалду.
104 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ,3 Прежде всего легко построить неукорачивающую грамматику Ti, порождающую язык {пп'п\п = 1, 2, ...}, где п — двоичная запись числа п и п' — тоже двоичная запись п, но состоящая из цифр 0' и V (чтобы можно было различить «зоны» цепочки); эта грамматика строится аналогично грамматике примера 11 из § 1.3, и, как в этом примере, Ti можно построить так, чтобы цепочка k — nii'n была выводима в Ti не более чем за c\x\z шагов, где с — некоторая постоянная (ср. замечание *1) после теоремы 3.7). Поскольку | iin'n |^3(log2n -j- 1), число с\ nn'ii f мажорируется линейной функцией от Зп = |an6nc™|. Поэтому нам достаточно построить Неукорачивающую грамматику Гг, в которой для любого п = 1, 2, ... из цепочки п будет выводима не более чем за с\П шагов, где Ci — постоянная, цепочка ап, и не будет выводима никакая другая цепочка в словаре {а}. Мы не будет выписывать схему, грамматики Гг ввиду ее громоздкости; ограничимся описанием принципа ее работы — вполне достаточным, впрочем, для фактического построения схемы*). Пусть n = isis-i ... i{ia, где // = 0, 1 и /s=l. Вывод в Г2, начинающийся цепочкой п, будет состоять из s + 1 «макрошагов». Цепочка, выведенная к началу fe-ro макро- шага {k = 0, ..., s), будет иметь вид /s...ift+1/ft^a'ft-> '** Ч где /*_, ... /0 = /*_, • 2*"1 + ... + /о • 2° и <у = = А0А0АА0А3А0А7 ... АйАф~1~1. Макрошаг состоит в следующем:- а) Если 4 = 0, то ik превращается в Л0, каждое «старое» вхождение Л0— в А0А и каждое вхождение А — в АА. В результате получается цепочка is ... ik+iAaAoAAoA3... A0A2k-laik '" {° (поскольку в этом случае ik-\ ... i0 = ik • • • h)- б) Если ik =1 и k < s, то ik превращается в Л0Л0Л, каждое «старое» вхождение Л0, кроме последнего, — в А0А3, каждое вхождение Л левее последнего вхождения Л0 — в Л4, а последнее вхождение Л0 и каждое вхождение Л правее него — в аа. В результате получается опять-таки це- *) На самом деле для осуществления приводимой ниже конструкции первый и последний символы цепочки Я должны быть предварительно как-то помечены.
$ 3.q НС-ГРАММАТИКИ С ОДНОСТОРОННИМ КОНТЕКСТОМ 105 почка is ... ik+lA0A0AA0A3 ... А0А2 ~la'k •" Ч в) Если k = s, то is и все вхождения символов А0 я А заменяются на а. Получается цепочка а'*'"'0. Легко видеть, что схему описанной грамматики можно построить так, чтобы на каждом шаге, не входящем в последний макрошаг, цепочка удлинялась. Поэтому длина вывода цепочки ап из п не будет превышать 2га шагов. Построение примера закончено. Заметим еще, что любой язык из .2^(НС) распознается ДЭ-машиной с ограниченным растяжением (теорема 2.3,6), лемма 2.3, упражнение 3.14), так что его дополнение является НС-языком. В то же время даже дополнение к Б-языку, как и пересечение двух Б-язы- ков, может не принадлежать STn{HC) (упражнение 3.21). § 3.5. НС-грамматики с односторонним контекстом В настоящем параграфе будет рассмотрен один специальный класс НС-грамматик, выделяемый с помощью некоторого на первый взгляд весьма сильного ограничения, но тем не менее оказывающийся эквивалентным по «порождающей силе» классу всех НС-грамматик. Будем называть НС-грамматику левоконтекст- ной, соответственно правоконтекстной, если правые (левые) контексты всех ее правил пусты. Лево- контекстные и правоконтекстные НС-грамматики будем называть также НС-грамматиками с односторонним контекстом. Довольно долго стоял вопрос о существовании НС-грамматик с односторонним контекстом, порождающих не бесконтекстные языки (см. библиографические замечания). Тем не менее имеет место •'Теорема 3.8. Для любой НС-грамматики может быть построена эквивалентная ей левоконтекстная НС- грамматика. Доказав эту теорему, мы, разумеется, будем вправе заключить о справедливости аналогичного факта для правокрнтекстных грамматик..
106 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 Чтобы сделать основную идею доказательства теоремы 3.8 более ясной, рассмотрим сначала пример. Пусть Г — грамматика со следующей схемой (которую мы для удобства разделим на 4 группы): I. II. 1) 2) 3) 1) 2) 3) 4) 5) 6) 7) 1->А1В 1->АВ I ->- aidi A-+Ct CtA->CtAt А{А -> AtAt AiB-^AiDi AiFj-^А^ц FftFk -> FnFki F{tB^FltD{ III. 1) Ct-+E{ 2) EtAi->EiA 3) AAt -► AA 4) ADt-+AFt 5) AF{l->AF, 6) F,Fu^F,Fh 7) F,Dt^F,Ft IV. 1) Et->ai 2) Fi^at (Индексы I, j, k принимают значения 1, ..., п.) Нетрудно видеть, что L(Y) = {хх \ х е {а,, ..., ап}+}. Именно, цепочка хх, где х = а, ... а, , sl>2, может Ч ls быть порождена так. Сначала по правилам группы I порождаем A*BS. Затем заменяем первое вхождение А на Ct, (правило строки II, 1)), с помощью 11,2) и 11,3) передаем информацию в начало правой половины цепочки и заменяем первое вхождение В на £>*, (11,4)). Это — первая половина первого цикла. Вторая половина начинается применением III, 1), после чего левая половина цепочки очищается от ненужной теперь информации (Ш,2), 111,3)) и Dt, заменяется на Ff, (111,4)). Следующие циклы проводятся так же, только для передачи информации используются дополнительно 11,5) и 11,6), для уничтожения ее — III, 5) и 111,6), а вместо 11,4) и Ш,4) применяются соответственно II, 7) и 111,7). После s циклов получаем цепочку.^,...Е($Р{ ... ... Fis, которая затем преобразуется в хх (IV, 1), 2)). Любой цикл можно в любой момент оборвать и перейти к следующему; однако если хоть один цикл не будет доведен до конца, то мы не сможем уничтожить все вхождения вспомогательных символов. Поэтому ника-
§ з.5] НС-грамматики с односторонним контекстом 107 кая цепочка в основном словаре, не имеющая вида хх, не выводима из / в Г. Перейдем к доказательству теоремы 3.8. Для произвольной грамматики Г = {V,W,I, R) и произвольного языка L s (V U W) * будем называть Г-о б р а з о м L множество всех тех цепочек в V, которые выводимы в Г из цепочек, принадлежащих L. Мы докажем предложение, несколько более сильное, чем теорема 3.8, а именно: для произвольной неукорачивающей грамматики Г с основным словарем V можно построить грамматику Г' с основным словарем V и вспомогательным словарем W такую, что: 1) каждое правило Г' имеет вид аА -> ар или А -* р, где А е= W, а, р е= V U W; 2) ЦТ) является Г- образом КС-языка {$HhGnHmGn\k, т, п = 0, 1, ...}, где #, G, Н — некоторые элементы W. Заметим прежде всего, что для данной неукорачивающей грамматики Г можно построить такую грамматику Гь что в каждом ее правиле длины левой и правой частей равны и L(T) есть Ti-образ языка {/0Qm|m = = 0, 1, ...}, где /о и Q — некоторые вспомогательные символы IV Построение IV весьма простое, предоставляется читателю. Любой вывод цепочки х е V* из цепочки IoQm в Ti (такой вывод существует тогда и только тогда, когда ^еЬ(Г) и т = |#|—1) будем называть нормальным ВЫВОДОМ X. Построим теперь грамматику Гг, обладающую свойством 1) искомой грамматики Г", а также следующим свойством: 2') вспомогательный словарь Г' содержит такие символы V, Р, Q, что Гг-образ языка L0 = = {VPnQmPn\m, n = 0, 1, ...} состоит из всевозможных цепочек вида Vzx£, где ^е!(Г) и z — двоичная запись длины некоторого нормального вывода х. Мы не будем приводить формальное построение Гг и ограничимся описанием принципа ее работы. При этом нам удобно будет представлять себе Гг — поскольку она работает с цепочкой yPnQmPn — как некоторую машину, снабженную конечной лентой, длина которой в процессе работы не изменяется; по ленте слева напра- в о движутся головки, которые могут возникать и исчезать. При этом можно потребовать, чтобы головки могли возникать только в крайней слева ячейке
108 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ, 3 (,а исчезать —в любой) и чтобы в одной ячейке не могли одновременно находиться две головки. Можно даже потребовать, чтобы на ленте в каждый момент была только одна головка.) В начале работы нам удобно будет считать все ячейки пустыми. Символы V, Р и Q будет интерпретироваться как различные метки, стоящие в пустых ячейках; эти метки будут сохраняться и при заполнении ячеек, так что любая ячейка в любой момент несет информацию о том, является ли она крайней слева, и если нет, то какой из трех зон она принадлежит — левой (первые п ячеек, не считая крайней слева), средней (следующие т ячеек) или правой (последние п ячеек). В левой и правой зонах будут записываться цепочки в словаре {0, 1}, причем цепочка v, записанная в левой зоне, всегда будет двоичной записью натурального числа, а цепочка w, записанная в правой зоне, — обращением двоичной записи натурального числа. Для простоты мы будем отождествлять v, соответственно w, с числом, двоичной записью которого служит С, соответственно w; будем говорить, например: «прибавим к v единицу» и т. п. Работа машины распадается на два этапа; вплоть до конца второго этапа в левой и правой зонах вместо нулей и единиц стоят их двойники, являющиеся вспомогательными символами; мы, однако, будем для простоты пренебрегать этим. Первый этап состоит в последовательном выполнении циклов, которые будут сейчас описаны. 1-й цикл. В последней ячейке левой зоны записывается 0, в первой ячейке средней зоны записывается /о и в первой ячейке правой зоны записывается 0. s + 1-й ци к л (s ^ 0). Содержимое левой зоны увеличивается на 1, затем в средней зоне имитируется применение некоторого правила грамматики T^ (причем сначала первый слева символ выбранного вхождения левой части правила заменяется первым символом правой части, затем второй и т. д.) и, наконец, увеличивается на 1 содержимое правой зоны. При этом прибавление единицы в правой зоне производится обычным способом: если в младшем (т. е. самом левом) разряде сгоит нуль, то он заменяется единицей, если единица, она заменяется нулем и делается перенос. В левой
§ 3.5) НС-ГРАММАТИКИ С ОДНОСТОРОННИМ КОНТЕКСТОМ 109 зоне единица прибавляется «наугад»: до какого-то места цепочка проходится слева направо без изменения, затем в некоторой ячейке нуль заменяется единицей (вариант — записывается единица в пустой ячейке); если следующая ячейка оказалась пустой, операция закончена, если нет, делается попытка истолковать произведенную замену нуля единицей как перенос при прибавлении единицы; если такое толкование невозможно, т. е. где-то правее есть еще нуль, то машина «ломается». Ясно, что если jceL(r) и z — длина некоторого нормального вывода х (в двоичной записи), то цепочка Vzxz может быть получена описанным только что способом из подходящей цепочки языка L0. Покажем, кроме того, что если х — цепочка в основном словаре Ti, то цепочка вида Vzxz, где ге{0, 1}*, может быть получена на первом этапе работы машины только тогда, когда ^еЬ(Г) и z — длина некоторого нормального вывода х. Для этого заметим, что если х не выводима в Ti из /oQ1*1-1' то цепочка вида Vvxw, v, w e {0, 1}*, может появиться в результате первого этапа лишь в случае, когда некоторые циклы обрываются при прохождении средней зоны (например: вместо того, чтобы применить, скажем, правило Л^-^ЛгВг, заменяем А{ на Лг и после этого сразу переходим к следующему циклу). Поэтому нам, во всяком случае, достаточно установить, что при получении цепочки Vzxz никакой цикл не может оборваться после того, как начало изменяться содержимое левой зоны, но до того как закончилось изменение содержимого правой. Очевидно однако, что: а) при обрыве цикла в средней зоне (в частности, на границе с левой или правой) содержимое левой зоны успевает увеличиться на 1, в то время как содержимое правой не меняется; б) при обрыве внутри левой зоны после начала изменения ее содержимое увеличивается даже больше чем на 1 (например, из 101 = 5 вместо ПО = 6 получится 111 = 7); в) при обрыве внутри правой зоны до окончания изменения ее содержимое уменьшается (поскольку запись в этой зоне производится справа налево; например, из 1011 = 13 вместо 0111 = = 14 получится ООП = 12). Следовательно, если хоть один цикл оборвется в нежелательном месте, то цепочки вида Vzxi мы уже не получим.
110 Грамматики составляющих [ГЛ. 3 Назначение второго этапа работы машины — проверить, совпадает ли содержимое правой зоны с обращенным содержимым левой. Это можно сделать аналогично тому, как порождалась цепочка хх в примере на стр. 106 (ясно, что этот пример нетрудно видоизменить так, чтобы получались цепочки вида хх). Формальные построения мы опускаем. Можно представлять себе ячейки правой зоны «двухэтажными»; в верхних этажах записан результат первого этапа, в нижних — копия содержимого левой зоны. В тех ячейках, в которых оба этажа оказываются заняты «тезками», двухэтажные вспомогательные символы заменяются основными; основные символы возникают и в левой зоне. Этим работа машины заканчивается. В дальнейшем будем считать, что длины цепочек языка L(T) не меньше восьми. Если это не так, то для цепочек меньшей длины можно очевидным образом ввести специальные правила. Заметим теперь, что для данной грамматики Г существует такая эффективно по ней вычисляемая постоянная с, что для каждой цепочки хе!(Г) среди цепочек, принадлежащих Гг-образу L0, найдется хотя бы одна цепочка Vzxz, для которой |z|<c|#|. (Это следует из того, что среди нормальных выводов цепочки х найдется хотя бы один бесповторный, длина которого мажорируется показательной функцией от \х\.) Фиксируем натуральное число t~^ 2(2с -\- \). Сопоставим каждой цепочке ц длины, не большей 2t, состоящей из символов, входящих в словари всех рассмотренных нами грамматик, новый символ а(ц). Определим понятие образа цепочки аналогично тому, как это было сделано в доказательстве теоремы 2.1, используя число t вместо фигурировавшего там /. С помощью того же метода «блочного кодирования», который был применен в указанном доказательстве, легко преобразовать грамматику Гг в грамматику Гг, обладающую свойством 1) грамматики Гг и сверх того следующим свойством: 2) fa-образ языка {# HkGnHmGn \ k, т, я = 0, 1, ...} состоит из всевозможных цепочек вида #£fta (z) а (х) а (i), где x^.L(T),z—двоичная запись длины некоторого нормального вывода х, R — некоторый специальный символ, k = 0, 1, ... и а(со) означает образ цепочки ш. В силу
УПРАЖНЕНИЯ 111 выбора числа t для каждой цепочки хе^(Г) найдется такая цепочка х = # Rha(z)a(x)a(z), принадлежащая Г2-образу языка {# HhGnHmGn\k, т, п = 0, 1, ...}, что 1x1 = И- Теперь для завершения конструкции достаточно построить грамматику Гз, удовлетворяющую тому. же условию 1) и такую, что а) для всякой цепочки х е V* и всякой цепочки х = # Rha(z)a(x)a(z), где ге{0, 1}* и 1x1 = 1*1> из X в Гз выводима х; б) цепочка #е V* выводима в Гз из цепочки вида # Rsa(z)a{u)a{z), где меУ, ге{0, 1}*, лишь тогда, когда это имеет место согласно пункту а). Принцип работы Гз может быть охарактеризован так. Пользуясь тем же представлением грамматики как машины, которое было использовано при построении Гг, будем считать ленту «четырехэтажной». Начальная информация записана в первом этаже. Работа начинается с того, что кусок первого эгажа, являющийся образом х, переписывается в правый конец второго этажа. Затем в третьем этаже записывается произвольная цепочка у е V*; после этого в правом конце четвертого этажа записывается (произвольный) образ у; наконец, содержимое второго и четвертого этажей сравнивается, и в случае их совпадения уничтожаются все этажи, кроме третьего. Доказательство теоремы закончено. Упражнения 3.1. Построить дерево вывода н растянутое дерево вывода цепочки 6а166 в грамматике примера 1 из § 3.4. 3.2. Показать, что одному размеченному выводу в НС-грамматике Г может отвечать более одного растянутого дерева вывода тогда н только тогда, когда схема Г содержит правило вида фЛ(|т1)"|Вг|)->фЛ(|т1)п>''|В1|), где А, В — вспомогательные символы, г] Ф Л, л = 0, 1, ..., k = 1, 2 причем левая часть этого правила входит хотя бы в одну цепочку, выводимую нз какого-либо вспомогательного символа. 3.3. Показать, что для всякого сжатого дерева вывода Т в НС- грамматике Г найдется такой бесповторный размеченный вывод D в Г, что одно из сжатых деревьев, отвечающих D, совпадает с Т. 3.4. Подсчитать число деревьев вывода и сжатых деревьев вывода цепочки азпЬзп в грамматике со схемой {/ -> А, I -> В, A->aAb, A->ab, В-> а3ВЬ, В -> аВЬ3, В -> а?Ь, В->а&3}. 3.5. а) Показать, что для. каждой НС-грамматики Г имеет место неравенство Y£ ^ <у£ (л) 4- d, где d—максимум длин цепочек
112 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 * в основном словаре Г, для которых существуют правила Г, имеющие вид фЛг|з -> фд;8г|). Аналогично для 'У" и Yp. б) Построить НС-грамматику Г такую, что Yp (я)»1, °У^ («)—«• 3.6. Построить неукорачивающие или почти неукорачивающие грамматики, порождающие следующие языки: а) [хх\ *«={а, «а}+}; б) {«"а™ ••• а"|л==Ь 2>"-} (fe — фиксированное натуральное число); в) {апЬтапЬт \т, л = 1, 2, ...}; г) {х\хе{а1 ак, 6, bk}+\ I * 1а. = |*Ц (i=\,..., k)}; д) множество всех простых чисел в простейшей записи; е) {х * у * z | ху = г), где х, у, z — двоичные записи натуральных чисел х, у, z соответственно. 3.7. Коммутативным замыканием языка L г s{a,, ..., aky называется язык /л^хе^,,— ак}* &3у (у е е L & | х \а = | у \а_, i =■ 1 fe]. Показать, что: а) коммутативное замыкание НС-языка есть НС-язык (причем по любой НС-грамматике Г можно построить НС-грамматнку, порождающую коммутативное замыкание L(T)); б) обратное неверно (более того, даже неперечислимый язык может иметь в качестве коммутативного замыкания язык {01,02}*). 3.8. Показать, что -для любой НС-грамматики можно построить эквивалентную ей грамматику без растяжения, не являющуюся почти неукорачивающей. 3.9. Показать, что для любой НС-грамматики Г и для любой цепочки х в основном .словаре Г можно построить НС-грамматику Г' такую, что L (Г") = (х \ L (Г)) — {Л}. Аналогично для правого деления. 3.10. Показать, что существуют вычислимые числовые функции f(p, q), обладающие следующим свойством: для любой неукорачивающей грамматики, мощность полного словаря и длины левых и правых частей правил которой не превосходят соответственно р и qt можно построить эквивалентную ей неукорачивающую грамматику, длины левых и правых частей правил которой не превосходят соответственно двух и трех, а мощность вспомогательного словаря не превосходит f(p,q). Найти явное выражение одной из таких функций. [Указание. Проанализировать доказательство теоремы 2.1.] 3.11. Показать, что для любой неукорачивающей грамматики можно построить эквивалентную ей почти неукорачивающую грамматику с вспомогательным словарем, состоящим из трех символов. 3.12. Пусть код грамматики определяется, как в доказательстве теоремы 2.4, и пусть 9~ — какой-нибудь класс грамматик, основные и вспомогательные словари которых содержатся в некоторых счетных множествах, причем объединение этих множеств не содержит символов, используемых для кодирования. Назовем грамматику Го универсальной для класса Т, если L (Г0) = {х (Г) х \ Г е бГ&^б/,(Г)), где к (Г)—код Г, Показать, что существует
УПРАЖНЕНИЯ ИЗ грамматика Г0, универсальная для класса грамматик без растяжения и такая, что Sr (п.) < п log2 п. 3.13. Построить ДЭ-машины с ограниченным растяжением, допускающие: а) каждый из языков упражнения 3.6; б) множество всех простых чисел в двоичной записи; в) множество {ai ... а« | s = 1, 2, ...}, где «i — *-й знак дробной части десятичного разложения числа У 2; г) то же для числа е. 3.14. Показать, что для всякой ДЭ-магаины без растяжения, допускающей язык L, можно построить ДЭ-машину без растяжения, распознающую тот же язык L. [Указание. Если ДЭ-машина без растяжения не допускает цепочку х, то ^-вычисление ведет либо к безрезультатной остановке, либо к уходу головки за пределы «х-зоны», либо к «зацикливанию» в этой зоне; каждое из этих трех явлений "можно обнаружить, не выходя из «х-зоны».] Замечание. Неизвестно, существуют ли языки, допускаемые Э-машинами без растяжения и не допускаемые ДЭ-машинами без растяжения. Отрицательное решение этой проблемы повлекло бы положительное решение проблемы замкнутости класса НС-языков относительно вычитания и взятия дополнения (ср. замечание 2) к теореме 3.4). 3.15. Дать верхние оценки временных сложностей грамматик, построенных при выполнении упражнения 3.6. 3.16. Оценить сверху возрастание временной сложности при построениях, использованных для доказательства теоремы 3.2. Получить из этих оценок другое доказательство теоремы 3.5. 3.17. Распространить теорему 3.6 на почти неукорачивающие грамматики. 3.18. Назовем грамматику Г= (V, W, I, R) обобщенной НС-г рамматикой (ОНС-г рамматикой), если каждое ее правило имеет вид |i4£2 —* gtBga, где Л s W и £,, |2, Ge(VUW)*. Показать, что для произвольной грамматики можно построить эквивалентную ей обобщенную НС-грамматику и притом без увеличения временной сложности. [Указание. Рассуждать по аналогии с доказательством теоремы 3.6.] 3.19. Для каждой из следующих функций i|)j построить неукора- чивающую грамматику, порождающую язык L^ и такую, что ее временная сложность мажорируется квадратичной функцией: ty\{x) — = bxb; ty2(x) = bxb; т|з3(х) = bxxxb. 3.20. а) Построить неукорачивающую грамматику Г, порождающую язык {*6.гл' Ьх | х е {aia2}+} и такую, что Tv (n) sg; п У п. б) Показать, что для любой монотонной числовой функции h(m), по порядку не меньшей т и такой, что множество {Н(т)\т = 1, 2, ...} является НС-языком, можно подобрать функцию г|), отображающую V в Ь[а\, а2}* Ь(а\, а2 е V, b ф V) и удовлетворяющую условию |i|>(*)| < я(|х|). |х|, так, чтобы существовала НС-грамматика, порождающая язык L^ и имеющая временную сложность, по порядку не превосходящую nh-l(n).
114 ГРАММАТИКИ СОСТАВЛЯЮЩИХ [ГЛ. 3 3.21. а) Пусть гЬ (л-) = 66. Построить Б-грамматику, порождающую язык CL*. [Указание. Использовать конструкцию примера 12 из § 1.З.] б) Очевидно, при ty(x) = bxb имеем Ly — Lt Г) i-2, где L\ = = {xbxby | х, у ge {au a2}+}, U — {xbyby \х,у<= {аи аг}*}. Построить Б-грамматики, порождающие L\ и L% 3.22. а) Построить грамматику Г с правилами вида аЛ -*■ аР и Л ->■ Р, где А — вспомогательный символ и а, р — элементарные символы, такую, что Г-образ языка Р* (Р — некоторый символ) есть {а"+"6" | п = 1, 2, ...; k =0, 1, ...}. б) Показать, что для любой НС-грамматики Г можно построить' грамматику Т\ с правилами такого же вида, как в пункте а), и грамматику Гг с правилами вида Аа. -*■ ра и А -> р (смысл обозначений тот же) такие, что L{T) будет Гг-образом Ti-образа языка Р+ [Haines 1969]. 3.23. Построить левоконтекстные НС-грамматики, порождающие следующие языки: а) {апЬпап\п=\, 2, ...}; б) [ххх | х <= {а, «ft}+}; в) {а"6а2"бал|«=1, 2,...}. 3.24. Проанализировав доказательство теоремы 3.8, показать, что для всякой НС-грамматики Г можно построить левоконтекстную НС-грамматику Г', эквивалентную Г и такую, что Гг, (п.) ^ [Гг (я)]2
ГЛАВА 4 БЕСКОНТЕКСТНЫЕ ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ § 4.1. Некоторые вспомогательные утверждения В этом параграфе мы докажем несколько простых лемм о Б-грамматиках, которые пригодятся нам в дальнейшем. Лемма 4.1. Для любой В-грамматики можно построить эквивалентную ей Ъ-грамматику, схема которой не содержит правил вида А —► В, где А, В — вспомогательные символы. Доказательство. Пусть Г = (V, W, I, R) — Б- грамматика. Введем на W бинарное отношение рг; АрГВ тогда и только тогда, когда схема Г содержит правило А—>В. Граф {W, рг) обозначим Gr. Если А, В е W и в Gr имеются пути изЛвВиизВвЛ (допускаются и пути нулевой длины), то будем писать АогВ. Ясно, что аг есть отношение эквивалентности. Сопоставим каждому классу 5 е W/o г новый символ as и положим Т1 = (V, Wu aSi, tfi), где Wt ={as|5 e= Wlar\, Si — класс, содержащий /, и Ri получается из R заменой в левых и правых частях всех правил каждого вхождения каждого символа Aef вхождением символа as(A), где S(A) —класс, содержащий А. Легко видеть, что Гч эквивалентна Г и граф Gr, не содержит замкнутых путей ненулевой длины. Пусть теперь В — висячий неизолированный узел графа Grt и Аи ..., Аи — все узлы, из которых идут дуги в В. Устраним из схемы Ti правила Ai-+ В, ...
116 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 ..., Аи-* В и одновременно добавим к ней всевозможные правила вида Ai-+ty Аи~»■ г|з, где \!р — правая часть какого-либо правила Ti с левой частью В. Полученную так грамматику обозначим Гг- Поскольку В — висячий узел Gr,, среди новых правил нет ни одного правила вида Лг- -* С, где С е Wi, так что граф Gr, имеет меньше дуг, чем Gr\. В то же время Гг эквивалентна 1\. Продолжая этот процесс, получим в конце концов грамматику Гз, эквивалентную Г4 и такую, что все узлы графа Gr, изолированные; это и требовалось сделать. Лемма 4.2. Для всякой Б-грамматики можно построить эквивалентную ей Б-грамматику, правые части правил которой не содержат начального символа. Если при этом исходная грамматика удовлетворяет требованию леммы 4.1, то новую грамматику можно построить так, чтобы и она ему удовлетворяла. Если исходная грамматика автоматная, то и новую можно сделать автоматной. Доказательство. Достаточно добавить к вспомогательному словарю данной грамматики новый символ /', в правых частях правил заменить все вхождения начального символа вхождениями /' и добавить к схеме всевозможные правила вида /'-»-я|), где \|j — правая часть правила, левой частью которого служит начальный символ. Будем называть Б-грамматику Г стандартной бинарной Б-гр а м м а тико й, если каждое правило Г имеет вид А-+ВС или А—*а, где А, В, С — вспомогательные символы и а — основной символ. Стандартная бинарная Б-грамматика обладает тем свойством, что для всякого ее дерева вывода соответствующая система составляющих (см. § 3.1) бинарна. Лемма 4.3. Для всякой Б-грамматики можно построить эквивалентную ей стандартную бинарную Б- грамматику. Если при этом исходная грамматика удовлетворяет требованию леммы 4.2, то новую можно построить так, чтобы и она ему удовлетворяла. Доказательство. Пусть T~{V,W,I,R)—Б- грамматика. В силу леммы 4.1 мы можем считать, что R не содержит правил вида А -> В, где А, В е W. Мы можем считать также, что каждое правило либо имеет
§ 4.1] НЕКОТОРЫЕ ВСПОМОГАТЕЛЬНЫЕ. УТВЕРЖДЕНИЯ : 117 вид А —»■ а, где А с= W, а —>■ V, либо его правая часть не содержит основных символов. Если это не так, преобразуем Г следующим образом: сопоставим каждому •а е V новый символ а, присоединим все такие символы к W, во всех правилах Г, длины правых частей которых больше единицы, заменим все вхождения основных символов вхождениями их «двойников» и присоединим к схеме Г всевозможные правила вида а-+'а< где а е V', полученная грамматика, очевидно, удовлетворяет нужному условию и эквивалентна Г. Но при выполнении перечисленных условий для получения нужного результата достаточно заменить каждое правило вида A—>BiB2 ... Ви, k>2, системой правил {A—>BiFu Fi-*B2F2, ..., Ffe-з —♦ Bh_2Fh-2, Fk-2-+Bh-iBh}, где Fu ... ..., Fu-2 — новые символы, разные для разных правил Г. Займемся теперь деревьями выводов в Б-грамматиках. Заметим прежде всего, что по самому определению растянутого дерева вывода каждому размеченному выводу в Б-грамматике, начинающемуся одноэлементной цепочкой, отвечает единственное растянутое дерево, так что между такими размеченными выводами и их растянутыми деревьями имеется взаимно однозначное соответствие. Что касается собственно дерева вывода, то отвечающих ему размеченных выводов в общем случае много; мы покажем сейчас, как их можно описать. Пусть Г = (V, W, I, R) — Б-грамматика и Т = = {М; -*-, <<, V О W, g) — Pi-дерево, являющееся деревом вывода в Г некоторой цепочки сое (V U W)* из некоторого символа fief. Такое Pi-дерево мы будем называть (Б, со)-деревом (в грамматике Г). Расположим множество невисячих узлов Т в линейную последовательность £ь ..., Eh так, чтобы выполнялось следующее условие: если £;- зависит от Еь то i ^ /. Всякую последовательность невисячих узлов, Удовлетворяющую этому условию, будем называть допустимой. Легко видеть, что для любого i = 1, ..., k подграф G{ дерева (М\ -*•), образованный узлами Еи .,., £)И всеми соединяющими их дугами, будет поддеревом, корень которого совпадает с корнем (М; -*•). Построим теперь последовательность цепочек coi, ... ..., сой; она будет строиться индукцией по k — i, причем одновременно с цепочкой со* будет определяться
118 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 (б, (Hi) -дерево Ti = (М,; -*-;, <{, gi) такое, что его поддерево, образованное всеми невисячими узлами, совпадает с Gi и для каждого / < i имеет место gi (Ej) = = 8(Е})- При i <. k будет определяться также некоторое вхождение cot- символа g(Ei+i) в цепочку cot-. Индукция проводится следующим образом I. Полагаем cos = со, Th = Т. II. Пусть определены со<> со* и Tj (1 < <i^k), удовлетворяющие сформулированным условиям. В силу допустимости последовательности Ei, ... ..., £fe узел Е{ будет в дереве G» висячим; поэтому все непосредственные потомки Ei в дереве Ti являются в нем висячими узлами и в соответствующей этому дереву системе составляющих для сеч образуют некоторую составляющую (ранга 0 или 1). Цепочку, полученную из со* заменой этой составляющей вхождением символа g{Ef), мы обозначим coj_i, само это вхождение обозначим со£_,, а дерево, полученное из Tt выбрасыванием всех (непосредственных) потомков Ей обозначим 7Vi. Выполнение нужных условий для сог_,, со'_, и Т1_1 очевидно. Из способа построения со, непосредственно ясно, что последовательность D = (В, coi, ..., соь = со) является выводом в Г, а последовательность D' = (* В *, со',..., to£_j, coft) — размеченным выводом. Индукцией' по i легко показать, что каждое Ti есть дерево вывода, отвечающее размеченному выводу (* В *, со{, ... ..., co£_j, соД так что, в частности, Т отвечает D'. Итак, каждой допустимой последовательности невисячих узлов Т отвечает размеченный вывод D'. При этом ясно, что различным допустимым последовательностям соответствуют различные размеченные выводы. Картина будет завершена, если мы покажем, что любой размеченный вывод, отвечающий данному дереву Т, может быть получен таким способом. Чтобы убедиться в этом, рассмотрим размеченный вывод D'=(coJ, со', ... •••> ®'k-i> ®k)> где ®'0 — *В*, и «сожмем» соответствующее растянутое дерево Г', как описано в §3.1. Узлами полученного дерева Т будут классы узлов Т', причем каждый класс состоит из узлов, лежащих на одном пути, и при этом каждое вхождение со', / = 0, ..., k — 1, является «младшим» (самым далеким от корня) узлом
§4.1] НЕКОТОРЫЕ ВСПОМОГАТЕЛЬНЫЕ УТВЕРЖДЕНИЯ Ц9 в некотором классе, отвечающем невисячему узлу Г.- Если теперь обозначить через Е{ тот узел Т, для которого младший узел соответствующего класса есть со^_х, то последовательность Еи .., Ей будет, как легко видеть, допустимой, и размеченный вывод, полученный по этой последовательности описанным выше способом, совпадает с D'. Полезно заметить, что среди размеченных выводов, отвечающих данному дереву вывода, всегда есть один и только один упорядоченный. С другой стороны, упорядочиваемому выводу в Б-грамматике отвечает единственный упорядоченный размеченный вывод. Таким образом, между деревьями вывода и упорядочиваемыми выводами в Б-грамматике имеется взаимно однозначное соответствие. Пример. Пусть Б-грамматика Г содержит правила А-±аВА, В-+ВВ, А-+ВА, B-+D,B-+b, D-*cd, A-*a. Тогда размеченному выводу (*Л*, а*В*А, аВВ*А*, аВ*В*ВА, а* В* DBA, ab*D*BA, abed* В* А, abedb * А *, abedba) будут отвечать дерево вывода, изображенное на рис. 3 (стр. 81), и растянутое дерево вывода на рис. 2; это последнее дерево соответствует следующей допустимой последовательности невисячих узлов первого (обозначенных цифрами, стоящими на рис. 3 в скобках): 1, 2, 3, 5, 4, 8, 6, 7. Другой допустимой последовательности: 1, 3, 7, 6, 2, 5, 4, 8 — отвечают растянутое дерево на рис. 5 и размеченный вывод (*Л*, аВ*А*, аВВ*А*, аВ*В*а, а*В*Ьа, аВ* В*Ьа, а* В * Dba, ab* D * ba, abedba). Приведем еще несколько простых соображений, относящихся к деревьям вывода. Лемма 4.4. Пусть D — вывод в Б-грамматике Г, Г — его дерево, k — длина D, s — высота Tug — максимум длин правых частей правил Г. Тогда s ^ k ^ 8s — 1 ^ _ 1 » если g > 1, и s = k, если g = 1. Доказательство. Первое неравенство очевидно; второе следует из того, что k равно числу невисячих узлов Г и из каждого узла Т исходит не более g дуг. Равенство s = k при g = 1 очевидно. Будем называть (В, со) -дерево простым, если в нем никакие два различных невисячих узла, лежащих
120 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 .на одном пути, не помечены одним и тем же символом, (В, со)-дерево, всякое собственное полное поддерево которого простое, будем называть квазипростым. Й а а а а. а. а а. г^^ В В В В ^^\Л в/ V в ь в/\в ь в , * ь D Ь р ь c/\d Ъ а а а а « а Рис. 5. (Полное (6-) поддерево Pi-дерева Т — это Ррподде- рево Т, образованное всеми узлами, в которые идут пути из данного узла б.) Очевидна следующая Лемма 4.5. Высота простого (квазипростого) (В, а)-дерева в Б-грамматике Г не превосходит р (соответственно р + 1), где р — мощность вспомогательного словаря Г. В заключение введем операцию над деревьями вывода, которая будет нам весьма полезна при изучении Б-грамматик. Пусть Т = (М; -*-, -<, g) есть (А, со)-дерево, В — какой-либо узел Т, Е — составляющая цепочки со, соответствующая узлу $ (в системе составляющих, определяемой деревом Т), и g * ф * Л — соответствующее этой составляющей вхождение подцепочки в со. Пусть, кроме того, g(p) = В. Обозначим через Ti полное Pi-поддерево дерева Т с корнем в В; очевидно, 7\ есть (В, ср) -дерево. Рассмотрим теперь произвольную цепочку \f>, выводимую из В, и произвольное. (В, г|э)-дерево
§ 4.2] РАСПОЗНАВАНИЕ ПУСТОТЫ И КОНЕЧНОСТИ Б-ЯЗЫКА \Ц Г2, и обозначим через Sub (Г, Ти Г2) Pi-дерево, полученное из Г «вырезанием» поддерева 7\ и подстановкой на его место Г2. Ясно, что Sub (Г, 7\, Г2) является (А, |а|)т)) -деревом, и в соответствующей системе составляющих для цепочки |о|)Т) узел р дает составляющую, отвечающую вхождению |*а|)*т) подцепочки а|). § 4.2. Распознавание пустоты и конечности Б-языка. Проекции Пусть Г = (V, W, /,/?)— Б-грамматика, А е W, ссе е VО W. Будем говорить, что а зависит от А, если из А выводима в Г хотя бы одна цепочка, содержащая вхождение а. Лемма 4.6. Существует алгоритм, позволяющий по любой Ъ-грамматике Г = (V, W, I, R) и любым двум символам А е №, a^V\J W распознать, зависит ли а от А. Доказательство. Пусть в Б-грамматике Г = — {V, W, I, R) существуют выводы вида (Л = со0, ... ..., ©л = |ат)) ■ Возьмем тот из этих выводов, чье дерево содержит меньше всего узлов (если таких деревьев несколько, берем любое из них), и обозначим это дерево через То. Среди висячих узлов Г0 хотя бы один помечен символом а. Пусть у0, у\, .... ys — путь из корня Г0 в этот узел. Все узлы Го, не лежащие на этом пути, являются висячими. Действительно, в противном случае для некоторого i, i = 0, ..., s—1, какой-либо узел б, подчиненный у* и отличный от Yi+ь будет невисячим; но тогда дерево Sub(r0, Г', Г"), где Г' —полное б-подде- рево Го и Т" — дерево, состоящее из одного узла б, будет деревом некоторого вывода, начинающегося символом А и заканчивающегося цепочкой, содержащей вхождение а, и это дерево будет содержать меньше узлов, чем Г0. Далее, при i < / узлы yt и Yj не могут быть помечены одним и тем же символом, иначе дерево Sub (Го, Т\ Тз), где Т{ и Т'— полные уг и ^-поддеревья Г0 соответственно, также было бы деревом вывода из А цепочки, содержащей а, и имело бы меньше узлов, чем Г0. Поэтому s ^ jj, (W7); но s есть как раз число невисячих вершин Го, т. е. длина соответствующего вывода. Теперь искомый алгоритм очевиден — достаточно
122 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 перебрать все выводы в Г, длины которых не превосходят n(W). Назовем вспомогательный символ Б-грамматики Г бесплодным, если из него не выводима никакая цепочка в основном словаре Г. Лемма 4.7. Существует алгоритм, позволяющий по любой Б-грамматике Г и любому ее вспомогательному символу А распознать, является ли А бесплодным. Доказательство. Пусть Г = {V, W, I, R) — Б-грамматика, и для некоторого символа A ^.W существуют выводы, начинающиеся данным символом и заканчивающиеся цепочками в V. Возьмем тот из этих выводов, чье дерево — обозначим его Го — содержит меньше всего узлов (если такое дерево не одно, то берем любое). Дерево Го будет простым. В самом деле, если это не так, то в нем найдется путь бь бг, ..., бг такой, что 6j и бг помечены одним и тем же символом и бг — невисячий узел; но тогда дерево Sub (Го, Г', Г"), где Т и Г" — полные бг и бг-поддеревья Го соответственно, будет содержать меньше узлов, чем Го, и тоже будет деревом вывода, начинающегося символом А и заканчивающегося цепочкой в V. По лемме 4.5 высота Го не превышает ii{W), откуда по лемме 4.4 можно найти верхнюю границу для длины соответствующего вывода. Искомый алгоритм состоит, таким образом, в переборе всех выводов в Г, длины которых не превосходят этой границы. Поскольку бесплодность начального символа Б-грамматики означает пустоту порождаемого ею языка, из леммы 4.7 вытекает Теорема 4.1. Существует алгоритм, позволяющий по любой Б-грамматике Г распознать, является ли язык L(T) пустым. Пусть Г =(V, W, I, R)— Б-грамматика h2 = V. Символ А е W мы будем называть 2-6есплодным, если из него не выводима никакая цепочка в словаре Z. Буквальным повторением рассуждений, примененных при доказательстве леммы 4.7, получается Лемма 4.7'. Существует алгоритм, позволяющий по любой Б-грамматике Г ={V,W,I, R), любому словарю Z<=lV и любому символу А е W распознать, является ли А Z-бесплодным.
§ 4.2] РАСПОЗНАВАНИЕ ПУСТОТЫ И КОНЕЧНОСТИ Б-ЯЗЫКА 123 Назовем вспомогательный символ Б-грамматики Г неустранимым, если он а) зависит от начального символа или совпадает с ним и б) не бесплоден. В противном случае вспомогательный символ будет называться устранимым. Б-грамматику, все вспомогательные символы которой неустранимы, будем называть приведенной. Лемма 4.8. Для всякой Б-грамматики Г = = (V, W,I,R), порождающей непустой язык, можно построить эквивалентную ей приведенную Б-грамматику V={V,W',I,R') такую, что W'<=W и #'<=#. Доказательство. Из определения ясно, что ни один узел дерева полного вывода не может быть помечен устранимым вспомогательным символом. Поэтому, выбросив из вспомогательного словаря все устранимые символы, а из схемы — все правила, содержащие эти символы в левых или правых частях, мы не изменим порождаемого грамматикой языка. Полученная так грамматика не обязана еще быть приведенной*), но в случае надобности к ней можно применить такое же преобразование, затем так же преобразовать следующую грамматику и т. д. Этот процесс когда-нибудь оборвется, так как на каждом шаге мощность вспомогательного словаря уменьшается. Поскольку язык L(T) не пуст, в описанном процессе никогда не будет выброшен начальный символ, и в конце концов получится приведенная грамматика, эквивалентная Г. Будем теперь называть вспомогательный символ Б-грамматики циклическим, если он зависит от самого себя. Имеет место Лемма 4.9. Приведенная Б-грамматика без правил вида А-* В, где А и В — вспомогательные символы, тогда и только тогда порождает бесконечный язык, когда хотя бы один ее вспомогательный символ является циклическим. Доказательство. 1) Пусть Г — данная грамматика и А — циклический вспомогательный символ. Тогда *) Символ, неустранимый в старой грамматике, может стать устранимым в новой. Например, в грамматике Г = ({а}, {/, А, В}, I, {1-*-а, / -*■ АВ, А -*■ а}) устранимым символом является только В, но после изъятия этого символа и правила I-*■ АВ символ А тоже становится устранимым.
124 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 Существуют такие цепочки ф и а|), что А (- фЛф, откуда г для любого «= 1, 2, ... имеет место ЛЬ-фМо!)". В вы- г воде цепочки фЛф из А применяются правила, содержащие в правых частях вспомогательные символы; но длины правых частей таких правил больше единицы. Поэтому фф ф Л. Поскольку грамматика Г приведенная, при А Ф I (/ — начальный символ) найдутся такие цепочки £ и т], что / Ь- |/4т]. Кроме того, найдутся такие г цепочки г, и, v, х, у в основном словаре, что A f- 2, г tp^=u, tpNf. EN*. 11N У (Н означает «выводима г г г г г в Г из или совпадает с»), причем uv Ф Л. Поэтому при любом п = 1, 2, ... из / будет выводима цепочка шв = = xunzvny (так при А ф I, при Л = / имеем вместо этого цепочку unzvn), и при «i ф. пг цепочки йу„, и хвщ различить 2) Если в грамматике нет циклических вспомогательных символов, то все деревья выводов просты, и их число, а тем более число выводимых из начального символа цепочек, конечно. Теорема 4.2. Существует алгоритм, позволяющий по любой В-грамматике Г распознать, является ли язык L(V) конечным. Доказательство. В силу леммы 4.9 для выяснения вопроса о конечности языка L(T) достаточно перестроить Г в соответствии с леммами 4.1 и 4.8, а затем проверить все вспомогательные символы на цикличность (лемма 4.6). Лемма 4.10. Для любой В-грамматики Г = = {V, W, I, R) и любого словаря Z £ V можно построить В-грамматику, порождающую язык npzL (Г) — {Л}. Доказательство. В силу леммы 4.3 мы можем считать, что Г — стандартная бинарная Б-грамма- тика. Назовем символ А е W исчезающим, если он не является (V — Z)-бесплодным. Положим Г'= = (Z, W, I, Ri U Rz), где Ri получается из R изъятием правил вида А-+а, аф-Z, а /?2 состоит из всевозможных правил вида А -*■ В таких, что для некоторого исчезающего символа С схема R содержит правило А-+ВС или А -*■ СВ. Покажем, что Г' — нужная грамматика,
S 4.2] РАСПОЗНАВАНИЕ ПУСТОТЫ И КОНЕЧНОСТИ Б-ЯЗЫКА 125 а) Пусть xeL(r'). Тогда, заменив в произвольном выводе цепочки х из / в Г' каждое применение правила вида А —>■ В, А, В е W, применением соответствующего правила А—* ВС или А—*СВ, мы получим вывод в Г, заканчивающийся некоторой цепочкой вида ххС\Х2С2 ... ... xtCtXt+u где С\, ..., Ct — исчезающие символы и Xi ... xt+i = x. Из нее, в свою очередь, можно вывести в Г цепочку вида x\U\x2u2 ...xtutXt+u где «i, ..., щ е e(V — Z)*\ но проекция такой цепочки на Z есть х. Итак, лгеПргМГ), а поскольку Л^=/,(Г"), имеем также хеПр2/,(Г) — {Л}, б) Пусть хеПр2/,(Г) — {Л}. Рассмотрим цепочку уеЦГ) такую, что Пр2г/ = х, и дерево Т некоторого вывода цепочки у в Г. Выбросим из Т все узлы, обладающие тем свойством, что все «последние потомки» данного узла А (т. е. потомки, являющиеся висячими узлами) помечены символами из V — Z, но среди «последних потомков» узла, подчиняющего А, некоторые помечены символами из Z, а также всех потомков узлов, обладающих этим свойством. Ясно, что, во-первых, при этом будут выброшены все те и только те узлы, среди «последних потомков» которых ни один не помечен символом из Z, а поэтому на висячих узлах полученного дерева будет «написана» в точности цепочка х; во-вторых, полученное дерево будет деревом некоторого полного вывода в Г'. Итак, jteLfF). Выведем из доказанной леммы следующее любопытное утверждение. Будем называть грамматику Г ={V, W, I, R) обобщенной Б-гр а м м а тикой (ОБ-г р а м м а т и к о й), если каждое ее правило имеет вид А—*ш, где A^W, a><=(V\JW)*. Язык, порождаемый ОБ-грамматикой, будем называть ОБ-я зыко м. Теорема 4.3. Для всякой ОБ-грамматики Г можно построить Б-грамматику Г' такую,что/,(Г') =L(Y)— {Л}. Доказательство. Добавив к основному словарю V\ ОБ-грамматики Г новый символ с и заменив каждое правило вида А—* А. правилом А~*с, получим Б-грамматику Гс такую, что Пру/,(ГС)= L(T). Остается воспользоваться леммой 4.10. (Полезно сравнить эту теорему с результатом упражнения 3.18.) Из теоремы 4.3 вместе с леммой 4.2 получаем
126 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 Следствие. Для всякой ОБ-грамматики Г можно построить эквивалентную ей ОБ-грамматику Г" такую, что правые части ее правил не содержат начального символа и всякое ее правило, левая часть которого отлична от начального символа, имеет непустую правую часть. Теорема 4.4. Гомоморфный образ любого ОБ-язы- ка есть ОБ-язык. При этом для любой ОБ-грамматики с основным словарем {аь ..., а„} и любых п цепочек г/i, ..., уп в произвольном словаре Z можно построить ОБ-грамматику, порождающую язык а|э(/<(Г)), где ■ф — гомоморфное отображение, определяемое условием Ф(а*)= уи i— 1, ..., п. Доказательство. Пусть Г = {{аи ..., ап}, W, I, R). Без ограничения общности можно считать, что ({а, а„) U W)C\ 1=0. Положим Y'=(Z,W []{аи ... ..., а„}, I, R U {а\-*уи ..., ап-*уп}). Г" есть ОБ-грам- матика, и L(F) = ty(L(T)). Полезно заметить, что понятие дерева вывода! можно естественным образом распространить на случай ОБ-грамматики. Именно, рассмотрим произвольное дерево вывода цепочки у из символа В в грамматике Гс> использованнрй в доказательстве теоремы 4.3, и устраним из него все висячие узлы, помеченные символом с. Всякое полученное так Р,-дерево будет, по определению, деревом вывода цепочки Пр^г/ из В в Г (V — основной словарь Г). Можно было бы определить дерево вывода и прямо по выводу в ОБ-грамматике (и даже в ОНС- грамматике — см. упражнение 3.18), непосредственно обобщив определение из § 3.1; это предоставляется читателю. Висячие узлы с нетерминальными *) метками будут тогда соответствовать точкам применения правил вида А-*-А (для произвольных ОНС-грамматик — правил вида £,Ац-*1ц). Очевидным образом распространяется на ОБ-грамматики и понятие однозначности (см. стр. 83). § 4.3. Необходимые условия бесконтекстное™ Когда нужно доказать, что тот или иной язык не является бесконтекстным, часто оказывается полезной следующая *) См. сноску **) на стр. 27.
§ 4.3] НЕОБХОДИМЫЕ УСЛОВИЯ БЕСКОНТЕКСТНОСТИ 127 Теорема 4.5. Для любого бесконечного Б-языка L найдутся такие натуральные числа г и s, эффективно определяемые по порождающей L Б-грамматике, что любая цепочка ffieL, длина которой больше г, может быть представлена в виде (1) w = xlylzy2x2, где: (а) г/,г/2 Ф Л; (б) | y{zy2 |^s; (в) при любом и=1, 2, ... цепочка тап= xly^zy^x2 принадлежит L. Доказательство. Покажем сначала, что если Г —{V, W, I, R)—Б-грамматика без правил вида А—>В, A, B^.W, то для любой цепочки w^L(T) такой, что ни одно ее дерево вывода не может быть простым, имеется представление вида (1), удовлетворяющее условиям (а) и (в), а также условию: (б') для некоторого символа А е W существует (А, y\zy2) -дерево, высота которого не превосходит [i(W)-\- 1. Действительно, пусть та— цепочка, обладающая указанным свойством, Т — какое-либо ее дерево вывода и С — индуцируемая этим деревом система составляющих для та. В дереве Т найдутся два различных узла аир, помеченных одним и тем же вспомогательным символом А и таких, что из а в р идет путь. Обозначим составляющие системы С, происходящие от узлов аир, — точнее, отвечающие им подцепочки та — через и и z соответственно. Для подходящих цепочек хи х2, у\, у2 имеем, очевидно, и = y\zy2, та = Xiux2 = Xiyizy2x2. Если V и U" — соответственно полные а- и р-поддеревья Т, то V есть (Л, и)-дерево и V" есть (A, z) -дерево. Положим UX = U', U2 = = Sub(£/b U", £/'), U3 = Sub{U2, V", V) и т. д. Для каждого п=\, 2, ... Un является, очевидно, [A, y^zyfj. деревом. Поэтому дерево Тп = Sub(T, U', Un) есть (/, лг^гг/^л^-дерево, т. е. дерево вывода цепочки х\У1\гУ2х2 в Г. Мы получили, таким образом, представление цепочки та в виде (1), удовлетворяющее условию (в). Выполнение условия (а) вытекает из того, что Г не имеет правил вида А -*■ В, А, В еУ. Что касается условия (б'), то оно будет выполняться, если V — квазипростое дерево (лемма 4.5). Если V — не квазипростое дерево, то в нем найдутся два различных узла а,\ и р1? отличных от корня, помеченных одним и тем же
128 В-ГРАММАТИКЙ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 вспомогательным символом и таких, что из он в Pi идет путь. Мы можем теперь заменить в нашем рассуждении а и р на ai и рь и если полное ои-поддерево Т квазипростое, то условие (б') будет выполняться; в противном случае мы заменим ои и Pi новыми узлами аг и 02 и т.д.; поскольку в этом процессе высоты поддеревьев будут уменьшаться, он рано или поздно оборвется. Итак, наше вспомогательное утверждение доказано. Пусть теперь L — бесконечный Б-язык. По лемме 4.1 существует Б-грамматика Г = (У, W, I, R) без правил вида Л->-5, A, B^W, такая, что Ь(Г)==Ь. Положим ц (№) = », max |*M = g. В силу лемм 4.4 и 4.5 ЭЛ[Л-»-феЯ] длина вывода в Г, имеющего простое дерево, не может превосходить числа , ; в то же время никакую цепочку w нельзя вывести в Г менее чем за -—— шагов. Поэтому цепочка, длина которой больше дР 1 g • .—Ь 1. не может обладать в Г простым деревом вывода. Точно так же заключаем, что если некоторая цепочка и для подходящего A^.W имеет {А, и)-дерево sp+{ — 1 высоты, не превосходящей р + 1, то | и |^g- .—\- 1. аР — 1 SP+l — 1 Поэтому, положив г = g-e -\- 1 и s = g'e . \- 1, мы получаем для произвольной цепочки »е!(Г), |до|>г, представление (1), удовлетворяющее условиям (а), (б), (в). Следствие. Множество длин цепочек Б-языка либо конечно, либо содержит арифметическую прогрессию. Из этого следствия вытекает, в частности, что языки примера 13 из § 1.3 и примера 1 из § 3.4 не бесконтекстные. Приведем примеры применения теоремы 4.5 в случаях, когда следствием воспользоваться нельзя. Пример 1. Пусть L — язык примера 10 из § 1.3. Если бы L был бесконтекстным, то для всякого достаточно большого k и любого я = 1, 2, ... при подходящих /, хи х2, уи у2, z, У\У2ф Л, мы имели бы akbkak =
§4.31 НЕОБХОДИМЫЕ УСЛОВИЯ 8ЕСКОНТЕКСТНОСТИ 129 — x1ylzy2x2, xxy\zy\x2 = а*Ь*а*. Но если в цепочке akbkak •каждая из подцепочек yY и г/2 состоит только из а или только из Ь, то ни при каком п > 1 цепочка xxy\zy^x2 не может иметь вида а'Ь'а'. Если же, например, г/j содержит и а и Ь, то уже цепочка xly\zy\x2 будет содержать подцепочку вида basb. Пример 2. Пусть L — язык примера 11 из § 1.3. Для любого k — \, 2, ... имеем a^a^ba^a^^.L. Если L — Б-язык, то найдется s > О такое, что для любого достаточно большого & и любого п=1, 2, ... будем иметь при подходящих хь х2, уи у2, z wx — а\а%Ьа\а\ = ххухгу2х2, wn=Xlyfzy^x2^L, |^zy2|<s. Но если цепочка yxzy2 не содержит вхождений Ь, то уже w2 не будет делиться вхождением b пополам и, значит, не будет принадлежать L. Цепочки у1 и у2 не могут содержать Ь, иначе в wn было бы не менее п вхождений Ь. Итак, вхождение b должно содержаться в z; поэтому при k ~^zs — 1 цепочка у^ должна состоять только из а2, а у2 — только из at. Отсюда w2 = = a\ak2+l<ba*$+lml, где 1{ = \ух\, /2 == Jг/2j. Но а\а\^ф ф а^+1'а^. Пример 3. Пусть L — {апЬпапст\т,п= 1, 2, ...}. С помощью леммы 4.10 этот пример сводится к примеру 1. Чтобы сформулировать другой критерий бесконтекст- ности, введем в рассмотрение «-мерные векторы, компонентами которых служат целые неотрицательные числа; для краткости будем говорить просто о векторах. Число п будет все время считаться фиксированным. Назовем множество векторов М линейным, если существуют векторы аь ..., as, р (s = 0, 1, ...) такие, что ЛГ = {miai + ... + msas + p|mb ..., ms = 0, 1, ...}. (Сложение векторов и умножение на число имеют обычный смысл.) Конечную последовательность {а\, ... ..., as, P) будем называть базой М. Множество векторов, являющееся объединением конечного числа 5 А. В. Гладкий
130 Б-ГРАММЛТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 линейных множеств, называется полулинейным. База полулинейного множества есть, по определению, система баз его линейных слагаемых. Пустое множество также будем считать полулинейным (с пустой базой). Для произвольного языка L в словаре {аи ..., ап} будем обозначать через K(L) множество векторов Р„ ..., kn)\3x(x^L&\x\l=k1& ... &\x\n = kn)}, где | х \t означает | х \а . Теорема 4.6. Для любого Б-языка L множество /((L) полулинейно и его базу можно найти эффективно по Б-грамматике, порождающей L. Доказательство. Пусть Г = {V, W, I, R) — Б-грамматика и Т — дерево вывода в Г. Будем обозначать через М(Т) множество всех тех символов из W, которые встречаются в Г в качестве меток при узлах. Для произвольного /ИеИ? рассмотрим множества %(М) и 39 (М), состоящие соответственно из всех тех деревьев вывода Т, для которых М(Т) = М, и всех тех цепочек jteV, для которых существуют (/, *)-дерегп>я, принадлежащие %{М). Положим также k (М) = /((23(М)). Нам достаточно установить, что для каждого М s W множество (5 (М) полулинейно, и указать способ нахождения его базы. Для М = 0 Утверждение тривиально. Пусть М *=W не пусто и утверждение доказано для всех собственных подмножеств М; докажем его для М. Будем называть (Л, лс)-дерево терминальным, если x^V*. Поямым элементарным преобразованием (п. э. п.) терминального (А, х) -дерева Т назовем операцию, переводящую Т в Sub (Г, Т', Т"), где Г' —некоторое простое терминальное полное поддерево Т, а Т" — квазипростое терминальное дерево, содержащее Т в качестве собственного полного поддерева. Операцию, обратную этой, будем называть обратным элементарным преобразователем (о. э. п.). П. э. п. определяется парой деревьев Т, Т"\ -каждому п. э. п. л мы сопоставим вектор Х(л), определяемый следующим образом: если Т есть (В, 2)-дерево, а Т" — (В, ytzy2) -дерево, то к(я) — (\yiyz\u ■■•, \У1Уг\п). Всевозможных п. э. п. имеется, очевидно, лишь конечное число; мы обозначим их яь ..., щ.
§ 4.3] НЕОБХОДИМЫЕ УСЛОВИЯ БЕСКОНТЕКСТНОСТИ (31 Для произвольного терминального (/, х) -дерева Т положим к(Т) = (\х\и ..., |*|„). Назовем дерево Ге51(М) минимальным 1-го рода, если к нему неприменимо никакое о. э. п., и минимальным 2-го рода, если некоторое о.э. п. преобразует его в дерево, не принадлежащее 91 (М). Очевидно, всякое Ге51(М) можно получить из некоторого минимального дерева 1-го или 2-го рода последовательным применением п. э. п. Поэтому (5 (М) представляется в виде {ftiX(ni) + ... + «Д(п() + к(Т) \Т — минимальное дерево 1-го или 2-го рода}. Поскольку число минимальных деревьев 1-го рода конечно, достаточно доказать полулинейность множества (S'(M), отличающегося от (5(М) тем, что в качестве Т берутся лишь минимальные деревья 2-го рода. Но очевидно, что если множество векторов ®i полулинейно, то множество Фг = {«icci -f- ... ... + ftsas + p|pe=2V, «i, .... «( = 0, 1, ...}, где аь ... ..., cc( — заданный набор векторов, также полулинейно, причем базу ф2 можно найти эффективно по базе ®i и векторам ось ..., as. Итак, (5 (М) будет полулинейным, если таковым окажется множество (Ео(М) = {х(Т) \Т — минимальное дерево 2-го рода}, а поскольку все минимальные деревья 1-го рода и все п. э. п. могут быть построены эффективно, для нахождения базы (5 (М) достаточно уметь строить базу (Е0(Л1). Но <&0{М) представляется как объединение конечного числа множеств вида {К(пг) + к(Т) |ГеЛГ}, где it* — фиксированное п. э. п. и М'— фиксированное собственное подмножество М. Полулинейность такого множества сразу следует из полулинейности S(M'), и база его очевидным образом строится по базе (S(M'). Замечание. Если словарь одноэлементен, можно отождествлять как цепочки, так и векторы с натуральными числами. Полулинейное множество будет тогда объединением конечного числа арифметических прогрессий и конечного множества. Но такое множество есть Л-язык (пример 3,6) из § 1.3). Таким образом, всякий Б-язык в одноэлементном словаре автоматный. Сверх того, по Б-грамматике с одноэлементным основным словарем эквивалентная ей Л-грамматика строится эффективно, б»
132 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 Докажем теперь еще одно утверждение, родственное теореме 4.5; оно особенно пригодится нам в следующем параграфе. Теорема 4.7. Для любого бесконечного Ъ-языка L найдется такое натуральное число s, эффективно определяемое по порождающей L Ъ-грамматике, что, каковы бы ни были цепочки х, у, z такие, что xyz eL и \у\ ^ s, цепочку у можно представить в виде у = ij\vy2 так, что v -ф К и либо а) цепочка хух представима в виде ху\ = — х{их2, где X\unx2vny2z e L при любом п = 1, 2, ..., либо б) цепочка y2z представима в виде y2z = z\wz2, где xy{vnZ\Wnz2^L при любом п=\, 2, ... Доказательство. Пусть Г — Б-грамматика, порождающая L, и пусть g и р — соответственно максимум длин правых частей правилен мощность вспомогательного словаря Г. Положим s = 2(р + 1)• g2(p+iK Рассмотрим цепочку xyz^L такую, что |j/|^s. Пусть Т — некоторое дерево вывода этой цепочки в Г и С — соответствующая система составляющих. Поскольку ширина системы С не превосходит g, мы можем по лемме П1.1 найти такие точки cci ^ ... s=: ap+i < §рр ===: ... s=: Pi цепочки xyz, что [а\, Pi], ..., [ар+и pp+i] e С и либо cci < ... <С ap+i и ai, ..., ap+i — точки отрезка у, либо Pi Г>\.. > Pp+i и Рь ..., Pp+i — точки отрезка у. Пусть для определенности имеет место первое. В силу выбора числа р найдутся такие i, j, 1 =S^ i <C / ^ p + 1, что узлы A\ и А2 дерева Т, от которых происходят составляющие [ссг-, Pi] и [a3-, РД помечены одним и тем же символом В. Обозначим полные Аг и Лг-поддеревья дерева Т через Тх и Т2 соответственно. Очевидно, Т2 есть поддерево Т\\ поэтому, если 7\—(В, t{) -дерево и Т2 — (В, t2) -дерево, то h — подцепочка t\ и цепочка xyz представима в виде xyz = x'vt2wz2, где vt2w = t{ и отрезки v, t2, w и z2 начинаются в точках ац, a3-, Pj + 1 и р, + 1 соответственно (здесь допущена вольность в обозначениях). Поскольку a{ < a, и обе эти точки расположены в отрезке у, для подходящих у\ и г/г имеем y=y\vy2, х'=хуи t2wz2 — y2z; при этом v Ф К. Если теперь положить V\ = T\, Un+\ = Sub(£/„, Т2, Т\), то при любом п = = 1, 2, ... Un будет (В, vnt2wn)-деревом, а Гп = = Sub (Г, Гь Un) будет (/, A7/i»nf2a>nz2) -деревом, где / — начальный символ Г, так что xy\Vnt2wnz2G L. Та-
§ 4.3] НЕОБХОДИМЫЕ УСЛОВИЯ БЕСКОНТЕКСТНОСТИ 133 ким образом, положив z4 = t2, получаем искомое представление. Пример 4. Пусть L = {апЬпат\т, п = 1, 2, ...; т ^ п). Теоремы 4.5 и 4.6 к языку L неприменимы; действительно, требуемое теоремой 4.5 представление цепочки апЬпат получается при х\ = ап~х, у\ = a, г — Л, У2 = Ь, х2 = Ь»-№, и K(L)={p-(l,l)±q-(2, 1) + —f- (2, 1)|/?, q = Q, !>•••}■ В то же время теорема 4.7 позволяет установить, что L — не Б-язык. Именно, если бы цепочка anbnam, m ^ п, допускала требуемое этой теоремой представление при х = апЬп, у = ат, z = Л, то цепочка и или w во всяком случае состояла бы либо целиком из а, либо целиком из Ь; но если бы она при этом была пуста или содержалась в у, то язык L содержал бы любые цепочки вида anbnam+ie, где с>0 — постоянная и 1 = 1, 2, ..., а в противном случае в L нашлась бы цепочка вида aPbiar, где р ф q. Дальнейшие примеры см. в упражнениях 4.9 и 4.1}. Замечание. Легко видеть, что полученное в доказательстве теоремы 4.7 представление обладает следующими свойствами: а) существует система составляющих С цепочки хуг, отвечающая некоторому ее дереву вывода в Г и содержащая отрезок ux2v, соответственно vz\W\ б) для каждой цепочки X\Unx2vny2z, соответственно xy\VnZ\WnZi, ft=l, 2, ..., существует система составляющих С„, отвечающая некоторому дереву вывода этой цепочки в Г и содержащая любой отрезок, полученный из произвольной составляющей системы С, содержащей отрезок uxtv{vz\w), заменой этого отрезка на unx2vn{vnz\Wn)\ в частности, сам отрезок unx2vn(vnziwn) принадлежит С„ (как и все отрезки uiz2vi, соответственно viz^wi, i^n). В заключение параграфа коснемся вопроса о замкнутости класса Б-языков относительно основных операций. Теорема 4.8. а) Класс Ъ-языков эффективно замкнут относительно операций объединения, умножения, усеченной итерации и подстановки; б) класс Б-языков не замкнут относительно операций пересечения, вычитания и взятия дополнения. Доказательство, а) Конструкции, использо-. ванные в доказательстве теоремы 1.1 для объединения
134 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 и умножения, в применении к Б-грамматикам дают снова Б-грамматики. Грамматика, порождающая /,(Г)+, получается из Б-грамматики Г, удовлетворяющей требованию леммы 4.2, добавлением правила /—»■// (/ — начальный символ). Доказательство для подстановки предоставляется читателю, б) Незамкнутость класса Б-язы- ков относительно , пересечения следует хотя бы из примера 6 §1.3 и примера 1 настоящего параграфа', поскольку {апЬпап\п—\, 2, .. .} = {апЬпат\т, л=1,2, ...}П П {атЬпап\т, п= 1, 2, ...}. Незамкнутость относительно вычитания и взятия дополнения вытекает из замкнутости относительно объединения и незамкнутости относительно пересечения. По поводу левого и правого деления см. упражнение 4.12. § 4.4. Неоднозначность Пусть Г — произвольная Б-грамматика. В силу рассуждений, приведенных в конце § 4.1, множество различных полных выводов в Г распадается на попарно непересекающиеся классы, каждый из которых отвечает одному дереву вывода; различие между выводами, принадлежащими одному классу, в известном смысле несущественно. Поэтому введенное в § 3.1 понятие однозначности приобретает в данном случае особенно простой смысл: однозначная Б-грамматика характеризуется тем, что в н*ей каждая цепочка порождаемого языка выводима, по существу, единственным способом. (Для произвольных НС-грамматик это не так — см. упражнение 4.5.) Если некоторый язык порождается неоднозначной Б-грамматикой, то для него, вообще говоря, может найтись другая Б-грамматика, являющаяся однозначной. (Например, язык {anbm\m, ft=l, 2, ...; п ^ т ^ 2п) порождается неоднозначной Б-грамматикой со схемой {I-*aIB, I-*aB, B-+b, B-+bb) и однозначной Б-грамматикой со схемой {I-^albb, I-+abb, I-*-A, A~*-aAb-, A—*ab}.) В связи с этим естественно ввести следующее понятие. Б-язык (соответственно ОБ-язык) называется однозначным, если существует хотя бы одна порождающая его однозначная Б-грамматика (соответ-
§ 4.4] НЕОДНОЗНАЧНОСТЬ 135 ственно ОБ-грамматика). В противном случае Б-язык называется неоднозначным (или существенно неоднозначным). Цель настоящего параграфа — указать примеры неоднозначных Б-языков. Пример 1. Пусть Lx = {anbncm\m, я=1, 2,...}, L2 = {атЬпсп |т, л=1, 2, ...}, L = LX\]L2. Язык L порождается, например, грамматикой со схемой {/-*-/4,, /•-»Л2, Ах^>Ахс, Ах-^Вхс, Bx^>aBxb, Bx-*ab, А2-^-аАъ А2-^-аВ2, В2-*ЬВ2с, В2-^-Ьс). Неоднозначность этой грамматики очевидна — всякая цепочка вида апЬпсп имеет в ней два дерева вывода. [Так, для цепочки а3Ь3с3 одно дерево вывода дает систему составляющих (((a(a(ab)b)b)c)c)c, другое — систему составляющих a(a(a(b(b(bc)c)c)))] Покажем, что и любая Б-грамма- тика, порождающая L, является неоднозначной. Пусть Г — такая грамматика. Найдем для нее число s из теоремы 4.7 и положим q = 3sl. Рассмотрим цепочку asbscs+- и применим к ней теорему 4.7 при x — as, у = 6s, z=cs+q. Случай б) (из формулировки теоремы 4.7) исключается, поскольку соответствующая цепочка w имела бы вид Ьк, О ^ k < s, или с1, О ^ / ^ s + q, а так как v = bi, 0<i^.s, мы имели бы либо asbs+i+kcs+qei, либо asbs+ics+4+l eL, но в обеих этих цепочках как степени а и Ь, так и степени бис различны. Поэтому существуют представления bs — yxvy2, asyx=*xxux2, соответствующие случаю а). При этом цепочка и должна, очевидно, состоять либо только из а, „либо только из Ь; второе, однако, невозможно, так как в таком случае язык L содержал бы последовательность цепочек с постоянными степенями а и с и бесконечно возрастающими степенями Ь. Таким образом, мы получили следующее представление нашей цепочки: as6scs+<7=» = afadaebhbdbmcs+q, где при любом п=1, 2, ... цепочка tn^af+^+ebh+nd+mcs+q принадлежит L> и в силу замечания к теореме 4.7 в некоторой системе составляющих цепочки tn, отвечающей какому-то дереву вывода tn в Г, одна из составляющих будет иметь вид and+8bh+nd. Но ввиду того, что 0 < d < s и q = 3s!, найдется такое «о, что q в= nod. Имеем тогда tnt+\ =«
I3g Ё-ГГ-АММАТЙКЙ Й МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 = flf+<i+g+Mftft+rf+«+Mc.+«==a.+«6S+v+ej и для неК0т0. рого дерева вывода Т цепочки as+qbs+qcs+q в Г одна из составляющих соответствующей системы С будет иметь вид aq+ebq+h. Теперь мы можем, рассматривая цепочку as+qbscs и рассуждая так же, как раньше (с точностью до зеркальной симметрии), найти такое дерево вывода Т той же цепочки as+qbs+qcs+q в Г, что одна из составляющих соответствующей системы С будет иметь вид bq+h'cq+8'. Поскольку h, h'^.s<q, составляющие aq+ebq+h и bq+h'cq+e' пересекаются; поэтому системы С и С, а значит и деревья Т и Г', различны. Пример 2. Пусть L\ = \xbiby\x, у е {аи а2}+}, L2—{xb()by\x, у е {аи а2}+), L = L{\]L2. Построение Б-грамматики, порождающей L, не представляет труда. Если Г — произвольная Б-грамматика, порождающая L, то, определив s н q, как в примере 1, рассматривая цепочки a\bas\ba\+q и at+qba\ba\ и рассуждая в точности так же, как в предыдущем примере, мы найдем два различных дерева вывода цепочки as\+qba\+qba\+q. ПримерЗ. Пусть L, = {anbkanbm\k, m, n=\, 2,...}, L2= {ahbnamb"\k, m, n = 1, 2,,..}, L = L, U L2 и Г — Б-грамматика, порождающая L. Определим- s и q, как в примере 1; рассмотрев цепочку asbsdrbs+ci и рассуждая, как в предыдущих примерах, мы без труда найдем для ■цепочки / t = a8+^bsa'+4bs+4 такое дерево вывода, что одна из составляющих соответствующей системы будет иметь вид ав.ЪчЬ'аь+ч. Применим к цепочке I теорему 4.7, положив х == as+«, у = 6s, z = а8+чЬ5+ч. Аналогично предыдущему легко видеть, что соответствующая цепочка и •или w не содержит вхождений а. Если при этом она содержится в «правой 6-зоне», то цепочка t имеет две частично пересекающиеся составляющие и, следовательно, два различных дерева вывода. Остается случай, когда и или до, так же как и v, содержится в «левой -6-зоне». Тогда цепочка ux2v или vz\W будет иметь вид Ь1, 0 < / ^ s, и при подходящем п0 цепочка un«+]x2vn«+l или у"о+'г1йу"о+1 совпадет с цепочкой Ы+i. В силу замечания к теореме 4.7 отрезок цепочки tn> = as+qbs+qas+qbs+q, лолученный из отрезка ag+4b°ah+i цепочки t заменой Ы ра б'+в, будет составляющей цепочки tn<l в некоторой
§ 4.5] МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ 137 системе, отвечающей какому-то дереву вывода /„„ в Г. Таким образом, некоторое дерево вывода Т цепочки /„, дает составляющую А, начинающуюся левее конца «левой а-зоны» и заканчивающуюся «в правой а-зоне». Теперь мы можем, рассуждая симметрично, показать, что либо цепочка /' = as+4bs+4asbs+i имеет два различных дерева вывода, либо некоторое дерево вывода V той же цепочки tnt дает составлящую А', начинающуюся в «левой 6-зоне» и заканчивающуюся правее начала «правой 6-зоны». Поскольку./! и Л' частично пересекаются, Т фТ. Дальнейшие примеры — в упражнениях 4.16 и 4.20. (См. также упражнение 5.17,6).) § 4.5. Машины с магазинной памятью Подобно тому как классу произвольных грамматик соответствует класс произвольных машин Тьюринга и классу НС-грамматик — класс машин без растяжения, для Б-грамматик также имеется отвечающий им в том же смысле тип машин Тьюринга — так называемые машины с магазинной памятью. Э-машина называется машиной с магазинной памятью (МП-м а ш и н о й), если ее программа содержит только инструкции типов (i) — (iii) (стр. 42). Таким образом, рабочая головка МП-машины всегда находится в крайней справа ячейке; создав однажды рабочую ячейку, головка может уйти от нее (если не уничтожит ее тут же) только вправо и получает возможность «заглянуть» в нее снова лишь в тот момент, когда уничтожает ее. Чем раньше ячейка создана, тем позже она будет уничтожена и тем самым «использована»; это напоминает принцип работы магазина в автоматическом оружии, чем и объясняется название «машина с магазинной памятью». Пример 1. Пусть М — машина с программой {?i#->tfi. q\^-Aq2, q2a->qu qxb^q3, Aq3-*qit qfi ->q3, я4ф->-о0} и единственным заключительным состоянием qQ. Легко видеть, что L(M) = {anbn \п = 1, 2, ...}. Пример 2. Язык {хх \х е {а, ..., а„}*} допускается машиной с программой {ql^-*qu qx^-*q2n+2i
138 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 q\-> Aiqt+l, qi+iai->qi, q\ai-*qi+n+u Atqi+n+\ -*■ fe+2. «2/«+2a<->9<+«+i» <72«+2 + -><7o} (' = 1. ••-. ») и единственным заключительным состоянием ^0. Пример 3. Язык примера 8 из § 1.3 допускается машиной с программой {(1) <?i -*Eq2, (2)<72# -><72» (3) 92-»- -*-Aq3, (4)93а->?2, (5)q2b->q4, (6) Aq4^ q2, (7) q4-*Bqs, (8) ?5&-><77. (9) ?7a->?6> (10) fl</6-></4. (П) fca-wfe, (12) £^2 -» ^o} и единственным заключительным состоянием gQ. Дальнейшие примеры МП-машин см. в упражнении 4.22. Примеры детерминированных МП-машин см. на стр. 152 и в упражнении 4.31. Назовем МП-машину нормальной, если она имеет единственное заключительное состояние и каждое ее полное вычисление начинается записью на рабочей ленте некоторого символа Е, который уничтожается лишь на последнем шаге вычисления. Лемма 4.11. Для любой .ТАИ-машины можно построить эквивалентную ей нормальную МП.-машину. Доказательство. Достаточно добавить к множеству состояний данной машины два новых состояния а\ и <70, объявив их соответственно начальным и заключительным вместо прежних, к рабочему алфавиту — новый символ Е и к программе — новые инструкции q\->-Eq{ и qfE-^-q0 для каждого qf e Q0 (#i — прежнее начальное состояние, Qo — множество прежних заключительных состояний). Полным вычислениям нормальной МП-машины можно естественным образом сопоставить Рг-деревья, аналогичные деревьям выводов в Б-грамматике. Покажем, как это сделать. Пусть М — нормальная МП-машина с программой R =. {/•], ..., га} и С — некоторое ее полное вычисление. Обозначим через Nl множество всех рабочих ячеек, возникающих в вычислении С; при этом ячейка считается одной и той же с момента ее возникновения до момента ее уничтожения, но если потом «на том же месте» снова возникает ячейка, то мы считаем ее другой, даже если в ней записывается тот же символ, что и в прежней. Кроме того, через No обозначим множество всех участвующих в вычислении входных ячеек. (Ячейки, занятые символами # и Ф, в А/0 и Ni не входят.) Множеством узлов нашего Р2-дерева будет объединение Nq (J Nt.
§ 4.5] МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ .139 Из рабочей ячейки а в рабочую ячейку ^ мы проведем дугу, если в момент возникновения ячейки В, а значит, и в продолжение всего времени ее существо* вания, а расположена непосредственно слева от нее. Из рабочей ячейки а во входную ячейку y пойдет дуга в одном из двух случаев: 1) если последний-из «рабочих» шагов, предшествующих тому «входному» шагу, на котором читается содержимое у, есть шаг, на кота- ром возникает а; 2) если первый из.«рабочих» шагов, следующих за шагом, на котором читается содержимое у, — тот, на котором уничтожается а. (Заметим, что эти случаи не исключают друг друга; их конъюнкция возможна, если правее а, не возникает новых ячеек.) Из входных ячеек дуги исходить не будут. Отношение <( определим так; а <^ В, если а и В не соединены путем ива раньше появляется головка, чем в В. (Для рабочих ячеек имеется в виду первое появление головки.) . . •; Определим, наконец, метки в узлах и на дугах. Метка в узле, т. е. в ячейке, будет совпадать с записанным в этой ячейке символом. Дуга, идущая в рабочую ' ячейку В, помечается парой чисел ■(/,/), где i, j — номера инструкций л,-, Г), применяемых соответственно при создании и уничтожении В. Дуга, идущая во входную ячейку у, помечается числом £ —номером инструкции /^.применяемой при чтении содержимого Y- Легко видеть, что полученный так «дважды, нагруженный биграф» действительно является Рг-деревом; корнем его служит крайняя слева рабочая ячейка, сохраняющаяся в силу нормальности М в продолжение всего вычисления. Мы будем называть это Рг-дерево д е- ревом вычисления С. Дерево вычисления можно наглядно представить так. Заменим машину М машиной Ми имеющей одну «ветвящуюся ленту» и одну головку. «Лента» Mi представляет собой бесконечное дерево, из каждого узла которого исходит счетное множество дуг, упорядоченное изоморфно натуральному ряду. Mi-вычисление строится по ^вычислению следующим образом. Если в начале М- вычисления на рабочей ленте записываются какие-то символы, то головка Mf идет от корня дерева по самой левой ветви (т. е. из каждого узла переходит в первый
•140 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 из подчиненных ему узлов) и пишет в ее узлах те же символы. Когда М начинает уничтожать рабочие ячейки, головка М( идет по той же ветви назад (ничего не стирая!); когда М снова начинает создавать рабочие ячейки, головка М\ переходит на другую ветвь, непосредственно примыкающую к прежней справа, и т. д. Когда М читает входной символ, головка Mt переходит в первую незанятую ячейку, подчиненную обозреваемой, лишег там тот же символ и сразу возвращается назад. Использованная часть «ветвящейся ленты» будет Pi-де- ревом, которое мы будем называть упрощенным деревом исходного М-вычисления; если пометить дуги этого дерева номерами и парами номеров соответствующих инструкций, получится Рг-дерево, которое, очевидно, совпадает с деревом исходного М-вычисления. «Машину с ветвящейся лентой» Mi мы будем называть древообходящим автоматом (Д-автоматом), отвечающим машине М. Можно считать, что „ Д-автомат имеет инструкции толь- i; ко двух типов: q-+aq' и qa-^-q', ,£ означающие соответственно «спу- д ' ститься этажом ниже, в первую слева незанятую ячейку, и запи- j сать там а» и «если в обозреваемой ячейке записано а, подняться этажом выше/ (в обоих случаях нужно также изменить состояние q на q')\ при этом а может быть как рабочим, так и входным символом, и если а — Рис. 6. входной символ, то вслед за инструкцией q-+aq' должна выполняться инструкция вида aq'-^q". Действительно, каждую инструкцию вида qb-+q' можно заменить парой инструкций q ->• bq", bq" —► q', где q" — новое состояние. Пример. На рис. 6 изображено дерево одного из возможных полных ааббаб-вычислений в машине примера 3 на стр. 138. Упрощенное дерево полного ^-вычисления позволяет сопоставить цепочке х размеченную систему составляющих в точности тем же способом, как это делается для
§4.5] МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ 141 дерева вывода. Так, дерево рис. 6 дает для цепочки aabbab систему (£, Aa(Aab(Bba))b). (Метки неточечных составляющих указаны здесь в виде индексов при левых скобках; для точечных составляющих метками служат соответствующие входные символы. В общем случае точечные составляющие могут иметь и другие метки.) Можно представлять себе работу МП-машины еще и следующим образом: при создании рабочей ячейки перед обозреваемым в данный момент входным символом ставится помеченная левая скобка — меткой служит соответствующий рабочий символ, — а при уничтожении рабочей ячейки после обозреваемого входного символа ставится правая скобка. Таким способом мы получим скобочное изображение соответствующей размеченной системы составляющих — правда, с той особенностью, что одна составляющая может оказаться ограниченной несколькими парами скобок, и внутри некоторых пар скобок может не содержаться входных символов. Лингвистически МП-машины интерпретируются как «предсказуемостные процедуры синтаксического анализа», или «предсказуемостные анализаторы». В таком анализаторе предложение («содержимое входной ленты») просматривается слева направо, и при просмотре слова (входного символа) может вырабатываться предположение («предсказание») о его синтаксической роли (это соответствует созданию рабочей ячейки) или проверяться его совместимость с последним из уже выработанных, но еще не проверенных предположений (соответствует уничтожению рабочей ячейки). Результатом работы анализатора является размеченная система составляющих (отвечающая дереву вычисления). Подробнее см. [Гладкий — Мельчук 1969, стр. 136—148.] Отметим две особенности деревьев вычисления, отличающие их от деревьев вывода. 1) Между полными вычислениями нормальной МП- машины и их деревьями имеется очевидное взаимно однозначное соответствие. 2) В то время как для всякой Б-грамматики Г существует постоянная d такая, что ширина дерева вывода в Г никогда не превосходит d, для деревьев вычислений в МП-машине такой постоянной может не быть (упражнение 4.24).
142 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 Впрочем, для любой МП-машины можно построить эквивалентную, обладающую такой постоянной; ее даже можно сделать равной двум. Это непосредственно вытекает из доказываемых ниже лемм 4.13 и 4.14. Докажем теперь следующую основную теорему. Теорема 4.9. а)Для всякой ОБ-грамматики можно построить эквивалентную ей РЛП-машину. б) Для всякой МП-лшшияы можно построить эквивалентную ей ОВ-г рамматику. Для доказательства введем некоторые понятия и обозначения. Назовем простейшей окрестностной Д- грамматикой с порядком*) (ПО-г р а м м а ти- к о й) упорядоченную четверку G = (V, W, I, S), где V и W — непересекающиеся конечные множества, / — элемент W a S — конечное множество «окрестностей» — /V деревьев с пометками из V U W, состоящее из «одноэтажных» деревьев вида .А ' • • • • • • (отношение <^ изображается здесь и далее отношением «левее») и «единичных» деревьев вида «а; при этом метки из V могут быть только у висячих узлов. Крайний слева висячий узел неединичного дерева может быть помечен еще/ дополнительным символом [_, а крайний справа — символом J. (Если висячий узел единственный, то он может нести обе дополнительные метки.) ПО-грамматика будет называться ограниченной, если в каждой ее неодноэлементной окрестности крайние слева и справа висячие узлы несут соответственно метки [_ и J. Будем обозначать через LA (G) множество всевозможных Pi-деревьев Г, удовлетворяющих следующим условиям: 1) Если s — некоторый невисячий узел Т, Si <^ ... -^ sp — все подчиненные ему узлы и р, Pi, ... ..., рр — метки при s, si, . . . , sp соответственно, то найдутся такие U, ..., h, 1 = ii ^ k ^ • • • ^ «а — р, что *) Д — от 6ev6pov — «дерево».
§4.51 МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ 143 каждое дерево ъ принадлежит S', и при этом крайний слева висячий узел первого из этих деревьев, рассматриваемого как окрестность из S, несет добавочную метку [_', а крайний справа висячий узел последнего — метку J, и никакие другие узлы деревьев Г,- меток |_ и J не несут. 2) Если s — висячий узел Т с меткой а, то дерево «а принадлежитS. 3) Корень Т несет метку /. Будем полагать далее L(G) = {Пру^(Г) | Ге^д (G)}. Будем, наконец, обозначать множество всех деревьев полных выводов в ОБ-грамматике Г, соответственно всех упрощенных деревьев полных вычислений нормальной МП-машины М, через L& (Г),соответственно L& (М). Теорема 4.9 непосредственно вытекает из следующих трех лемм. Лемма 4.12. а) Для всякой ОБ-грамматики Г можно построить такую ограниченную ПО-грамматику G, что L\(G) = La (Г), б) Для всякой ограниченной ПО-грам- матики G можно построить такую ОБ-грамматику Г, что La (Г) =LA(G). Лемма 4.13. а) Для всякой нормальной МП-машины М можно построить такую ПО-грамматику G, что £д (G) = La (M). б) Для всякой ПО-грамматики G можно построить такую нормальную МП-машину М, что LA(M) =Lb(G). Лемма 4.14. 'Для всякой ПО-грамматики G можно построить такую ограниченную ПО-грамматику G', что L(G')=L(G). Доказательство леммы 4.12. Для произвольной ОБ-грамматики Г = (К, W, I, R) положим G(T) = {V, W, I, S), где S состоит из всевозможных окрестностей вида Loct <xe ocHj
144 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 таких, что А -> ща2 ... ak e R, и • а таких, что а->Лей или а е К. Ясно, что таким образом устанавливается взаимно однозначное и эффективное в обе стороны соответствие между ОБ-грамматиками и ограниченными ПО-грамматиками. Равенство L\ (G (Г)) — Lh (Г) очевидно. Доказательство леммы 4.13. а) Вместо машины М можно рассматривать Д-автомат Мх. Соответствующая ПО-грамматика будет иметь вид (V, W,E,S), где V и W — соответственно входной и рабочий алфавиты М, Е — символ, записываемый в начале вычисления, и S строится следующим образом: (i) если головка может, записав в некоторой ячейке символ А, тотчас же спуститься этажом ниже и записать а (иначе говоря, для некоторых состояний q, q', q" имеются инструкции q' -^-Aq, q->aq"), то в S включается окрест- .А ность I ; (и) если головка может, поднявшись из L ос ячейки, где записано а, в ячейку, где записано А, тотчас же подняться еще на этаж (т. е. имеются инструкции aq'-^-q, Aq^>q"), то в S включается окрест- .А ность I ; (iii) если головка может, поднявшись на один этаж из ячейки, где записано а, тотчас же спуститься снова и записать р (т, е. имеются инструкции aq'-*q, q->$q"), то в S включаются всевозможные окрестности вида . А / \ ' где А — произвольный рабочий символ; (iv) если головка может, записав в некоторой ячейке а, тотчас же подняться (т. е. имеются инструкции q'->aq, щ-^-q"), то
§4.51 МАШИНЫ С МАГАЗИННОЙ* ПАМЯТЬЮ 145 в S включается окрестность • a; (v) если в S включены окрестности .А , то включается также I 9 L ас j Равенство L&(G) = L&(M) очевидно, б) По ПО-грамматике G = (V, W, I, S) мы построим Д-автомат М1 следующим образом. Пусть О- .х</\. — произвольная не одноэлементная окрестность из S (k^l; символы : и : означают наличие или отсутствие пометок |_ и J соответственно). Сопоставим ей 4k — 1 состояний: l{ Ik («левые состояния»), Т\, .-., Гь («правые состояния»), т^ mk («нижние состояния»), и,, ..., иА_1 («средние состояния») и инструкции: (1)а,г, ->•«!, (2) и, -*-а2/2, •••, (2t — 2) и^-хх^,, (2t—1)а/1->и„ ..., (2Ai —3)afe-,/-*_,-►«*-,, (2fe—2) «*_!-> -^-<Xhlh- (Эти инструкции позволяют обходить дерево о «с перерывами»: из крайнего слева висячего узла, где ранее уже записано оц, в корень; затем во второй слева висячий узел, причем в нем пишется а.% и автомат оказывается в состоянии k\ если потом головка попадает когда-нибудь в тот же узел снова и при этом автомат будет в состоянии г2, то можно еще раз перейти в корень и оттуда в следующий висячий узел, и т.. д.) Если при этом крайний слева висячий узел о несет метку [_, то мы включаем в число сопоставляемых также всевозможные инструкции вида l'-*aih, где V — левое состояние, сопоставленное произвольному висячему узлу с меткой А произвольной окрестности из S; если-крайг. ний справа висячий узел о несет метку J, то добавляем Л .А I и | • • La aJ
146 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 всевозможные инструкции вида а^ь. -*■ г , где г определяется аналогично /'. (С помощью этих инструкций начинается, соответственно завершается, обход всего куста узла дерева из Lh{G).) Далее, если N — множество всех тех чисел £= 1, ..., k, для которых в S имеются окрестности «аг, то для каждого i^N мы сопоставим окрестности о еще две инструкции: Ui-i-+a.imu aitni —* «Г, сверх того, при J e N добавим инструкции l'-*l\trii и при k е N -г- инструкции аь/п^-*/•', где V и г' имеют прежний смысл. (Эти инструкции будут выполняться, когда соответствующие узлы висячие.) Полученную систему инструкций обозначим Р(о). Объединение всех Р(о) будет программой Mi. Непосредственно ясно, что множество деревьев, которые может обходить Ми совпадает с /,д (G). Доказательство леммы 4.14. Пусть G— произвольная ПО-грамматика и G'— ограниченная ПО- грамматика. Равенство L(G') = L(G) будет обеспечено, если мы установим между £д(0) и L^(G') взаимно однозначное соответствие со следующим свойством: Рис. 7. каждому кусту дерева из £д ((?), имеющему вид, показанный на рис. 7, а), отвечает в соответствующем дереве из LA(G') поддерево рис. 7,6), где d, ..., Ср^2 — некоторые новые символы. Но такое соответствие будет, как легко проверить непосредственно, иметь место, если сопоставить каждой окрестности а грамматики G систему окрестностей а' грамматики G' следующим образом:
§ 4.5] - МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ - 147 1) если а имеет вид 'В, I или /\ L/3J или то а состоит из одной окрестности а. 2) Если . В а - /\ la"" hp j то а' состоит из окрестностей , с>3, У\ , Л"[ ЛаГг la 4/j la 42j L/V' a>j (здесь и далее Cai — новые символы). 3) Если S В *) Из определения £д (О) ясно, что окрестности вида .в • -в I ч | можно изъять, добавив в случае надобности некоторые новые окрестности с более чем двумя висячими вершинами.
148 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 то а состоит из окрестностей . в • • LA са1л (здесь и далее L 4) Если , д то а! состоит из l А саг j LA Л J 5) Если а • • L A Са2 J • • Wp nB,frJ Ы Р,— новые символы). . В = /\ • • • • • А /V окрестностей * 1-п? • • LA £«jJ При /7= J U .В Я /3, ,р>2*), *£а,р-2 » • • • » . . - la-/ /V .^,А npu/7>J> i при р =2 LA J />^**Л ~ о *) См. сноску на стр. 147. . **) Из определения £д (С?) ясно, что окрестности вида I излишни. А
§4.5] МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ 149 то а' состоит из окрестностей . \ ' . \ >•••■> s \ Lfl£ СагЛ Lfo Ca3J ippi £ j npup>2 и LA ВВфгА Замечания. 1) Процедуры, примененные при доказательстве лемм 4.12, а) и 4.13,6), устанавливают, как легко убедиться, взаимно однозначное соответствие между множеством деревьев полных выводов ОБ-грам- матики и множеством упрощенных деревьев полных вычислений эквивалентной ей МП-машины, и при этом соответствии сохраняются отвечающие деревьям цепочки основных символов. Аналогичный факт верен для процедур лемм 4.13, а), 4.12, б) и 4.14. 2) Пусть для произвольной ОБ-грамматики Г выражение Lc(T) означает множество всевозможных систем составляющих для цепочек языка L{T), соответствующих деревьям выводов этих цепочек в Г. Аналогичный смысл придадим обозначению Lc(M), где М — МП-машина. Тогда доказательства лемм 4.12, а) и 4.13,6) дают способ для всякой ОБ-грамматики Г построить такую МП-машину М, что LC{M) = LC(V). Обратное, очевидно, неверно: если ширина множества LC(M) не ограничена (т. е. не существует числа, мажорирующего ширину любой системы из LC{M)), то ни для какой ОБ- грамматики Г равенство Lc(T) = Lc(M) невозможно. Но если ширина множества LC(M) ограничена и ограничивающее ее число известно, то ОБ-грамматика Г, удовлетворяющая указанному равенству, может быть построена. Для этого придется несколько усложнить конструкцию пункта а) леммы 4.13, моделируя не пары соседних дуг дерева вычисления, а целые кусты — это
150 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 становится возможным ввиду ограниченности числа дуг в них; тогда отпадет надобность в лемме 4.14, т. е. в изменении топологии дерева. Подробное проведение соответствующих построений предоставляется читателю. Вместе с результатом упражнения -4.28 это позволяет для каждой МП-машины М либо построить ОБ-грамматику Г такую, что Lc(T) = .= LC{M)S либо установить, что такой грамматики нет. 3) Пусть Сх — система составляющих цепочки х, отвечающая некоторому дереву вычисления МП-машины М, и С£"-сла-гма составляющих той же цепочки, отвечающая соответствующему дереву вывода в Б-грамма- тике, построенной по М с помощью процедур лемм 4.13, а), 4.14 и 4.12,6). Если у— произвольная неточечная составляющая системы Сх (точнее, соответствующая . подцепочка цепочки х) и если у = ztz2 ... zs, где ги 2г, ..., zs — составляющие, непосредственно вложенные в у, то все отрезки у = Z\Z% ... zs, г2 .. :zs, ... ..., zs-izs принадлежат С'х. При этом все неточечные составляющие системы С'х могут быть получены таким способом. Сверх того, метки новых составляющих вполне определяются метками непосредственно содержащих их старых. Естественно возникает вопрос о единственгости дерева вычисления для данной входной цепочки. По аналогии с понятием однозначной Б-грамматики напрашивается следующее определение: МП-машина М называется о д н о з н_а ч н о й, если для каждой цепочки x^L(M) существует единственное дерево полного х- вычисления (или, что то же самое, единственное полное х-вычисление). Машины примеров 1 и 2 на стр. 137—138, как легко видеть, однозначны, а машины примера 3 — нет (упражнение 4.29). Что касается понятия однозначного ОБ-языка, то оно не изменится, если определить его с помощью МП- машины: имеет место Теорема 4.10. ОБ-язык тогда и только тогда однозначен, когда существует допускающая его однозначная МП-машина. Доказательство немедленно получается из замечания 1) к леммам 4.12, 4.13 и 4.14.
§ 4.5] МАШИНЫ С МАГАЗИННОЛ ПАМЯТЬЮ J5J. В заключение нам остается уделить немного внимания детерминированным МП-машинам — вернее, тем Б- языкам, которые такими машинами допускаются. Ясно, прежде всего, что всякая детерминированная МП-машина однозначна, так что неоднозначные Б-язы- ки не допускаются детерминированными МП-машинами. Но и не все однозначные Б-языки допускаются ими. Чтобы в этом убедиться, докажем следующую лемму. Лемма 4.15. Пусть М — детерминированная МП- машина такая, что L(M)—{Л} не является к'языком. Тогда найдется цепочка w^L(M), представимая в виде w = ZiyixyzZz так, что (а) г/i Ф Л, у% ф Л.;. (6) какова бы ни была цепочка и такая, кто v <= wue= L(M)r цепочка vn = z^xy^z^u также принадлежит L (M). Доказательство. Пусть сначала w и-и — произвольные непустые цепочки такие, что а>, meL(M). Ввиду детерминированности машины шы-вычисление, оборванное после чтения последнего символа из w, будет совпадать с ш-вычислением, оборванным после чтения того же символа. При «скобочной» интерпретации вычисления (стр. 141) это означает, что во всяком случае, внутри w при допускании цепочки wu будут поставлены в точности те же скобки — и с теми же метками, — что и при допускании w *). Построим теперь по машине М Б-грамматику Г с помощью процедур лемм 4.13, а), 4.14 и 4.12,6). Если Сх — система составляющих цепочки х, принадлежащая L'c(M), и Сгх — соответствующая система составляющих из £с(Г), то п0 предыдущему всякая составляющая из Cw, расположенная целиком внутри w, принадлежит и системе Cwu и имеет в ней в точности те же метки; по замечанию 3) на стр. 150 это верно и для систем C'w и C'wu- В силу следствия из теоремы 7.6 **) грамматика Г имеет неограниченную степень самовставления, и во всяком случае найдется такая цепочка гое[,(Г) = = L(M), что %v(w) ^ 3, — иначе говоря, w преДстави- ма в виде ZiS^irtzSzZz, где su sz, /i, h Ф Л и отрезки *) Скобки, поставленные при допускании цепочки w на ее правом конце, могут при допускании wu оказаться внутри и. **) Ознакомившись с доказательством этой теоремы, читатель убедится, что от настоящей леммы оно не зависит.
152 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 г, tirt2, Sitirhs2 принадлежат Cw и «происходят» от узлов с одинаковыми метками. По предыдущему отрезки г и tirt2 должны принадлежать и Cwu и происходить в дереве вывода цепочки wu от узлов с одинаковыми метками, какова бы ни была цепочка и такая, что wu e ^L(M). Поэтому (ср. доказательство теоремы 4.5) для любого п имеем z^sffitysfau e L (М). С помощью леммы 4.15 легко доказать, что язык примера 2 на стр. 137—138 при п > 1 не допускается никакой детерминированной МП-машиной. Действительно, в противном случае для некоторой w e {ait ..., ап}* можно было бы цепочку wtf> представить в виде ww = z]ylxy2z2 так, чтобы было ух ф Л, у2Ф К и для любой цепочки fiefa an}* имело бы место zry^xy^z2uuww eL. Но если положить u = a\y^+\v,\, где а1 отличен от последнего символа цепочки w, то в цепочке z^xy^^uuww на расстоянии 2 \w | +1 ух | + | у21 от левого и правого концов будут стоять разные символы. [Стоит заметить, что «очень похожий» язык {xbx\x^ {аи ..., ап}*} допускается детерминированной МП-машиной, — например, с программой [qi # -* qz\ q2Cti-+qi+3; qib-*qs\ qi+3-*Atqz; q3at -*■ qt+n+si ?з #-*-?<>; Л^г+п+з -* qs) (qo — единственное заключительное состояние). Символ Ь служит здесь сигналом к изменению направления движения рабочей головки, тогда как в предыдущем примере менять направление приходилось наугад, и поэтому в любой момент нужно было иметь возможность это сделать.] Дальнейшие примеры см. в упражнении 4.34. Ч Упражнения 4.1. а) Показать, что для всякой Б-грамматики Г можно построить эквивалентную ей Б-грамматику Г', каждое правило которой либо имеет вид 1-*-а, где / — начальный символ и а — основной символ, либо длина его правой части больше единицы. Замечание. Очевидно, Тг, (п) < п. Поэтому 9?та (Б) = 3? (Б). Тем более 2 (Б) = 2та (НС). б) Показать, что для произвольной Б-грамматикн Г функция Тг(п) мажорируется линейной функцией. 4.2. Показать, что если в теореме 2.2 Г есть Б-грамматика, то и Г' можно сделать Б-гращматикой.
УПРАЖНЕНИЯ 153 4.3. Оценить изменение временной сложности в конструкции леммы 4.3. 4.4. Показать, что: а) если два вывода в Б-грамматике имеют одно н то же дерево, то они получаются друг из друга перестройкой; б) обратное неверно (указать пример). 4.5. Указать пример НС-грамматики, в которой вывод может иметь несколько разных деревьев. 4.6. Показать, что для любой Б-грамматики можно построить эквивалентную ей Б-грамматику без правил вида А-*-В (А, В — вспомогательные символы), в которой каждый вспомогательный символ, кроме, быть может, начального, циклический. 4.7. Указать алгоритмы, позволяющие по любой Б-грамматике Г с данным основным словарем V и любой цепочке х е V* распознать, выводима ли в Г цепочка: а) содержащая вхождение х; б) начинающаяся с х; в) оканчивающаяся х. [Bar-Hillel —Perles — Shamir 1961.] 4.8. Распространить на ОБ-грамматики леммы 4.1—4.10 и теоремы 4.1, 4.2. 4.9. Показать, что языки из упражнений 3.6, 3.13, 3.20, а) не являются бесконтекстными (язык из упражнения 3.6, б) — только при k > 2, язык из упражнения 3.6, г) — только при k > 1). 4.10. Показать, что коммутативное замыкание (см. упражнение 3.7) Б-языка может не быть Б-языком. 4.11. Пользуясь теоремой 4.7, показать, что языки {апЬпат | от. «=1,2, ..,; т >п} {апЬпат\т, «= 1, 2, ...; тф п} не являются бесконтекстными. 4.12. Показать, что класс ОБ-языков эффективно замкнут относительно операций левого и правого деления на цепочку. 4.13. Доказать незамкнутость класса Б-языков относительно вычитания и взятия дополнения непосредственно (построив соответствующий пример). 4.14. Проанализировав доказательство леммы 4.3, убедиться, что Б-язык тогда и только тогда является однозначным, когда он может быть порожден однозначной стандартной бинарной Б-грамматикой. 4.15. Замкнут ли класс однозначных Б-языков относительно объединения, пересечения, усеченной итерации? 4.16. Доказать неоднозначность следующих Б-языков: а) {ambmcndn | m, «==i, 2, .. .}[}{ambncndm | m, «=i,2, ...}; б) {akbmcn \k, m, и = I, 2, ...; n < k V n < m}; в) {akbkcmdmen | fe, m, я •= 1, 2, ...} U {akbmcmdnen I k, m, n = 1, 2, ...}. 4.17. Замкнут ли класс неоднозначных Б-языков относительно объединения, умножения, усеченной итерации?
.154 Б-ГРАММАТЙКИ й МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 4.18. а) Показать, что произведение неоднозначного Б-языка и двухэлементного языка может быть однозначным Б-языком. б) Верен ли аналогичный факт для одноэлементного языка? 4.19. Построить Б-грамматику, порождающую язык L = =a*6*c*d*e* — L', где U — язык из упражнения 4.16, в) [Ullian 1966]. [Указание. Представить L в виде LiU^U^i где L/ = = {a8bhcldJel \ SIJ, причем Щ означает кф1 & g + Iфк + /, Я2 означает i Ф j &h + I Ф i + /, Щ3 означает g Ф h & j ф L] 4.20. Положим Ls k={anbal,b ... Ьик~1ЬаПЬак+Ч ... ba s\n, 0=1,2,...}, L, —L„UL«U ... ULSS, L = L,UL2, ... (s, k = 2, 3, ....; k^s). Показать, что: а) для любого натурального числа s в L, найдется цепочка, имеющая в любой Б-грамматике, порождающей Ls, не менее s различных деревьев вывода; б) для любого натурального числа s в L найдется цепочка, имеющая в любой Б-грамматике, порождающей L, не менее s различных деревьев вывода. Замечание. Языки L, и L не только бесконтекстны, но и линейны (см. ниже, § 5.2). 4.21. а) Показать, что при любом п =» 2, 3, ... язык Мп = п ==U (а^)* порождается Б-грамматикой с п + I вспомогательными символами и не порождается никакой Б-грамматикой с меньшим числом вспомогательных символов. Замечание. Легко видеть, что все языкиМп автоматные. б) Указать пример А-языка, порождаемого Б-грамматикой с двумя вспомогательными символами и ие порождаемого никакой Б-грамматикой с одним вспомогательным символом. [Gruska I967]. 4.22. Построить МП-машины, допускающие языки примеров 6, 7, 9,6) из § 1.3 и языки нз упражнения 1.15. 4.23. Построить деревья вычислений цепочки а464 в машине примера I из § 4.5 и цепочки ala2a3aia2al в машине примера 2 из § 4.5. 4.24. Показать, что для машины примера 3 из § 4.5 ширина деревьев вычисления не ограничена. 4.25. Дополним МП-машину М третьей лентой — назовем ее в ы- ходной — со своей головкой и своим алфавитом и добавим к ее программе инструкции вида qa^-Qpa, где я — выходной символ; выполнение такой инструкции будем интерпретировать как запись символа а. Полученное устройство М' назовем МП -машиной с выходом. Если М' сможет, начав работу, когда М находится в начальной х-ситуации и выходная лента кг/ста. закончить ее, когда М находится в заключительной х-ситуации и на выходной ленте записана цепочка у, то мы скажем, что М'переводите в у, и будем писать у = М'(х). Положим: М' (L) = {у | Зх [х е= L & у = W (х)]} (L s V); L0(M') = M'(V). Показать, что: а) для любой МП-машины М м >жно построить такую МП-машину с выходом М', что Lo(M') = L(M);
УПРАЖНЕНИЯ 155 б) для любой МП-машины с выходом М' можно построить такую МП-машину М, что L(M) = Ц(М'); в) для любой Э-машины М можно построить такую Б-грамма- тику Г и такую МП-машину с выходом Ми что Л^ЦГ)) •■= L(M). 4.26. Показать, что для любой МП-машины можно построить эквивалентную ей нормальную МП-машину, у которой в любом дереве вычисления непустой цепочки все висячие узлы помечены входными символами (так что в скобочном изображении соответствующей системы составляющих — см. стр. 141—не будет «пустых» пар скобок). Доказать это двумя способами: с помощью теоремы 4.3 (и анализа доказательств лемм 4.12—4.14) и непосредственно (без обращения к грамматикам). 4.27. Доказать теорему 4.8, а) и результат упражнения 4.12 с помощью МП-машин (т. • е. указать способ построения по МП-машинам М] и М2 МП-машины, допускающей язык L(M{) U L(M2), и т. д.). 4.28. Указать алгоритм, позволяющий для произвольной МП-машины М распознать, ограничена ли ширина множества Lc(M), и в случае положительного ответа найти ее верхнюю границу. 4.29. а) Найти для цепочки ааЬЬаЬ еще одно дерево вычисления в машине примера 3 из § 4.5, кроме изображенного на рис. 6. б) Убедиться, что для любого натурального п найдется допускаемая этой машиной цепочка, имеющая больше п вычислений. 4.30. Показать, что язык {ambnanbm \ т, п = 0, I, ...} не допускается никакой МП-машиной, рабочий алфавит которой состоит из одного символа. (Такие машины иногда называют счетчик о- в ы м и.) 4.31. Построить детерминированные МП-машины, допускающие: а) язык примера 7 из § 1.3; б) «язык бинарных скобочных последовательностей» (порождаемый грамматикой со схемой {1 -*■ (И), I-*■ ( )}); в) язык примера 3 из § 4.5; г) язык {xibybQx2bx2x\ |*i, x2, y^{ai, .... а„}*, Ь(£{аи ..., а„}}. 4.32. Показать, что для всякой детерминированной МП-машины можно построить эквивалентную ей детерминированную МП-машину «без зацикливания», т. е. такую, что для любой входной цепочки х этой машины ее (единственное) х-вычисление заканчивается [Schflt- zenberger 1963, Ginsburg 1966]. , 4.33. Показать, что класс языков, допускаемых детерминированными МП-машинами, эффективно замкнут относительно: (а) умножения, (б) итерации, (в) подстановки, (г) левого и правого деления на цепочку, (д) взятия дополнения [Ginsburg — Greibach I966 (b), Ginsburg 1966]. [Указание. Для (д) использовать упражнение 4.32.] Замечание. Из (д) немедленно следует, что для всякой детерминированной МП-машины М можно построить детерминированную МП-машину, распознающую язык L(M). 4.34. Показать, что следующие языки не допускаются детерминированными МП-машинами: а) L2, L* где L = {xx\xe{au .... а„}*} (я> !); б) L", где L — то же, что в а); в) [xlxibxiyb$bxi | хи хг, у е= [аи ..., ап}'} (п> 1).
156 Б-ГРАММАТИКИ И МАШИНЫ С МАГАЗИННОЙ ПАМЯТЬЮ [ГЛ. 4 Замечание. Сопоставляя упражнения 4.31, г) и 4.34, в}, видим, что класс языков, допускаемых детерминированными МП-машинами, не замкнут относительно обращения *). 4.35. Показать, что если U и V — непересекающиеся алфавиты, L s U* и у е V*, то: а) по детерминированной МП-машине, допускающей язык Ly, можно построить детерминированную МП-машину, допускающую Ц б) по однозначной Б-грамматике, порождающей Ly, можно построить однозначную Бграмматику, порождающую L. 4.36. Показать, что для всякой грамматики, левые части правил которой не содержат основных символов, а правая часть каждого правила содержит хотя бы одно вхождение основного символа, можно построить эквивалентную ей Б-грамматику [Ginsburg — Greibach 1966(a)]. *) Обращением называется операция, сопоставляющая языку L язык L = {& | х е Ц (а также ее результат).
ГЛАВА 5 НЕКОТОРЫЕ СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ § 5.1. Автоматные и обобщенные автоматные языки. Конечные автоматы В предыдущей главе мы видели, что присоединение к Б-грамматикам правил вида А-* А делает класс порождаемых этими грамматиками языков в ряде отношений более естественным (достаточно вспомнить об удобстве описания с помощью МП-машин). В еще большей степени это справедливо, как мы скоро убедимся, для А-грамматик. Поэтому их изучение мы начнем со следующего определения. (ОБ-) грамматика называется обобщенной автоматной грамматикой (ОА-гра м м ат и ко й), если каждое ее правило имеет вид А—*аВ, А -* а или Л->-Л, где А, В — вспомогательные символы и а — основной символ. Язык, порождаемый ОА-грамматикой, называется ОА-я зыком. Полезно заметить, что в ОА-грамматике всякая промежуточная цепочка полного вывода имеет вид хВ, где х — цепочка в основном словаре и В — вспомогательный символ. Теорема 5.1. Для любой ОА-грамматики Г можно построить А-грамматику Г" такую, что L(F') = L(T) — -{Л}. Доказательство. С помощью процедуры, при^ мененной в доказательстве леммы 4.2, можно перестроить Г так, чтобы начальный символ не встречался в правых частях правил. После этого достаточно для каждой пары правил вида А -*■ аВ, В -*■ А добавить к схеме
158 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ.5 грамматики правило А^-а (если оно не содержалось там ранее) и затем изъять все правила вида А —*■ А. Будем называть ОА-грамматику стандартной, если она не имеет правил вида А -* а. Для каждой ОА- грамматики легко построить эквивалентную ей стандартную ОА-грамматику: достаточно добавить к вспомогательному словарю новый символ К, к схеме — правило К—*А и заменить каждое правило А-*а правилом А —*■ аК. Стандартные ОА-грамматики допускают следующее очень простое и. наглядное изображение. Рассмотрим мультиграф, узлами которого служат вспомогательные символы данной грамматики и для каждой пары узлов А, В из А в В идет столько дуг, сколько грамматика имеет правил вида А ■-* аВ\ каждую из этих дуг пометим соответствующим основным символом а. Начальный символ будем называть начальны музлом, а каждый узел Л, для которого имеется правило А —►Л, — заключительным. Построенный таким образом мультиграф с помеченными дугами и выделенными в множестве узлов начальным и заключительными узлами мы будем называть диаграммой данной грамматики. Нестандартной ОА-грамматике мы также будем сопоставлять диаграмму, совпадающую, по определению, *) Ь) Ь) Рис. 8. \ с диаграммой стандартной грамматики, полученной из данной указанным выше способом. На рис. 8, а) показана диаграмма Стандартной ОА- грамматики со схемой {/ —► аА, I —>■ ЬА, А -* dA, А -* ЬС, С-^сВ, Вт*ЬА,С-*ей, C-+\D, B^-el, I-+A, Я-»-Л,
§5.1] АВТОМАТНЫЕ И ОБОБЩЁННЫЕ АВТОМАТНЫЕ ЯЗЫКИ Ig9 D->-A}. На рис. 8,6), в) показаны диаграммы А-грамма- тик примеров 2 и 4 из § 1.3. Здесь и далее начальный узел обозначается символом /, заключительные узлы выделяются подчеркиванием. Если Л0, Ли ..., Ап — путь в диаграмме грамматики Г и для каждого i= 1 п имеется дуга, идущая из Лг-i в А{ й помеченная символом а, мы будем говорить, что данный путь производит цепочку ai ... ап. Всякий путь длины 0 производит, по определению, цепочку Л. Цепочка х будет, очевидно, производиться путем, начинающимся в А и оканчивающимся в В, тогда и только тогда, когда А^.хВ (И озна- г чает здесь то же, что на стр. 124). Будем называть путь Л0, ..., Л„ циклом, если А0 = Ап, и полным путем, если Ло — начальный узел и Ап — заключительный узел. Между полными выводами в Г и полными путями диаграммы имеется очевидное взаимно однозначное соответствие, и цепочка принадлежит L(T) тогда и только тогда, когда она производится некоторым полным путем. Диаграммы позволяют, в частности, особенно просто интерпретировать для ОА-грамматик понятия и утверждения из § 4.2. Так, зависимость В от Л означает наличие пути из Л и В, бесплодность Л — отсутствие пути из Л в заключительный узел, неустранимость Л — наличие проходящего через Л полного пути, цикличность А — наличие проходящего через Л цикла. Выбрасывание всех устранимых узлов сразу дает теперь приведенную грамматику; приведенная грамматика порождает конечный язык тогда и только тогда, когда ее диаграмма не содержит циклов. Заметим еще, что ЛеЦГ) тогда и только тогда, когда начальная вершина диаграммы является заключительной. Перейдем теперь к характеристике ОА-языков в терминах машин Тьюринга. Рассмотрим наиболее простой из мыслимых нетривиальных частных случаев Э-маши- ны, а именно машину, ничего не делающую на рабочей ленте, иначе говоря, имеющую инструкции только вида (i) (стр. 42). Такую Э-машину мы будем называть конечным автоматом. Можно представлять себе
Ш СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЙЗЫКОВ [ГЛ. S конечный автомат как Э-машину (если угодно, МП-машину) без рабочей ленты; поэтому мы будем говорить о ленте и головке конечного автомата, подразумевая входную ленту и входную головку. Конечному автомату можно сопоставить диаграмму аналогично тому, как это было сделано для ОА- грамматик. Именно: узлами диаграммы будут состоя:- ния; из узла qa в узел q$ будет идти дуга, помеченная символом а, если а Ф #> Ф и автомат имеет инструю- цию qaa —* q&; узлы qa, для которых имеются инструкции вида qi ф —► qa, будут называться начальными, узлы, принадлежащие Qo, — заключительными. Пример диаграммы конечного автомата представлен на рис. 9; начальные узлы обведены кружками, заключительный (единственный) выделен подчеркиванием. Рис. 9. Цепочка, производимая путем, а также цикл и полный путь определяются для диаграммы автомата точно так же, как для диаграммы грамматики. Непосредственно ясно, что цепочка х производится путем, начинающимся в qa и оканчивающимся в <7р, тогда и только тогда, когда для любой цепочки геф1/' и подходящего символа &еУ|_){ф}> где V— (входной) алфавит автомата, из ситуации (qa, z, xb)' достижима ситуация (q$, zx, b) *). Поэтому цепочка х производится полным путем диаграммы конечного автомата М тогда и только тогда, когда x^L(M). Автомат допускает пустую цепочку тогда и только тогда, когда пересечение множеств начальных и заключительные узлов не пусто. *) В обозначениях ситуаций опущены компоненты, относящиеся к рабочей ленте.
§ 5.1] АВТОМАТНЫЕ И ОБОБЩЕННЫЕ ДВТОМАТНЫЁ ЯЗЫКИ (61 Различие между диаграммами грамматики и автомата сводится к тому, что первая имеет единственный начальный узел, чего не требуется от второй. Поэтому для всякой ОА-грамматики можно построить эквивалентный ей конечный автомат. Однако верно и обратное, поскольку для всякого конечного автомата можно построить эквивалентный ему конечный автомат с единственным начальным узлом в диаграмме: достаточно ввести новое состояние ц' и новую инструкцию^ #-><7Л> изъять все старые инструкции вида ^ф—>qa и добавить всевозможные инструкции вида q'a—+q$, где а и <7в таковы, что старая программа содержала для некоторого qa инструкции qi # —► <7«, qaa~> <7fl (попросту говоря, нужно добавить к диаграмме новый узел и провести из него дуги во все те узлы, в которые идут дуги из прежних начальных узлов, пометив эти дуги теми же символами); кроме того, если хотя бы один из прежних начальных узлов заключительный, то нужно объявить заключительным и новый начальный узел. Итак, доказана Теорема 5.2. а) Для всякой ОА-грамматики можно построить эквивалентный ей конечный автомат. б) Для всякого конечного автомата можно построить эквивалентную ему ОА-грамматику. Теперь естественно заняться вопросом о взаимоотношении между детерминированными и недетерминированными конечными автоматами. Ситуация здесь существенно отлична от той, которую мы наблюдали для МП- машин: имеет место Теорема 5.3. Для всякого конечного автомата можно построить эквивалентный ему детерминированный конечный автомат. Доказательство. Пусть М — конечный автомат с множеством состояний Q, начальным состоянием qu множеством заключительных состояний Q0 и программой Р. Построим новый конечный автомат М следующим образом: а) состояниями М' будут всевозможные подмножества Q; б) начальным состоянием будет {qy\\ в) заключительными состояниями будут те подмножества Q, которые имеют непустые пересечения с Q0; г) программа будет состоять из всевозможных инструкций вида 6 А. В. ГладкиВ
162 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 Qifl-^Qz, где Qi<=Q и Q2 = {qiS\(3qaesQi)[qaa~>q^P]}. Поскольку Qi и а однозначно определяют Q2, автомат М' детерминирован. Эквивалентность М' и М усматривается без труда. § 5.2. Операции над ОА-языками. Регулярные языки Теорема 5.4. Класс ОА-языков эффективно замкнут относительно операций объединения, пересечения, вычитания, взятия дополнения, умножения, итерации, усеченной итерации, подстановки, левого и правого деления на цепочку. Доказательство. Пусть Г, Гь Г2 — ОА-грам- матики и D, Di, D2—их диаграммы. Мы можем считать, что в каждой диаграмме в начальный узел не входит ни одна дуга. (Это достигается применением конструкции а) Ь) Ь) Рис. 10. теоремы 5.1 с последующим построением эквивалентной стандартной ОА-грамматики, как указано на стр. 158.) Допустим, кроме того, что множества узлов Dy и D2 не пересекаются. Тогда диаграмма ОА-грамматики, порождающей L(Ti) UL(r2), получается из объединения диаграмм Di и D% отождествлением'(«склеиванием») их начальных узлов, причем заключительными узлами новой диаграммы будут все заключительные узлы Dy и D2 (рис. 10, а)). Диаграмма ОА-грамматики, порождающей L(ri)L(Tz), получается следующим образом: берется столько разных экземпляров D (с\попарно непересекающимися множествами узлов), сколько заключительных узлов имеет Du и каждый заключительный узел D4
§5.21 ОПЕРАЦИИ НАД ОА-ЯЗЫКАМИ 163 «склеивается» с начальным узлом одного из экземпляров D2; начальным узлом новой диаграммы будет начальный узел Du заключительными — все заключительные узлы всех экземпляров D2 (рис. 10,6)). Чтобы получить диаграмму ОА-грамматики, порождающей L(T)*, нужно в D «склеить» вместе начальный и все заключительные узлы (рис. 10,в)). Чтобы построить ОА-грамматику, порождающую CL(T), построим сначала детерминированный конечный автомат М, допускающий L(T) (теоремы 5.2 и 5.3). Пусть D' — его диаграмма. D' имеет единственный начальный узел (будучи детерминированным, М может иметь только одну инструкцию вида q\#—»■(?«)• Построим новую диаграмму D" следующим образом. Все узлы D' будут узлами D", все дуги D' — дугами D" (с теми же метками). Кроме того, D" будет содержать еще один узел q'0, и из каждого узла q Ф q'Q будет идти в q'0 дуга с меткой а тогда и только тогда, когда в D' нет дуги с этой меткой, выходящей из q. Кроме того, для каждого основного символа а в D" будет дуга из q'0 в q'0 («петля») с меткой а. Других узлов и дуг в D" не будет. Единственным начальным узлом D" будет начальный узел D', заключительными узлами D" будут q'0 и все незаключительные узлы D'. Нетрудно видеть, что цепочка х в основном словаре производится каким- либо полным путем в D" тогда и только тогда, когда она не производится никаким полным путем в D'. Действительно, это очевидно, если х производится некоторым путем в D', исходящим из начального узла qi,— ведь такой путь единственен, а диаграмма D" определена так, что и в ней нет другого пути с началом дч, производящего х. Если же х не производится никаким путем в D' с началом qi и г — наибольшее начало х, производимое некоторым путем qi = r0, ..., rs с началом qt в D', то полный путь го, ..., rs, q'0, ..., q'0 в D" будет произ- * | х |— s раз ВОДИТЬ X. Поскольку D" — диаграмма некоторой ОА-грамматики Г", имеем L{T") = CL(T'). Эффективная замкнутость класса ОА-грамматик относительно пересечения и вычитания следует из уже 6*
164 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 лолученных результатов для объединения и взятия дополнения. Диаграмма ОА-грамматики, порождающей x\L(T), получается из диаграммы D', строившейся в процессе доказательства для CL(T), если в ней объявить начальным узлом конец пути, начинающегося в прежнем начальном узле и производящего х. (Если такой путь существует, то он единственен, а если его нет, то язык x\L(T) пуст. Какой из этих двух случаев имеет место, легко узнать по D'.) Аналогично для L(T)/x. Доказательство для усеченной итерации и подстановки предоставляется читателю. Замечания. 1) Конструкции, использованные при доказательстве теоремы 5.4 для объединения, умножения и итерации, применимы, очевидно, к произвольным Э-машинам (нужно только вместо узлов диаграммы говорить о состояниях). Мы будем называть отвечающие этим конструкциям операции — и их результаты — параллельной композицией, последовательной композицией и итерацией соответственно. Ясно, что параллельная композиция М и М', последовательная композиция М и М' и итерация М допускают соответственно языки L(M)\J L(M'), L(M)L(M'), L(M)*. Очевидным образом определяются также параллельная и последовательная композиции любого конечного числа Э-машин. 2) Из доказательства теоремы 5.4 для левого деления ясно, что ОА-язык может иметь лишь конечное число различных левых частных. То же верно, разумеется, и для правых. Отметим еще следующий полезный факт. Теорема 5.5. Для любой ШЛ-машины М\ и любого конечного автомата Мч можно построить МП-машину М такую, что L(M) = L(M\){\L(M2). Если при этом М\ и М% детерминированные, то и М можно сделать детерминированной. Доказательство. Построим МП-машину М следующим образом. Состояниями М бу*дут всевозможные упорядоченные пары (q, q'), где q — состояние М{ и q'— состояние М2. Инструкция (qa, q$)a-+(qy, q'&) будет принадлежать программе М тогда и только тогда, когда программа Afj содержит инструкцию qaa ->■ qy,
8 5.2] ОПЕРАЦИИ НАД ОА-ЯЗЫКАМИ 165 а программа М2 — инструкцию q'a-^-q'r Инструкциями типов (И) и (ш) будут всевозможные инструкции вида МЧа. <7')-*(<7р. <f) й (</а. </')-> Л (</р, <7'), где Л^а-^^р» соответственно <7„->.Д<7р, — инструкции М, и ^' — произвольное состояние М2. Начальным состоянием будет (<70, <7q), где q0, q'0 — начальные состояния М, и Л42 соответственно, заключительными состояниями—всевозможные пары (qf, q'^, где q, q' — заключительные состояния М\ и М2 соответственно. Ясно, что так построенная машина М будет искомой. Следствие. Для любой ОБ (Б)-грамматики Г\ и любой О А (А)-грамматики Гг можно построить ОБ (Б)-грамматику Г такую, что L(r)= L(Ti)[)L(T2)- Теперь мы в состоянии получить еще одну весьма важную характеристику класса ОА-языкЬв; эта характеристика дает способ их задания, часто оказывающийся гораздо более удобным, чем ОА-грамматики и конечные автоматы. Пусть V = {а\, ..., а„} — произвольный словарь и ^ (ii, • • •. In, in+i) — регулярное выражение без коэффициентов от п -\- 1 переменных |ь ..., |n, gn+i. Выражение Я(аь... ,ап, Л) мы будем называть регулярной формулой над V, а язык, задаваемый таким выражением (в смысле стр. 24), — регулярным языком. Теорема 5.6 (теорема Клини). Класс регулярных языков совпадает с классом непустых ОА-языков. Более того, по всякой ОА-грамматике Г, порождающей непустой язык, можно построить регулярную формулу Ж, задающую L(T), а по всякой регулярной формуле % — ОА-грамматику Г, порождающую задаваемый этой формулой язык. Доказательство, а) Поскольку ОА-грамматики для языков {а}}, ..., {а„}, {Л} строятся тривиальным образом, построение нужной ОА-грамматики для заданной регулярной формулы обеспечивается теоремой 5.4. б) Вторую половину теоремы докажем индукцией по числу s дуг диаграммы данной стандартной ОА-грамматики Г. Если s = О, язык L(T) может быть непустым лишь тогда, когда он состоит из одной пустой цепочки, так что в этом случае имеем 51 = Л. Пусть утверждение доказано для s— 1 и Г — стандартная грамматика
166 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. Б с диаграммой D из s дуг. Выбросим из D какую- либо дугу, идущую из начального узла / в узел В и помеченную символом а. Полученную так диаграмму обозначим через Du диаграмму, возникающую из D\ при перенесении начального узла в В, — через D%, диаграмму, возникающую из D] при перенесении заключительного узла в /, — через Ьз и диаграмму, возникающую из Ъг при перенесении заключительного узла в /, — через D4 (рис. 11). (На рис. 11 буквой К обозначен один из заключительных узлов диаграммы D, а цифрами 1, 2, 3, 4 в кружках — примеры путей в Du D2, D3, D4 соответственно.) Грамматику с диаграммой Dit i = 1, 2, 3, 4, будем обозначать Т%. В силу индуктивного предположения можно построить регулярные формулы 9lj, £= 1, 2, 3, 4, задающие языки L(Ti). Всякий полный путь в D, оче- Рис. П. видно, либо является полным путем в Du либо представляется в виде |ar)iar)2... arjfta^, где а — дуга (I,B), | — полный путь в D3, Tii, ..., T)ft — полные пути в D4 {k = О, 1,...) и £ — полный путь в D2. Ясно также, что каждый путь, пред- ставимый в таком виде, является полным путем в D. Поэтому L{T)-= L(Tl){JL(r3)(aL{ri))*aL{r2), так что L(T) задается регулярной формулой 511U 9l3(a5l4)*a9l2. Следствие. Класс ОА-языков есть замыкание класса конечных языков относительно объединения, умножения и итерации. Замечание. Теорема 5.6, как ясно из ее доказательства, останется справедливой, если вместо произвольных ОА-грамматик рассматривать только такие, в диаграммах которых нет циклов (т. е. ОА-грамматики, порождающие конечные языки), а вместо произвольных регулярных выражений — многочлены. Пример. Языки, порождаемые грамматиками, диаграммы которых показаны на рис. 8, задаются соответственно формулами ((a U b) (d\Jbcb)*bce)* (A\j (al) Ub)(dUbcb)*b(e[]f[)c)), (aiU.,.Ua„)'(a,U.,.Uan), a*ab*bi \
§ 5.Z) ОПЕРАЦИИ НАД ОА-ЯЗЫКАМИ 167 Дальнейшие примеры см. в упражнении 1.6. В заключение докажем еще одну теорему, дающую очень удобный критерий автоматности языка. Теорема 5.7. Для того чтобы язык L в словаре V был Ok-языком, необходимо и достаточно, чтобы существовала согласованная с ним конгруэнция конечного индекса на V*. (Определения конгруэнции и согласованности см. ниже, стр. 316 и 318.) Доказательство, а) Пусть Г = (V, W,I,R)— стандартная ОА-грамматика и L(F)=L. Для каждой цепочки леУ' обозначим через 0(х) множество всех пар (А,В), A, B^W, обладающих следующим свойством: в диаграмме Г существует путь из А в В, производящий х. Положим xRy, если 0(х)—0(у). Легко видеть, что R — конгруэнция. Индекс R не превосходит числа всевозможных подмножеств множества W2 и, следовательно, конечен. При этом хе! тогда и только тогда, когда О(х) содержит пару вида (/, С), где С — заключительный узел диаграммы Г. Таким образом, принадлежность х к L вполне определяется множеством О(х), а это означает согласованность R с L. б) Пусть R — согласованная с L конгруэнция конечного индекса на V*, А — произвольный У?-класс илеГ. Все цепочки вида гх, где геД, будут, очевидно, принадлежать одному и тому же У?-классу В; мы будем говорить, что х переводит А в В. Определим теперь ОА- грамматику Г = {V, W,I, R) следующим образом: W есть множество всех ^-классов; / — класс, содержащий Л; R состоит из всевозможных правил вида А —*■ аВ, где а — элемент V, переводящий А в В, и вида А—*А, где AgL Ясно, что цепочка хеГ тогда и только тогда производится путем диаграммы Г, идущим из А в В, когда она переводит А в В. В частности, х производится полным путем, т. е. принадлежит L(T), тогда и только тогда, когда х переводит / в некоторый «заключительный» класс, а это, поскольку Ле/, равносильно тому, что х сама принадлежит «заключительному» классу; но объединение таких классов совпадает с L. Из доказанной теоремы и леммы ПН. 1 (см. ниже, стр. 318) вытекает
•168 СПЕЦИАЛЬНЫЕ КЛАССЫ БЁСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 Следствие. Для того чтобы язык L в словаре V был ОА-языком, необходимо и достаточно, чтобы отношение фф имело конечный индекс. Теорема 5.7 и сформулированное только что следствие часто оказываются полезными, когда надо доказать, что тот или иной язык не автоматный. Рассмотрим, например, язык L = {апЬп\п = 1,2,...}. Если бы отношение ФФ имело конечный индекс, то среди {а. Ь], L цепочек ап, п = 1, 2, ..., нашлись бы две взаимозаме- щаемые; но взаимозамещаемость цепочек ah и а1 при k Ф I невозможна, так как ahbh^L и аиЬ1ф.Ь. Дальнейшие примеры см. в упражнении 5.16. § 5.3. Линейные, металинейные и итерационно-линейные языки В этом и следующем параграфах будут рассмотрены некоторые классы грамматик, промежуточные между классом ОА-грамматик и классом всех ОБ-грамматик, а также соответствующие классы МП-машин. Начнем с рассмотрения так называемых линейных грамматик, наиболее близких к автоматным. ОБ-грамматика называется линейной, если правая часть каждого ее правила содержит не более одного вхождения вспомогательного символа. Язык, порождаемый такой грамматикой, называется линейным языком. Всякая ОА-грамматика, очевидно, линейна. Грамматики -примеров 5, 6, 9 и 12 из § 1.3 не автоматны, но линейны. Пусть фиксированы основной и вспомогательный словари V и W. Р\- или Р2-дерево, узлы которого помечены символами из V\JW, мы назовем линейным, если никакой его узел не подчиняет более одного узла, помеченного вспомогательным символом. Очевидно, ОБ-грамматик'а тогда и только тогда линейна, когда линейно каждое ее дерево вывода. Линейные языки легко охарактеризовать в терминах машин Тьюринга, подобно тому, как это делалось выше для других классов языков. Назовем МП-машину од- нодорожечной, если множество ее Достояний можно
§ 5.3] ЛИНЕЙНЫЕ И МЕТАЛИНЕЙНЫЕ ЯЗЫКИ 169 разбить на три попарно непересекающиеся подмножества: Qi («состояния прямого хода»), Q2 («состояния обратного хода») и Q3 («поворотные состояния») так, что: а) ни в одной инструкции не встречаются одновременно состояния из Qi и из Q2; б) если q e Q%, то q может встречаться только в инструкциях вида q'—*Aq и Bq—*q", где q'^Qu q" e Q2; в) начальное состояние принадлежит Qi, а все заключительные состояния принадлежат -Q2- Очевидно, в любом полном вычислении однодорожечной МП-машины направление движения меняется не более одного раза, иначе говоря,дерево вычисления линейно. [В соответствующем Д-автомате головка может двигаться только по одной «дорожке»; отсюда название «однодорожечная МП-машина». Термин «дорожка» (англ. path) обычен в работах по «предсказуемостному анализу» (см. стр. 141).] Из лемм 4.12 и 4.13 немедленно вытекает Теорема 5.8. а) Для любой линейной ОЪ-грамма- тики можно построить эквивалентную ей однодорожеч- ную МП-машину, б) Для любой однодорожечной МП- машины можно построить эквивалентную ей линейную ОЪ-грамматику. Отметим некоторые частные случаи линейных грамматик. Линейная ОБ-грамматика называется левосторонней, соответственно правосторонней, если правая часть каждого ее правила либо не содержит вхождения вспомогательного символа, либо имеет вид Вх, соответственно хВ, где х — цепочка в основном словаре. Читатель без труда докажет, что для каждой односторонней, т. е. левосторонней или правосторонней, линейной Б (ОБ)-грамматики можно построить эквивалентную ей А (ОА)-грамматику. Линейная ОБ-грамматика называется симметричной, если правая часть каждого ее правила либо не содержит вхождения вспомогательного символа, либо имеет вид хАу, где А — вспомогательный символ и Назовем МП-машину равномерной, если в любом ее вычислении между каждыми двумя следующими друг за другом перемещениями рабочей головки читается точно один входной символ. Читателю предо-
170 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 ставляется доказать, пользуясь леммами 4.12 и 4.13, что для всякой симметричной линейной ОБ-грамматики можно построить эквивалентную ей равномерную одно- дорожечную МП-машину. (Обратное также справедливо.) Отсюда, в частности, следует, поскольку конечный автомат можно считать (с несущественной модификацией) частным случаем равномерной однодорожечной МП-машины, что всякий ОА-язык порождается симметричной линейной ОБ-грамматикой, и такая грамматика может быть построена по данной ОА-грамматике. Отметим еще, что класс линейных языков эффективно замкнут относительно объединения, а также относительно пересечения с ОА-языком и умножения слева и справа на ОА-язык. Непосредственным обобщением линейных ОБ-грам- матик являются металинейные ОБ-грамматики. Так называются грамматики, правила которых делятся на две группы: а) правила вида /-*ш, где /—начальный символ и со не содержит вхождений /; б) правила вида А —»■ ф, где А ф I и <р содержит не более одного вхождения вспомогательного символа, причем этот символ отличен от /. Язык, порождаемый металинейной ОБ-грамматикой, называется металинейным языком. Из определения ясно, что каждый металинейный язык является объединением конечного числа языков, каждый из которых есть произведение нескольких линейных языков (причем линейные грамматики, порождающие эти языки, эффективно строятся по металинейной грамматике, порождающей данный язык). С другой стороны, читатель без труда докажет, что класс мета- линейных языков эффективно замкнут относительно объединения и умножения. Таким образом, класс мета- линейных языков представляет собой замыкание класса линейных языков относительно этих двух операций. Чтобы получить «автоматную характеристику» мета- линейных языков, нам придется ввести два новых класса МП-машин. Будем называть МП-машину чисто стирающей, если множество ее состояний можно разбить на четыре попарно непересекающиеся подмножества: Qi («состояния прямого хода»), (j>2 («состояния обратного хода»),
§ 5.3] ЛИНЕЙНЫЕ И МЁТАЛИНЕЙНЫЕ ЯЗЫКИ 171 (2з («состояния перехода к прямому ходу») и Q4 («состояния перехода к обратному ходу») так, что: а) ни в одной инструкции не встречаются одновременно состояния из Qi и из Q2; б) если q e Qe, то q может встречаться только в инструкциях вида A0q"~>q и q-+ A0qf, где q" &Q2 U Q4, q' <= Qx U Q4 и Л0 — выделенный рабочий символ, один и тот же во всех инструкциях этого вида и не входящий ни в какие другие инструкции; в) если q e Q4, то q может встречаться только в инструкциях вида q' -> Aq и Bq -> 9", где 9' e Qi U Фз> <7" sQ2U Q3; г) начальное состояние и все заключительные состояния принадлежат Оз. Ясно, что чисто стирающая МП-машина может переходить от уничтожения рабочих ячеек к их созданию, лишь уничтожив всю рабочую ленту (поскольку в крайней слева рабочей ячейке всегда пишется символ А0, который нигде больше не может быть записан). Будем говорить далее, что МП-машина М имеет ограниченное число поворотов, если существует такое число k, что в любом полном вычислении этой машины направление движения рабочей головки изменяется не более k раз. Наименьшее из таких чисел k будем обозначать П(М); если Т1(М) = I, будем называть М машиной с / поворотами. Таким образом, однодорожечная МП-машина — это чисто стирающая машина с одним поворотом. Впрочем, для любой МП-машины с одним поворотом очевидным образом строится эквивалентная ей однодорожечная. В отличие от предыдущих классов МП-машин, машины с ограниченным числом поворотов определяются не в терминах программ, а в терминах вычислений. Однако ниже (замечание к теореме 5.11) будет показано, что по программе произвольной МП-машины М можно распознать, имеет ли она ограниченное число поворотов, и если да, найти П(М). Теперь может быть сформулирована Теорема 5.9. а) Для любой металинейной ОЪ-грам- матики можно построить эквивалентную ей чисто стирающую МП-машину с ограниченным числом поворотов, б) Для любой чисто стирающей WW-машины с ограниченным числом поворотов можно построить эквивалентную ей металинейную ОЪ-грамматику.
172 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. в Для доказательства этой теоремы нам понадобится следующая очевидная лемма. Лемма 5.1. Пусть М и М' — МП-машины, и пусть Ми Мг, М* — их параллельная и последовательная композиции и итерация М соответственно. Тогда: а) если М и М' — чисто стирающие машины, то таковы же Ми Мч. и М*; б) если М и М' имеют ограниченное число поворотов, то это верно и для Mi и М2, причем П (Mi) < max (П (М), П (М')), П (М2) < П (М) + П (АР). Заметим теперь, что для машин с одним поворотом утверждение пункта а) теоремы 5.9 справедливо в силу теоремы 5.8; поэтому для общего случая оно следует из леммы 5.1. Доказательство пункта б) нам будет удобно ненадолго отложить. С помощью теоремы 5.9 легко указать примеры нелинейных металинейных языков (упражнение 5.26). Металинейные языки допускают естественное обобщение в двух направлениях. С одной стороны, можно рассматривать языки, допускаемые машинами с ограниченным числом поворотов, отказавшись от требования чистоты стирания, с другой — допускаемые чисто стирающими машинами без ограничения на число поворотов. Первой возможности будет посвящен следующий параграф, а сейчас мы займемся второй. Теорема 5.10. а) Для любого бескоэффициентного регулярного выражения 51 (|ь ..., |n, ln+i) or переменных |ь ..., |„, |п+1 и любых п линейных ОЪ-грам- матик Ti, ... ,Г„ можно построить чисто стирающую МП-машину, допускающую язык 5l(L(Ti),..., 1(Г„),Л). б) Для любой чисто стирающей МП-машины М можно построить бескоэффициентное регулярное выражение Щ. (|i, ..., l„, i„+i) и линейные ОЪ-грамматики Г,, ..., Г„ такие, что 2l(L(ri),... ,L(Tn),A) = L(M). Доказательство, а) Следует из теоремы 5.8 и леммы 5.1. б) Пусть М — чисто стирающая МП-машина, и пусть qu, q$ — два произвольных состояния перехода к прямому ходу. Выбросим из программы М все инструкции, содержащие состояния дерехода к прямому ходу, кроме тех, которые содержат qa в левой части или <7р в правой, и при этом заменим q$ его «двойником» —
§5.3] линейные и металинейные языки 173 новым состоянием q'& («двойники» различных состояний различны). Начальным состоянием новой машины, которую будем обозначать Ма$, объявим qa, единственным заключительным состоянием — q' Map является, очевидно, машиной с одним поворотом*), и для нее по теореме 5.8 можно построить эквивалентную линейную ОБ-грамматику Гар. Сопоставим каждой машине Ма$ новый символ аар и рассмотрим диаграмму D, строящуюся так: узлами ее служат состояния перехода к прямому ходу машины М — пусть это qi, ..., qp; начальными и заключительными узлами будут начальное и заключительные состояния М соответственно; из qa в q$ идет точно одна дуга, и эта дуга помечена символом аар. Если Lo — множество всевозможных цепочек, производимых полными путями диаграммы, то, очевидно, L{M) = S(L0; ап, а12, ..., app\L{Mn), L{M12), ..., ЦМРР)).' Но по диаграмме можно построить регулярное выражение, представляющее L0 (теорема 5.6). Остается заменить в этом выражении каждый символ аар на £(Гар). В частности, если М — машина с ограниченным числом поворотов, то в диаграмме D длины путей ограни-' чены, так что D не имеет циклов, и поэтому соответствующее регулярное выражение является, — точнее, может быть сделано — многочленом (замечание к теореме 5.6). Следовательно, в этом случае L(M) получается из Ь(Га$) с помощью объединения и умножения; но класс металинейных языков, как уже отмечалось,- эффективно замкнут относительно этих операций. Тем самым доказана теорема 5.9,6). Назовем языки, допускаемые чисто стирающими МП-машинами, итерационно-линейными языками. Теорема 5.10 позволяет указать следующий «ка-' ионический вид» ОБ-грамматики, порождающей итерационно-линейный язык: Г = {V, W, I, R), где W = WX\J U W2, R — Ri U /?2, причем Wl(\W2 = 0; R\ состоит из правил вида А —+ВС, где A, CeWi, Se^; R2 состоит из правил вида А —► со, где А е W2 и со содержит * *) Ради этого нам и пришлось заменить ?р «двойником». Впро- ; чем, на самом деле «двойник» необходим тол(ко при а = |3.
174 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 не более одного вхождения символа из W2 и не содержит вхождений символов из W\. Такие грамматики можно назвать итерационно-линейными. Из теоремы 5.10 следует также, что класс итерационно-линейных языков представляет собой замыкание класса линейных языков относительно объединения, пересечения и итерации. Существуют итерационно-линейные языки, не являющиеся металинейными (упражнение 5.27). О «допускающих возможностях» детерминированных машин рассмотренных классов см. упражнение 5.33. § 5.4. Грамматики с ограниченной активной емкостью выводов. ОАЕВ-языки Займемся теперь изучением языков, допускаемых МП-мащинами с ограниченным числом поворотов. Мы получим для этих языков, подобно металинейным и итерационно-линейным, две характеристики: в терминах грамматик и в алгебраических терминах. Пусть Г — грамматика с основным словарем V и вспомогательным словарем W, и со e(VUU?)*. Назовем активной емкостью цепочки число вхождений в нее вспомогательных символов. Активной емкостью вывода в Г будем называть наибольшую активную емкость входящей в этот вывод цепочки*). Если существует число k, мажорирующее активные емкости всех полных выводов в Г, мы будем называть Г грамматикой с ограниченной активной емкостью выводов (ОАЕВ-г р а м м а т и ко й); наименьшее из таких чисел k будет обозначаться /0(Г). Языки, порождаемые ОАЕВ-грамматиками, мы будем называть ОАЕВ-я з ы к а м и. Очевидно, для приведенной ОБ-грамматики Г тогда и только тогда /о(Г) = 1, когда Г линейна. Введем еще одно вспомогательное понятие. Пусть Г — произвольная ОБ-грамматика, Т — дерево вывода в *) Обе эти величины фактически уже рассматривались нами. Именно, фигурирующая в определении активной емкости грамматики (стр. 57) функция f(T,D,i)—это активная емкость цепочки ю(, а ?(Г, D, х)—активная емкость вывода D. (Активная емкость Б-грам- матик изучается ниже, § 7.2.)
§ 5.4] ГРАММАТИКИ С ОГРАНИЧЕННОЙ ЕМКОСТЬЮ ВЫВОДОВ J75 ней и V — Л-дерево, полученное из Т выбрасыванием всех узлов, помеченных основными символами. Число висячих узлов дерева Т' будем называть приведенным индексом ветвления дерева Т (не Г'!). Нетрудно видеть, что это число равно наибольшему значению активной емкости вывода, отвечающего дереву Т. (В самом деле, это наибольшее значение достигается на выводе, в котором правила, не содержащие в правых частях вспомогательных символов, применяются в последнюю очередь; а цепочка этого вывода, имеющая наибольшую активную емкость, — точнее, последняя из таких цепочек— должна «проходить» через все висячие узлы Г.) Таким образом, ОБ-грамматика Г тогда и только тогда является ОАЕВ-грамматикой, когда множество приведенных индексов ветвления полных выводов в Г имеет конечную наименьшую верхнюю грань; последняя, если она существует, равна /о(Г). Теперь мы можем доказать следующее утверждение. Лемма 5.2. Существует алгоритм, позволяющий по любой ОЪ-грамматике Г распознать, является ли она ОАЕВ-грамматикой, и в случае положительного ответа найти /о(Г). Доказательство. Назовем рангом вспомогательного символа А ОБ-грамматики Г = (V, W, I, R) наименьшую верхнюю грань множества приведенных ин' дексов ветвления деревьев выводов в Г, начинающихся символом А и заканчивающихся цепочками в V. Кроме того, каждому основному символу припишем ранг 0. Все символы конечного ранга можно найти — и определить их ранги — следующим способом. Определим последовательность Wo, Wu ... подмножеств словаря V U W так: W0 = V; если определены Wo, ..., W„, то Wn+i состоит из тех А е W — (WQ U ... U Wn), которые обладают следующим свойством: какова бы ни была последовательность Ло-*-!,/^!, A1->l2Aii\2 As-i-^-lsA^. правил Г такая, что А0 = А и А0, ..., As e W — (W0[) ... ♦ •• U Wn), все цепочки £*, т], принадлежат V*. (Это свойство, очевидно, эффективно проверяемо.) Непосредственная индукция по п показывает, что для каждого Wn все принадлежащие ему символы имеют конечные ранги; сцособ ИХ нахождения ясен из конструкции. В то же
176 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 время символы, не вошедшие ни в одно Wn, если такие есть, имеют бесконечный ранг. Действительно, если п0 — наибольшее из чисел п, для которых Wn не пусты, то из всякого В <= W — (WQ\J ... U Wn„) будет выводима некоторая цепочка вида gCn, где С е W — (WQ[)... UlFno) и |т) содержит вхождение вспомогательного символа; а поскольку то же самое имеет место для Сит. д., для любого р найдется выводимая из В цепочка, содержащая не менее р вхождений вспомогательных символов, что и обеспечивает бесконечность ранга В. Итак, Г тогда и только тогда будет ОАЕВ-грамматикой, когда ее начальный символ содержится б одном из Wn., и ^о(Г) будет равно в этом случае рангу начального символа. Легко заметить, что понятие приведенного индекса ветвления позволяет охарактеризовать и МП-машины с ограниченным числом поворотов. Именно, если определить этот индекс для дерева вычисления так же, как для дерева вывода, то он будет равен числу переходов от создания ячеек к их уничтожению, иначе — половине увеличенного на единицу общего числа поворотов. Теперь без труда получается Теорема 5.11. а) Для любой МН-машины М с ограниченным числом поворотов можно построить эквивалентную ей ОЪ-ОАЕВ-грамматику Г такую, что /о (Г) = 1/2 (П(М) + !)■ б) Для любой ОБ-ОАЕВ- грамматики Г можно построить эквивалентную ей МП- машину М с ограниченным числом поворотов такую, что П(М) =2/0(Г) —1. Доказательство немедленно следует из лемм 4.12 и 4.13 и того факта, что конструкция, использованная при установлении леммы 4.14, сохраняет приведенные индексы ветвления деревьев. Замечание. Это же обстоятельство вместе с леммой 5.2 дает алгоритм, позволяющий по любой МП-машине М распознать, имеет ли она ограниченное число поворотов, и в случае положительного ответа найти П(М). ..Перейдем теперь к. алгебраической характеристике ОБ-ОАЕВ-языков. Пусть V = {аи ..., аи, b) (k Гзг 0) д. V — произвольные словари, L <=. V*, L' <=. V , и пусть каждая цепочка языка £ содержит не более одного вхождения Ь. Положим Sb(L, L') = S(L; au ..., aft, fclfa,},,.,, {ak}, Z/). ОперациюSj,будем называть цент*
§ 5.4] ГРАММАТИКИ С ОГРАНИЧЕННОЙ ЕМКОСТЬЮ ВЫВОДОВ 177 ральной подстановкой L'bL (с центром Ь). Выражение, составленное из абстрактных символов gi, . . ., |„ с помощью знаков центральной подстановки (с произвольными центрами), будем называть центрально-подстановочным выражением от (переменных) gb ..., g„. Например, Sc(h, Sa(l2, Sc(g3, gi))) есть центрально-подстановочное выражение. Можно определить представление языка с помощью центрально-подстановочного выражения так же, как представление с помощью многочлена или регулярного выражения (стр. 24). Мы покажем, что класс языков, представимых с помощью центрально-подстановочных выражений от линейных языков (иначе говоря, замыкание класса линейных языков относительно центральной подстановки), «эффективно совпадает» с классом ОБ-ОАЕВ-языков. Точнее, имеет место Теорема 5.12. а) Для любого центрально-подстановочного выражения 91(£,, ..., g„) и любых п линейных ОЪ-грамматик Г{ Г„ таких, что выражение 51 (L(Г,), ..., L(T„)) определено*), можно построить ОЪ-ОАЕВ-грамматику Г, порождающую язык 91 (L (Г[),... ..., L (Г„)). б) Для любой ОЪ-ОАЕВ-грамматики Г можно построить центрально-подстановочное выражение 91(|, £„) и линейные грамматики Гь ..., Г„ такие, что L(r) = 9l(L(T1), ...,L(r„)). Доказательство, а) Достаточно показать, что если Tj и Г2 — ОБ-ОАЕВ-грамматики и каждая цепочка языка L(T{) содержит не более одного вхождения символа Ь, то можно построить ОБ-ОАЕВ-грамматику Ть, порождающую S^L^), МГ2)). Но при Tt = {V, WltIh Rt) (j= 1, 2) и Wif}W2 = 0 мы можем, очевидно, положить Гь=(У, W{ U W2, /ь Я, [Ь, /2] U R2), где Rl [Ь, /2] получается из Rl заменой всех вхождений b вхождениями /2. б) При /0(Г) = 1 утверждение тривиально. Пусть оно Доказано для случая IQ(T)<k (k > 1), и для данной грамматики T = (V, W, I, R) имеет место I0(T) = k. Рассмотрим ПРОИЗВОЛЬНЫЙ ПОЛНЫЙ ВЫВОД D = (С00, . . ., (x)s) *) Это значит, что если в данном выражении для каких-либо I, j в L(Ti) подставляется L(Vj) вместо символа Ь, то каждая цепочке языка L(Ti) содержит не более одного вхождения Ь,
178 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 в Г и обозначим через iD наибольшее число /, для которого каждая из цепочек со0, соь ..., а>{ содержит точно одно вхождение вспомогательного символа. Пусть U — множество цепочек cot£) для всех полных выводов в Г, Д, ..., At — все вспомогательные символы, встречающиеся в цепочках языка U, и Ai-=>-&iu . . ., Aj-^-ayls (/= 1, ..., t) — всевозможные правила Г с левой частью А/, содержащие в правых частях либо более одного вхождения вспомогательного символа, либо ни одного. Для произвольных /, /, l=S^/=s^, 1^/^S/, обозначим через о/п, •••, ajirn все вхождения вспомогательных символов в со// (очевидно, г/г<&) и через В,п, ..., Б//Г//— те вспомогательные символы, вхождениями которых являются сс/п, ..., а/;г соответственно. Положим Tnm^{V,W,Bilm,R) (т=1,...,гн). Ясно, что все Тjim являются ОАЕВ-грамматиками и при этом /0(Г//т)<&. Введем новые символы Ьпи ..., bjtr и заменим каждое вхождение altm вхождением символа bjim; полученную цепочку обозначим ф/7. (Если <оц не содержит вспомогательных символов, то <$ц совпадает с ®ц.) Положим L" = S(L'; At, .... Л|{фц, ..., q>iS|} [tftu •••,Ф^}). Язык L" порождается линейной грамматикой, получ'ае- мой из Г заменой каждого правила Aj-xo/i, / = 1, • • •, t; 1 = 1, ..., Sj, правилом Aj-хрц и выбрасыванием всех остальных «нелинейных» правил. Но язык L может быть получен из L" последовательным применением операций Sb , Sb , •••, Sb. (причем в качестве подставляе- 111 112 *strtSi мых языков выступают L(Tni), L(Tn2), ••• соответственно). Ввиду индуктивного предположения и того очевидного факта, что все (рц и Тцт могут быть найдены эффективно, это завершает доказательство. О «допускающих возможностях» детерминированных машин с ограниченным числрм поворотов см. упражне' ние 5.33.
УПРАЖНЕНИЯ 179 Замечания. 1) Из теорем 5.9 и 5.11 вытекает, что класс металинейных языков совпадает с пересечением классов итерационно-линейных и Б-ОАЕВ-языков. 2) Просмотрев доказательство теоремы 5.5, легко убедиться, что если фигурирующая там машина Mi од- иодорожечная, чисто стирающая или с ограниченным числом поворотов, то и машина М будет такой же. Поэтому классы линейных, металинейных, итерационно-линейных и Б-ОАЕВ-языков эффективно замкнуты относительно пересечения с ОА-языками. 3) Все эти классы эффективно замкнуты также относительно гомоморфных отображений (в частности, проекций). Это непосредственно следует из определений соответствующих типов грамматик. (Действительно, в этих определениях существенно только расположение вхождений вспомогательных символов в правые части правил, а оно не изменяется при переходе от данной грамматики к грамматике для гомоморфного образа.) Справедлив, впрочем, и более общий факт, доказательство которого предоставляется читателю, — все указанные классы эффективно замкнуты относительно подстановки вместо элементарных символов любых ОА-язы- ков. Упражнения 5.1. Построить диаграммы грамматик примеров 1 н 3, а) из § 1.3. 5.2. Показать, что для всякой А (ОА)-грамматики можно построить эквивалентную ей однозначную А (ОА)-грамматику. 5.3. Показать, что коммутативное замыкание (упражнение 3.7) А-языка может не быть А-языком (и даже Б-языком). 5.4. По конечному автомату с программой {qi ф -> q2, qia->q2, q2b -> q2, q2b -> ?з> Уза -> q4, q3a -> q2, q4b -> qi) и заключительными состояниями q2, <?з построить детерминированный конечный автомат, пользуясь конструкцией, примененной в доказательстве теоремы 5.3. Построить диаграммы обоих автоматов. 5.5. Показать, что для всякой грамматики, все правила которой имеют вид А ->• аВ, аА-^-В, А-> В и Л -> Л, где А, В — вспомогательные символы и а—основной символ, можно построить эквивалентную ей ОА-грамматику [Biichi 1964]. 5.6. Показать, что всякий А-язык является проехцией подходящего стандартного А-языка. (Определение стандартного А-языка см. в § 6.5.) 5.7. Пусть V — словарь и # — символ, не принадлежащий V. Простой окрестностиой грамматикой в алфавите V
180 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 [Шрейдер 1969] называется конечное множество S вхождений, именуемых окрестностями, символов из V в цепочки, принадлежащие множеству {Л, #}К+{Л, #}. Окрестность ах*а*у$, где а и (5 могут означать ф или Л, в ы- полняется для вхождения u*a*v символа а в цепочку г = uav e V*, если и и v представимы соответственно в виде и = sx, v = yt, причем, если а = #, то s = Л, и если (5 = #, то t = Л. Языком, определяемым простой о кр е с тн о стн о й грамматикой S, называется множество всех цепочек из V*, в которых для каждого вхождения символа выполняется хотя бы одна окрестность из S. А-грамматика называется k-o пределенной (k — натуральное число), если она обладает следующим свойством: каковы бы ни были две цепочки х и у, производимые какими-либо путями ее диаграммы, если Иь([#]&) означает наибольший конец х (соответственно у), длина которого не превосходит k, то из совпадения [х]к и [у]к следует совпадение последних узлов соответствующих путей. а) Показать, что класс языков, определяемых простыми окрест - ностными грамматиками, совпадает (и притом «эффективно») с классом языков, порождаемых ^-определенными А-грамматиками (при всевозможных k). б) Показать, что для всякой простой окрестностной грамматики можно построить эквивалентную ей простую окрестностную грамматику, все окрестности которой имеют вид <хх*а*$ (а, (5 = Л, #). в) Показать, что всякий стандартный А-язык (см. ниже, § 6.5) порождается 1-определенной А-грамматикой. 5.8. Определим конечный автомат с выходом аналогично тому, как определялась МП-машина с выходом (упражнение 4.25). Для конечного автомата с выходом М' определим язык Lo(M') точно так же, как это делалось для МП-машины с выходом. Показать, что: а) для любого конечного автомата М можно построить такой конечный автомат с выходом М', что L0(M') = L(M); б) для любого конечного автомата с выходом М' можно построить такой конечный автомат М, что L(M) = Lo(M/'). 5.9. Определим преобразование, осуществляемое конечным автоматом с выходом (упражнение 5.8), аналогично тому, как это делалось для МП-машин с выходом (упражнение 4.25). а) Показать, что классы ОА-языков и, ОБ-языков эффективно замкнуты относительно преобразований, осуществляемых конечными автоматами с выходом. б) Верно ли это для классов линейных, металинейных, итерационно-линейных и ОБ-ОАЕВ-языков? 5.10. Указать способ построения по диаграмме ОА-грамматики Г с основным словарем V диаграммы ОА-грамматики, порождающей язык Пр2£(Г), /£= V. 5.11. Показать, что класс ОА-языков эффективно замкнут относительно обращения. (Определение см. в сноске на стр. 156). 5.12. Показать, что классы линейных, металинейных, итерационно-линейных и ОБ-ОАЕВ-языков эффективно замкнуты относительно пересечения с ОА-языками и относительно подстановки ОА-языков.'
УПРАЖНЕНИЯ 181 5.13. Множество натуральных чисел Е (или, что то же самое, язык в словаре {|}, см. стр. 34) называется периодическим, если существуют такие k, I, что при п > k из ле£ следует п + / е £. Показать, что множество натуральных чисел является периодическим тогда и только тогда, когда оно есть ОА-язык, причем по наименьшим соответствующим k и / можно построить нужную ОА-грамматику, и обратно, по такой грамматике можно найти наименьшие k я I. 5.14. а) Указать алгоритм, позволяющий для любой ОА-грам- матики {V, W, I, R) и любого множества OglF распознать, существует ли такая цепочка х s V*, что О = О(х) (см. доказательство теоремы 5.7). б) Указать алгоритм, позволяющий для любой ОА-грамматики (V, W, I, R) и любых цепочек х, у, г s V* распознать, переводит ли z класс 0(х) в класс О (у). 5.15. Будем говорить, что отношение эквивалентности ~ на V*, где V — словарь, совместимо с конкатенацией справа, если для любых х, у, г е V* из х ~ у следует хг ~ уг. Показать, что: а) Если для произвольной ОА-грамматики Г = (V, W, I, R) определить отношение ~ на V* следующим образом: х ~ у тогда и только тогда, когда Щ*) = Н(у), где П(«) означает множество тех ilsF, которые являются концами путей, начинающихся в / и производящих и, то ~ есть эквивалентность, согласованная с L(T) и совместимая с конкатенацией справа. б) Для того чтобы язык L в словаре V был ОА-языком, необходимо и достаточно, чтобы существовала согласованная с i и совместимая с конкатенацией справа эквивалентность конечного индекса на V*. в) Для того чтобы язык L в словаре V был ОА-языком, необходимо и достаточно, чтобы отношение R, определяемое следующим образом: xRy = (Vz <= V*) [KGi = Fs L], имело конечный индекс. 5.16. Показать, что следующие линейные языки не являются автоматными: {хх | х <= V+}\ {хек | х <= V+} (в обоих случаях мощность V ^ 2); язык примера 12 из § 1.3. 5.17. а) Доказать следствие из теоремы 5.5 непосредственно, т. е. указать способ построения по Б (ОБ)-грамматике Fi и А (ОА)- грамматике Г2 такой Б (ОБ)-грамматики Г, что L (Г) =L (T{) f] L (Г2). Показать, что если при этом Г] однозначна, то и Г можно сделать однозначной. б) Показать, что Б-язык {х | х <= {а, Ь, с, d}+; | х \а = | х \ь V | х \с = | х \d) неоднозначен. 5.18. Для того чтобы каждому дереву вывода в ОБ-грамма- тике Г отвечало единственное растянутое дерево вывода, необходимо и достаточно, чтобы Г была линейной. Доказать. 5.19. Показать, что для всякой линейной ОБ-грамматики можно построить эквивалентную ей линейную ОБ-грамматику, все правила
182 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 которой имеют вид А -*■ аВ, А-*- Ва или А -*■ Л, где А, В — вспомогательные символы, а — основной символ. 5.20. Определим диаграмму линейной ОБ-грамматикн Г = = (V, W, I, R) с правилами вида, указанного в упражнении 5.19, следующим образом [Днковский 1970]: узлами диаграммы будут элементы W; если А ->- аВ s R, то из А в В идет дуга, помеченная парой (а, Л); если А -*■ Ва s R, то из А в В идет дуга, помеченная парой (Л, а); / — начальный узел; если Л-»-Ле/?, то А — заключительный узел. Полный путь определяется так же, как для диаграммы ОА-грамматики. а) Определить цепочку, производимую путем в диаграмме, так, чтобы множество цепочек, производимых полными путями, совпало с ЦТ). б) Обобщить понятие диаграммы на случай произвольной линейной ОБ-грамматики. 5.21. а) Назовем двуленточным конечным автоматом (ДК-а в то м а то м) машину Тьюринга с двумя лентами Л\ и Л2, каждая из которых имеет свою головку, общим для обеих лент алфавитом, инструкциями только типа (i) (стр. 42) и множеством состояний, разбитым на два непересекающихся подмножества Q\ и Q2 так, что инструкция, имеющая в левой части состояние из Qt (t=l, 2), выполняется на ленте JIt. ДК-автомат допускает пару цепочек (х, у), если при записанных на Л\ и Л2 цепочках хну соответственно автомат может, начав вычисление в начальном состоянии с головками, обозревающими левые граничные маркеры, закончить его в заключительном состоянии с головками, обозревающими правые граничные маркеры. Язык, допускаемый ДК-а втоматом М (обозначение: L(M)), есть множество допускаемых им пар цепочек. ДК-автомат М и грамматика Г эквивалентны, если L (Г) = — {x()\(x,y)eL(M)}. Показать, что для всякого ДК-автомата можно построить эквивалентную ему линейную ОБ-грамматнку и обратно [Rosenberg 1967]. б) Пользуясь результатом предыдущего пункта, показать, что подстановка автоматных языков в линейный дает линейный язык. 5.22. а) Показать, что для всякого детерминированного ДК-автомата (упражнение 5.21) можно построить эквивалентную ему однозначную линейную ОБ-грамматику. б) Показать, что язык {хсху | х s {а, Ь}*, у = Л V У е d {a, 6}*}, порождаемый однозначной линейной ОБ-грамматнкой, не допускается никаким детерминированным ДК-автоматом [Диковский 1970]. 5.23. Показать, что если L = а*6*, где а, Ь — элементарные символы, и K(L) полулинейно (см. § 4.3), то L — линейный язык. Замечание. Отсюда следует, что всякий ОБ-язык, содержащийся в а*Ь*, является линейным. 5.24. Если правая часть каждого правила НС-грамматики Г содержит не более одного вхождения вспомогательного символа, то для Г можно построить эквивалентную ей линейную Б-грамматику. Доказать. 5.25. Указать способ непосредственного построения по данной ОА-грамматике эквивалентной ей симметричной линейной ОБ-грамматики.
УПРАЖНЕНИЯ 183 5.26. Показать, что языки {/■&"' •••Лп*|ге/ = о, 1,...} и (й = 2,3, ...) (*iV-- */А|*!••••• **еУ*> MV)>2} допускаются чисто стирающими МП-машинами с 24—1 поворотами и не допускаются никакими МП-машинами с меньшим числом поворотов. 5.27. Показать, что итерационно-линейный язык {ачЬп\п = = 0, 1, ...}* не является ОБ-ОАЕВ-языком. Указать другие аналогичные примеры. 5.28. Показать, что языки {ak+lbkcmdmbl\k, U « = 0, 1, ...}, {ak+lbkambl+m\ k, I, m = 0, 1,...}, {xyyzzx ] x, у, z <= V*, p (V) > 2} допускаются МП-машинами с тремя поворотами, но не допускаются никакими чисто стирающими МП-машинами. 5.29. Показать, что для каждой чисто стирающей МП-машины М можно построить эквивалентную ей МП-машину М', в которой для каждого полного вычисления найдется равносильное ему полное вычисление такое, что рабочая головка на каждом заданном расстоянии от начала ленты бывает не более четырех раз. 5.30. Пусть 2"0 ~ класс всевозможных языков, каждый из которых состоит из одной однобуквенной цепочки, и прн каждом / = 0, 1,... 3?i+i есть класс всевозможных языков вида S (L; а\, ..., an\Li, ..., Ln), где L — линейный язык и Ц, ..., Ln s E^0U ... \}&i. Пусть, кроме того, ЯЯ; и Эг,- (2 = 0, 1, ...) означают замыкание i?; относительно объединения и умножения, соответственно объединения, умножения и итерации. Показать, что для любого i = 0, 1, ... имеет место 2"{ s ЯК; с yit s 3?i+\. 5.31. Непосредственно (не пользуясь грамматиками) доказать «эффективную эквивалентность» центрально-подстановочных выражений и МП-машин с ограниченным числом поворотов. 5.32. Показать, что всякий ОБ-язык, содержащийся в ©[ ... cofe, где (а{, ..., cofe — фиксированные цепочки, порождается при k = 1 ОА-грамматикой и при k > 1 — ОБ-ОАЕВ-грамматикой Г такой, что /о (Г) sg; £ — 1 (ср. замечания к теореме 4.6 и к упражнению 5.23). (Языки указанного здесь вида называются ограниченными; об ограниченных ОБ-языках см. [Ginsburg 1966, гл. V].) 5.33. Показать, что: а) Линейный язык Pk= {сГч"1 ... amkb"'k\mi, гег=0, 1,...; т1 = п1 V ... V mk = nk} (fe = 2,3, ...) допускается детерминированной чисто стирающей МП-машиной с
184 СПЕЦИАЛЬНЫЕ КЛАССЫ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ [ГЛ. 5 2k—1 поворотами и не допускается никакой детерминированной МП-машиной с меньшим числом поворотов. . б) Линейный язык Р2 U Я3 U ... допускается детерминированной чисто стирающей МП-машиной и не допускается никакой детерминированной МП-машиной с ограниченным числом поворотов. в) Линейный язык Rk = {aV«caР*Ь% ... caPk-'bqk-'caP4qk+rkcbrk-'c ... ... сЪ^сЬ'1 | pv qv r{ = 0, 1 ...; p{ = q{ + г, V ... V/>j = ?t + rj) (k = 2, 3, ...) допускается детерминированной МП-машнной с 2k — 1 поворотами и не допускается никакой детерминированной МП-машиной с меньшим числом поворотов и никакой детерминированной чисто стирающей МП-машиной. г) Б-ОАЕВ-язык R?U R3U ... (порождаемый грамматикой Г, для которой /о(Г) = 2) не допускается никакой детерминированной МП-машиной с ограниченным числом поворотов и никакой детерминированной чисто стирающей МП-машиной. 5.34. Показать, что в упражнении 4.25, в) можно взять в качестве Г итерационно-линейную ОБ-грамматику и в качестве М\ чисто стирающую МП-машину с выходом.
ГЛАВА 6 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О БЕСКОНТЕКСТНЫХ ГРАММАТИКАХ. ДРУГИЕ СПОСОБЫ ЗАДАНИЯ БЕСКОНТЕКСТНЫХ ЯЗЫКОВ Наряду с Б-грамматиками и МП-машинами существует ряд других способов задания Б-языков. Многие из них вызваны к жизни потребностями приложений: различным способам задания языка отвечают различные способы описания синтаксической структуры его предложений (цепочек), отражающие различные лингвистические аспекты этой структуры. Некоторые из таких способов будут рассмотрены в настоящей главе. Здесь же нам будет удобно изложить еще несколько фактов, относящихся к «основным» способам задания Б-языков — Б-грамматикам и МП-машинам. § 6.1. Категориальные грамматики Рассмотрим конечное множество W, которое будем называть словарем категорий, а его элементы — элементарными категориями. Введем в рассмотрение символы \, /, [ , ], не принадлежащие W. Из этих символов и элементов W будем строить выражения специального вида — категории (над W). Именно: I. Всякая элементарная категория есть категория. II. Если Ф, W — категории, то выражение [Ф/W] (читается «Ф над *¥») и [Ф\ЧГ] (читается «Ф под W») — также категории. III. Всякая категория является таковой либо в силу I, либо в силу II. Множество всех категорий над W будем называть категориальной системой над W и обозначать
186 дополнительные сведения о б-грамматиках [гл. е K(W). Множество всех цепочек, составленных из категорий над W, будет обозначаться K(W)*. Пусть |, т) — цепочки категорий. Мы будем говорить, что £ непосредственно сокращается до т), если либо | = ?Ф[Ф\¥]В, г) = £^6, либо | = С[Ф/¥]¥В, г) = £Фе, где Ф, W^K(W) и £, В —цепочки категорий. Замечания. 1. Можно рассматривать категорию [ФХ^Р] как оператор, действующий справа на категорию Ф и превращающий ее в ^Р. Аналогично для [Ф/П 2. Для запоминания удобно представлять себе непосредственное сокращение категорий как сокращение дробей, например при умножении «дроби» [ФЛР] на W (справа) W сокращается со «знаменателем». Далее будем говорить, что | сокращается до т), если существует такая последовательность цепочек категорий go, li,...,ln над W, что go = I, In = Л и gi-i непосредственно сокращается до |* при каждом i = 1, ..., п. Теперь мы можем сформулировать определение категориальной грамматики. Категориальной грамматикой (К-грам- матикой) называется упорядоченная четверка G = {V, W, Ф0, f), где: 1), 2) V и W — конечные множества, называемые соответственно основным словарем и словарем категорий (их элементы называются соответственно основными символами и элементарными категориями); 3) Ф0 — элемент W, называемый главной категорией; 4) f — функция, ставящая в соответствие каждому основному символу конечное подмножество категориальной системы K(W); f называется приписывающей функцией. Пусть х = ау ... ah — цепочка в f, й djeV и g = Ф1 ... Фь — цепочка категорий над W, Фь ... ..., Фй е K(W). Мы будем говорить, что грамматика G сопоставляет цепочке х цепочку \, если для каждого i=l k имеет место Ф^еДа,); грамматика G приписывает цепочке х категорию Ф, если либо х = а е V и Ф£ f(a), либо некоторая, цепочка категорий, сопоставленная х, сокращается до Ф. Языком, определяемым К-грамматикой G (обозначение: L(G)), называется множество тех цепо-
§6.11 КАТЕГОРИАЛЬНЫЕ ГРАММАТИКИ 187 чек в основном словаре, которым грамматика G приписывает главную категорию. Две К-грамматики эквивалентны, если они определяют один и тот же язык. Приведем несколько примеров К-грамматик. При этом будем явно выписывать только приписывающую функцию, имея в виду, что Фо, Фи А, К, Т, Tt обозначают элементарные категории, в том числе Фо — главную категорию. Если значение f(a) приписывающей функции f состоит из одной категории *¥, то вместо f(a) = {W} пишем f(a) = W. Пример 1. Определим приписывающую функцию /j на словаре {а, Ь) так: /\(а) = Ф0, U (Ь) = [Фо\Фо1- Легко видеть, что цепочка, состоящая из таких категорий, сокращается до Ф0 или равна Ф0 тогда и только тогда, когда она имеет вид Ф0 ([Ф0\Ф0])" (я = 0, 1,...)- Поэтому соответствующая грамматика определяет язык {аЬп\п = 0, 1, ...}. Пример 2. Определим функцию /2 на {а, Ь] так: f2(a) = {A, [Л/Ф0]}, fi(b) = [A\<D0]. Ясно, что всякая цепочка категорий вида ([Л/Ф0])"-1 А ([Л\Ф0])" (п = = 1, 2, ...) сокращается до Ф0. С другой стороны, цепочка категорий, являющихся значениями f2 (точнее, входящих в значения f2), длина которой равна 2п, п = \, 2, ..., сокращается до Ф0 только тогда, когда она имеет вид ([А!Ф0])п'1 А([А\Ф0])п. (Для доказательства нужно к этому утверждению присоединить еще одно: цепочка категорий, являющихся значениями или частями значений f2, длина которой равна 2л— 1, п = 1, 2, ..., сокращается доФ0или равна Ф0 только тогда, когда она имеет вид ([А/Ф0])п~1 ф0([А\Ф0])п~1; оба утверждения доказываются одновременной индукцией.) Таким образом, соответствующая грамматика определяет язык {апЬп\п = 1, 2, ...}. Пример 3. Определим функцию f3 Ha словаре V =={ри ..., рк, 1, &, V, =>, (,)} так: МР/) = Фо (/=1 k), Щ) = К, М)) = [Фо\и(\Ф,П, Ы~1)~ = [Фо/Ф1]. f3(&)=f3(V) = f3(=>) = №l\№o/®l]]- Пусть F(0) — множество тех цепочек, которым такая грамматика приписывает категорию 0. Тогда: (а) Р(Ф0) совпадает с множеством всех правильно построенных
188 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 формул (ппф) логики высказываний *); (б) Р(Ф1) = {(Щ^ % есть ппф}; (в) Р([Ф0/Ф1]) = {~]}и{(Ща\% есть ппф; а = &, V, =>}; (г) F(K) = {(}; (Д) F([<W\<I>i]])={)}; (е)/='([Ф1\[Ф0/Ф1]])^{&) V, =}• Утверждения (г), (д), (е) очевидны; (а), (б), (в) доказываются одновременной индукцией по длине цепочки (проведение которой предоставляется читателю). Пример 4. Определим «терм» в словаре {аи ..., ак, +»•»(>)>=} следующим образом: (i) au ..., ак — термы; (ii) если tu t2 — термы, то (ti) + (t2) и (^) • (t2) — термы; (iii) других термов нет. Выражения вида ti=t2, где tlt t2 — термы, назовем «формулами». Читателю предоставляется доказать, что множество формул определяется К-грамматикой со следующей приписывающей функцией f4: f4(at) = T, f4(+) = f4(.) = = [7\\[7V\]], M)) = *. U)) = tfW,]], f4(=) = = [Т\[Ф0/Т]]. Полезно также найти, аналогично предыдущему примеру, множества F(@). Дальнейшие «абстрактные» примеры см. в .упражнении 6.1. Лингвистический пример см. [Гладкий—Мельчук 1969, стр. 127—131]. Примеры 3 и 4 в какой-то степени поясняют содержательный аспект работы К-грамматик: категория, приписываемая грамматикой той или иной цепочке, отражает «синтаксическую роль» последней, причем эта роль понимается либо как принадлежность к одному из немногочисленных «основных синтаксических классов» (если приписанная категория является элементарной; так, в примере 4 основные классы — «терм», «формула», «левая скобка»), либо «операционно»: «данная цепочка есть оператор, превращающий цепочку такого-то класса в цепочку такого-то класса» (так, в примере 3 категория [Ф0/Ф1] приписывается унарному оператору ~] и цепочкам вида (51) а, синтаксически также ведущим себя, как унарные операторы, а категория [ф)\[ф0/Ф1]] — бинарным операторам &, Л, =>). Аналогичным образом можно поступать для естественных языков; например, непереходный глагол • может *) Имеется в виду следующий вариант определения ппф: (i) pl pk суть ппф; (ii) если Ж, 33 — ппф и а — &, V. =3. то Т(Я) и Щ) а (33) — ппф; (iii) других ппф иет.
5 6.1] КАТЕГОРИАЛЬНЫЕ ГРАММАТИКИ 189 рассматриваться как оператор, переводящий существительное в предложение. Подробнее о лингвистическом аспекте К-грамматик см. [Гладкий — Мельчук 1969, стр. 122—136, 150—153]. Перейдем к вопросу о взаимоотношении между К- грамматиками и Б-грамматиками. В одну сторону этот вопрос решается чрезвычайно просто. Пусть G = = ( V, W, Ф0, f) — К-грамматика. Рассмотрим Б-грамма- тику Г = {V, W,Ф0, R), где W состоит из всех категорий, являющихся частями элементов значений f*), a R — из всевозможных правил следующих трех видов: (1) ¥->Ф[Ф\¥], где [Ф\¥] е= W (тогда иФДе W); (2) ¥-»[Ч7Ф]Ф, где [Ч7Ф]е1Г; (3) Ф->а, где Фе/(а). Будем говорить, что Г канонически соответствует G. Эквивалентность G и Г, т. е. равенство L(G)= L(Г), очевидна. Произвольное дерево вывода Т в грамматике Г мы. будем называть деревом сокращения цепочки ц(Т) в грамматике G. (Разумеется, дерево сокращения можно определить и независимо от Г.) Любой цепочке языка L(G) каждое ее дерево сокращения позволяет хорошо известным нам способом (см. § 3.1) сопоставить размеченную систему составляющих (очевидно, бинарную). В содержательном аспекте эта система обладает любопытной особенностью: среди всевозможных ее иерархизаций естественно выделяются две «главные», наиболее важные для приложений, так что К-грамматика позволяет достаточно «хорошим» способом сопоставлять цепочкам не только системы составляющих, но и деревья подчинения (см. § П1.3). Эти иерархизаций получаются так. Пусть А — неточечная составляющая,, «происходящая» от узла дерева сокращения с меткой- Ф; тогда из двух непосредственно вложенных в А составляющих В, С одна — пусть В — происходит от узла с меткой [ФЛР] или [ЧГ\Ф], где ^ — метка узла, от которого происходит С. При одной из интересующих нас *) Часть категории Ф определяется так: (а)Ф есть часть Ф; ф) если Ф = [1Р\в] или Ф = рР/в], то Ч' и в — части Ф; Су) если 'F — часть Фив — часть Ч', то в — часть Ф; (6) Ч может быть частью Ф только в силу (а) (Р), (у).
190 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 иерархизаций главной составляющей будет всегда считаться С («аргумент»), при другой В («оператор»). Первую иерархизацию мы назовем прямой, вторую — обратной. Для формальных языков математической логики наиболее адекватной обычно оказывается обратная иерархизация (полезно убедиться в этом для языков примеров 3 и 4, построив для некоторых их цепочек соответствующие деревья подчинения), в то время как для естественных языков предпочтительнее прямая*). Впрочем, для последних еще удобнее может оказаться иерархизация, выбранная более сложным способом. Возникает вопрос, для всякой ли Б-грамматики можно построить эквивалентную ей К-грамматику. Мы покажем сейчас, что этот вопрос решается положительно; более того, нужная К-грамматика может быть построена так, чтобы значения ее приписывающей функции содержали только категории вида А, [А\В] и [Л\[В\С] ], где А, В, С — элементарные категории. Пусть Г = (V, W, I, R) — стандартная бинарная Б- грамматика. Построим для нее К-грамматику следующим образом: 1) Каждой упорядоченной паре (А, В), А, В е!Г, сопоставим новый символ Ав. Положим Z' — {AB\A, B^W} и Z = Z'\J{O0), где O0<£Z'. 2) Чтобы определить приписывающую функцию /, введем сначала вспомогательную функцию f, отображающую W в множество конечных подмножеств K(Z), следующим образом: а)Ф„еП/). j б) Если A->BC<=R и ВеУ, то категории СА и [А°\С°] принадлежат ? (В). в) Если В, Be? и А — категория, сопоставленная символу D по одному из пунктов а), б), то [ЙЛ\А] е f (В). г) Категория может принадлежать f'(B), В <= W, только в силу а), б), в). *) Это связано прежде всего со следующим обстоятельством. Основное структурное различие между естественными и формальнологическими языками состоит в том, что в первых имеются как предикативные, так и определительные (атрибутивные) связи, тогда как во вторых — только предикативные. Но определение естественно, с одной стороны, считать подчиненным определяемому, с другой — рассматривать как оператор, действующий на определяемое (а ие наоборот).
§6.1] КАТЕГОРИАЛЬНЫЕ ГРАММАТИКИ 191 Категории, сопоставленные символу В по пунктам а) и б), мы будем называть левыми Б-категориями, сопоставленные по пункту в)—правыми S-категориями. (Одна и та же категория может, вообще говоря, оказаться одновременно левой и правой даже для одного и того же В.) Функцию f мы определим так: f(a) — \J Г (А). A->asR Положим теперь G =(V, Z, Ф0, f). Покажем, что G эквивалентна Г. Чтобы доказать включение L(r)sL(G), достаточно установить, что для всякого дерева полного вывода Г в Г найдется такое дерево сокращения Т' в G, что ц{Т') =ц(Т). Для этого, в свою очередь, достаточно убедиться в справедливости следующего утверждения: (А) Пусть D — вывод в Г, начинающийся символом / и заканчивающийся цепочкой X в словаре W, и Т — произвольное дерево этого вывода. Тогда найдется такое дерево сокращения Г4 в G с пометкой Ф0 в корне, что ц{Т\) есть (некоторая) цепочка, сопоставленная цепочке X с помощью функции f. Утверждение (А) мы докажем индукцией по числу узлов в дереве Т. Для удобства проведения индукции будем доказывать несколько более сильное предложение. Чтобы его сформулировать, введем понятие левого и правого узлов бинарного дерева. Именно, если узлы а, р, y расположены следующим образом: • ос А • Х« 7 то мы называем узел р левым и у — правым. Кроме того, корень считается левым узлом. Добавим теперь к (А) следующее требование: если а — левый (правый) висячий узел Т, помеченный символом В, то соответствующий висячий узел Т\ должен быть помечен левой (соответственно правой) Б-катего- рией (иначе: если вхождение символа В в X отвечает левому (правому) узлу Т, то соответствующее вхождение символа в ц{Т\) должно быть вхождением левой (правой) 5-категории). Полученное таким образом предложение обозначим (А'). Докажем его.
(92 Дополнительные сведения о б-грамматиках [гл. в I. Если Т — единичное дерево, (А') очевидно. II. Пусть (А') доказано для деревьев, имеющих менее п узлов, и Т — дерево с п узлами (и > 1). Рассмотрим некоторый невисячий левый узел а дерева Т, обладающий тем свойством, что в полном а-поддереве т дерева Т все левые узлы, кроме самого а, являются висячими (так что это поддерево имеет вид, показанный на рис. 12,а)); такой узел обязательно существует*), [В?\Ц tf-'M'') 4 Л ЧС\£] в-Ъ в?/\[о,*\лг*] V Рис. 12. Положим Т' = Sub (Г, т, а). Дерево Т имеет меньше п узлов, и а — висячий левый узел Т. Если ц(Т')= X', ц(х) = Z и метка при а есть D0, то, очевидно, X и X' могут быть представлены в виде X = Y\ZY%, X' = YiD0Y2. По индуктивному предположению найдется такое дерево сокращения Т\ в грамматике G, что ц(Т[) есть цепочка, сопоставляемая цепочке X' функцией /', и при этом для каждого вхождения символа В в X соответствующее вхождение в ц (Т\) является вхождением левой или правой Б-категории в зависимости от того, какому узлу Т' отвечает данное вхождение В в X'. В частности, вхождению Do, отвечающему узлу а дерева Т, соответ- *) В самом деле, если корень р дерева Т не обладает нужным свойством, то, идя из р по правым узлам, мы непременно придем к такому узлу у (возможно, Y = Р). что подчиненный ему левый узел б не является в Т висячим. Если б не обладает нужным свойством, то, идя из б по правым узлам, мы опять-таки придем к такому узлу, что подчиненный ему левый узел не является в Т висячий, и т. д. Но этот процесс не может быть бесконечным.
§ 6.1J КАТЕГОРИАЛЬНЫЕ ГРАММАТИКИ 193 ствует вхождение в ц(Т[) левой О0*категории Д, отвечающее некоторому висячему узлу а' дерева V, причем ц(Т\) — 11\Ь.11ч, где U\ и Uz — цепочки категорий, сопоставляемые функцией f цепочкам У] и Уг соответственно. Пусть теперь Z = Л4 ... АъВ (Аи .... Ah, BeW). Вхождения А\, ..., Ah отвечают здесь левым узлам дерева т (а значит, и дерева Т'), вхождение В — правому узлу. Пусть, кроме того, D\, D2, ..., Dh-U Du = B — метки при правых узлах т, упорядоченных сверху вниз (см. рис. 12, а)). Тогда схема R содержит правила D0—*AiD\, Dx-tA^D*,, .,., Dk-i~>~AhDh. Обозначим через т' Pi-дерево, изображенное на рис. 12,6). Имеем ц (т') = D?° [D?'\D?>] ... [Z>*Di,\Z)£°] [Я^Д], так что ц{х') сокращается до Л, и при этом дерево Тх = Sub (T'u а', т') является, очевидно, деревом сокращения цепочки категорий О = С1\ц (т') Иг\ сверх того, и = ц{Т{) есть цепочка, сопоставляемая функцией f цепочке X (поскольку ц{хг) сопоставляется, как сразу видно из определения /', цепочке Z), и каждому вхождению символа В в X соответствует вхождение в U левой (правой) S-категории, если данное вхождение В в X отвечает левому (правому) узлу Т (действительно, для вхождений символов в 1)\ и U% это верно по индуктивному предположению, а для вхождений в Z ясно из построения). Итак, (А') доказано. Докажем теперь включение L(G) еЦГ). Аналогично предыдущему Для этого достаточно установить справедливость следующего предложения: (Б) Если для некоторой цепочки X е V? найдется дерево сокращения V в G с меткой Ф0 в корне такое, что ц(Т') сопоставляется цепочке X функцией /', то либо X = /, либо X выводима из / в Г. Докажем (Б) индукцией по \Х\. I. Если |Х|= 1, то Х = 1. . II. Пусть (Б) доказано для всех цепочек длины, меньшей п, \Х\ = п(п> 1), и Т — соответствующее дерево сокращения. Если узлы а, р, y дерева Т расположены так: • ос /\ 7 А. В. Гладкий
194 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 И Ф, Т, G — метки при а, р, у соответственно, то W& непосредственно сокращается до Ф; в этом сокращении W является «аргументом», a G — «оператором» (поскольку метки при узлах Т' не содержат символа /), так что 6 = рР\Ф], и W— элементарная категория («знаменатели» всех категорий, входящих в значения /', элементарны). Таким образом, все левые узлы Т' помечены элементарными категориями, а все правые — неэлементарными. Рассмотрим невисячий узел а дерева V такой, что а) а — правый узел или совпадает с корнем Т'\ б) в полном а-поддереве х' дерева V все правые узлы, отличные от а, висячие; такой узел обязательно существует (аналогично предыдущему). Пусть р4, Рг Рй — все отличные от а левые узлы т', упорядоченные сверху вниз, и а = ао, оя, ..., «ft — все остальные Рис- 13- узлы хг, упорядоченные так же (рис. 13). Обозначим через W{, Отметки при аь Pj соответственно и через В, Ah, ..., А\— те символы из V\, вхождениям которых в X соответствуют вхождения 0ft, Wh, ■■-, Ч^ в ц(Т'), отвечающие узлам Pft, as ai дерева Т (в этом порядке). Тогда X представляется в виде X = Y\BAu.. .A\Yi. Категории 4*1, ..., Wk, Gft принадлежат f'(Ai), .... f'(Ak), f(B) соответственно. По предыдущему, категории Gi, ..., Q/; элементарны, а Ч^, ..., Wk неэлементарны; категория Wo либо неэлементарна, либо равна Ф0; кроме того, 4*1 = [№<>] и ^«[вДв,-,] при i =%..., k. Заметим, что W\ — правая Л ^категория, так как «числитель» неэлементарной левой категории всегда является элементарной категорией, отличной от Ф0. Обозначим теперь через / наибольшее из чисел i, '..., k, для которого Wi есть правая Лгкатегория, и через т" — полное P;_i-поддерево Т' (если 1=1, считаем р,_1 = а). Положим Т'\ = Sub(r', %", Рг-i). «Числитель» правой категории — левая категория; поэтому найдется такое D <= W, что вг-i является левой D-категорией. Если положить Х\ = Y\DAi-\ ...A\Yi, (при 1=1 пола-
§6.1] КАТЕГОРИАЛЬНЫЕ ГРАММАТИКИ 195 гаем Х\= Y\DYz), то ц{Т\) будет цепочкой категорий, сопоставляемой цепочке Х\ функцией f. Отсюда, по индуктивному предположению, следует, что Х\ выводима из / в Г. Поэтому для завершения доказательства достаточно установить, что цепочка BAhAk-\..-Ai выводима в Г из D. Поскольку вй — элементарная S-категория, a Wk, ^fe-] ^i+\ — неэлементарные левые Ак-, Ак-Х-, ... ..., Лг+1-категории, они имеют соответственно вид CFt Ct, Fi^W. Но из равенства Wk = [@k\®k-\] получаем CF = BFk. Далее из того же равенства вместе с равенством ¥*_,=*[efc_,\efc_,] следует Cj^fifo-' и т.д. Имеем, таким образом: &к = Вк, Wk = [Bk\Bk-i], xPft-i = = [fi*-i\Sft-2l, ■ • •, Wi+i =[sf+i\Cf+i]. Отсюда, поскольку 0fe — S-категория иТ;- Лгкатегория, вытекает наличие в R правил F-^BBk, Вк->АкВк-и Вк-х-> Ак-хВк-2, ••• ..., Bi+x->Al+lCl+u что дает F Ь- ВАкАк_х ... А1+ХС1+Х. г В то же время Тг = [вДвг-i] = [cf+i\e/_i], и Wi — правая Лгкатегория, а 0г_! — левая Ь-категория; но это в силу определения правой Лгкатегории дает С1+1 = А[ и F = D. Итак, D Ь- ВАкАь-х • • • At. Доказательство закончено, г Подведем итог. Будем называть сложностью категории общее число вхождений в нее символов \ и / и сложностью К-грамматики — максимальную сложность категорий, входящих в значения ее приписывающей функции. Кроме того, назовем К-грамматику левосторонней (правосторонней), если категории, входящие в значения ее приписывающей функции, не содержат вхождений символа / (соответственно \). В последнем рассуждении мы имели дело с левосторонней грамматикой сложности, не превосходящей 2; ничто не помешало бы нам, разумеется, повторить это рассуждение для правосторонней грамматики. Суммируя, получаем следующую теорему. Теорема 6.1. а) Для всякой Y^-грамматики можно построить эквивалентную ей В-грамматику. б) Для вся- 7*
196 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 кой Б-грамматики можно построить эквивалентную ей левостороннюю (правостороннюю) К-грамматику сложности, не превосходящей 2. Следствие. Для всякой ^-грамматики можно построить эквивалетную ей левостороннюю (правостороннюю) К-грамматику сложности, не превосходящей 2. Замечания. 1. В теореме 6.1,6) нельзя заменить двойку единицей (упражнение 6.4); это невозможно и при отказе от односторонности (упражнение 6.5). 2. Назовем путь ао, аь ..., as в бинарном дереве л е- вым (правым), если узлы ai, ..., as левые (правые). Если ао, аь .... as — правый путь в дереве сокращения левосторонней К-грамматики и узел ао помечен категорией Wo, то метка при ai будет иметь вид [ЧМ^Ро], метка при аг — вид РР2 \[ Wi \Ф0Ц и т. д. Поэтому длина правого пути в дереве сокращения левосторонней К- грамматики не может превосходить сложности этой грамматики; аналогично для левых путей в деревьях сокращения правосторонних грамматик. Отсюда по теореме 6.1 получаем, переходя к канонически соответствующей Б-грамматике, что для всякой Б-грамматики Г можно построить эквивалентную ей стандартную бинарную Б-грамматику Г' такую, что длины правых (левых) путей в деревьях полных выводов в Г' не превосходят 2. § 6.2, Нормальная форма Б-грамматикн Замечание 2 к теореме 6.1 мы используем для доказательства следующей теоремы о Б-грамматиках. Теорема 6.2 (теорема о нормальной форме). Для всякой Б-грамматики можно построить эквивалентную ей Б-грамматику, все правила которой>имеют один из следующих видов: А-*а, А-*аВ, А-+аВС, где А, В, С — вспомогательные символы и а — основной символ. - Доказательство. Пусть Г° = (V°, W°,I°,R°)~ стандартная бинарная Б-грамматика. Будем сопоставлять символам из W0 (не обязательно всем) числа, которые назовем их левыми степенями, следующим образом: (i) левая степень считается равной нулю для тех А <= IP, для которых не существует правил вида А -> -*ВС (так что всякое правило с левой частью А имеет вид А тг> а, где. аеР); (и) если для каждого k = О, ...
§6.2] НОРМАЛЬНАЯ ФОРМА,Б-ГРАММАТИКИ 197 ..., п—\ определено понятие символа левой степени k, то символу /4е1° приписывается Левая степень п, если ему не приписано в качестве левой степени ни одно из чисел 0, ..., п — 1 и в каждом правиле вида А -*■ -+ВС, В, С <= W0, символ В имеет левую степень, меньшую п. Если всем символам из W0 можно приписать левые степени и наибольшая из них равна N, будем называть Г° грамматикой левой степени N. Ясно, что если Г° — приведенная грамматика, то она имеет левую степень N тогда и только тогда, когда N есть точная верхняя граница длин левых путей в деревьях полных выводов в Г°. Пусть теперь Г — произвольная Б-грамматика с основным словарем V. По замечанию 2 к теореме 6.1 можно построить эквивалентную Г стандартную бинарную Б-грамматику Г1 = {V, Wl,P,Rl) такую, что дли- •ны левых путей в деревьях полных выводов в Г1 не превосходят 2. Перейдем от Г1 к эквивалентной приведенной грамматике Г° = (V, W°, /°, R0), где W0<=Wl и R°^Rl (лемма 4.8). При этом множество деревьев полных выводов не изменится, и по предыдущему Г° будет грамматикой левой степени, не превосходящей 2. Пусть г = А-+ ВС е R0. Тогда левая степень символа В равна 0 или 1. Сопоставим правилу г всевозможные правила вида А—>ЬС, где feel/ и В—►& <= R0, а если левая степень В равна 1, — еще и всевозможные правила вида A—*b\BiC, где Ь\ и Bz удовлетворяют условию 6, е V & В2 е Г° & & (3 В, е= W0) [В -> В{В2 ^R°&Bl->b1^ R°] Если заменить в Г° каждое правило вида А —*■ ВС совокупностью сопоставленных ему новых правил, то полученная грамматика будет, очевидно, эквивалентна Г°, а следовательно, и Г. Доказательство закончено. Грамматика, удовлетворяющая требованию теоремы 6.2, называется Б-грамматикой в нормальной форме Грейбах (или просто в нормальной форме). Теорему 6.2 можно усилить следующим образом.
198 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 Т* о р е м а 6.3. Для всякой Ъ-грамматики Г и всякого целого положительного числа s можно построить Ъ-грамматику Г" = {V,W',I', R'), эквивалентную Г, все правила которой имеют один из следующих видов: А->х, А->уВ, А^уВС, где А, В, СеГ, x,y(=V+,\x\*^s,\y\ = s. Доказательство. Пусть Г = (V, W, I, R) — Б-грамматика в нормальной форме. Если Ле1Г,хеУ+, |x| = s, Xe W и цепочка хХ выводима в Г из Л, то ]X|=S^s + l. Сопоставим каждой цепочке X^W+, | X \<^s + 1, новый символ р(Х); совокупность всех таких символов обозначим W. Пусть Tf — (V, W, Р(7), R'), где R' состоит из всевозможных правил следующих видов: 1) р(^! ... Ak)->x, где l<&<s + l; | х |< s; Ах ... Ак Ь-х; 2) р(Л, ... Ak)->y$(At+l ... Ak), где 1</<й< <s+ \;\y\ — s; Ax ... At\- y\ 3) Р(Л, ... i4fc)-*w;p(Z)p(i4,+, ... ДО, где 1</< < &<s + 1; |wu| = s; ZeF+; Л, ... Лг_, h- u; A{ \-vZ; г г 4) р(Л, ... ^fe)->wup(Z), где K6<s + 1; |«u| = s; Z e W+; Ax ... Ah-X \-u\ AhY- vZ. г г Эти правила строятся по R эффективно. Легко видеть, что Г' эквивалентна Г. Теорему 6.3 мы используем для доказательства следующего утверждения о МП-машинах. Теорема 6.4. Для всякой МП-машины М можно построить эквивалентную ей 1ЛП-машину №', обладающую тем свойством, что ни в одном ее вычислении ни разу не выполняются подряд два элементарных шага на рабочей ленте (иначе говоря, между каждыми двумя «рабочими-» шагами читается хоть один входной символ). Доказательство. При построении машины М' мы можем отправляться не от МП-машины М, а от Б-грамматики Г = (У, W,I,R) и при этом имеем право считать, что Г удовлетворяет требованию теоремы 6.3 при s = 3. Входным и рабочим алфавитами М' будут V и W соответственно. Программа М будет представлять £_обрй объединение систем инструкций, сопоставляемых
§ 6.2] Нормальная форма б-грамматикй jgg правилам Г указываемым далее способом, с добавлением инструкций ^ф—*q, q^—*qo- Сопоставление правилам систем инструкций производится следующим образом: 1) правилу вида r — A->a(a^V) сопоставляется система {qa->qx{r\ Aqx{r)->q}; 2) правилу вида А->аха2{аь a2^V) сопоставляется система {qay -> q{ (r), qx (г) а2 -> q2 (r), Aq2 (г) -> q}; 3) правилу вида Л->а1а2а3(а1, а2, а3 el/) сопостав- ляется система {qax -> q{ (r), qy (г) а2 -> q2 (г), q2 (г) а3 -> q3 (r), Aq3{r)->q}; 4) правилу вида А^-аха2а3В{аь а2, а3, <= V; В ^W) сопоставляется система {qay -> q{ (r), Aq{ (r)—>q2 (r), qi(r) (h->q3(r), q3(r) ->BqA (г), q4(г) а3->q}\ 5) правилу вида А -> а^аффС(аиа2,а3 е7; В, С е?) сопоставляется система {qa{ -> q{ (r), Aqt (r) -> q2 (r), ?2 (г) а2 -> q3 (r), q3 (r) -> Cq4 (r), q4 (r) a3 -> q5 (r), q6(r) -> Bq}. Здесь qi(r) — состояния, различные при разных i и при разных г. Единственным заключительным состоянием является q0. Из самой конструкции ясно, что каждое вычисление машины М' удовлетворяет нужному условию. Эквивалентность ГиМ' доказывается без труда; мы предоставляем это читателю. [Указание. Между вычислениями Ш и упорядоченными размеченными выводами в Г устанавливается соответствие таким образом, что каждой промежуточной цепочке вывода, имеющей вид хХ, где хеУ, XeF, отвечает участвующая в вычислении ситуация, при которой прочитанная часть входной цепочки есть х, а на рабочей ленте записана цепочка X.] Замечания. 1. Теорему 6.4 нетрудно было бы усилить, потребовав, чтобы между каждыми двумя «рабочими» шагами читалось не менее s входных символов, где s — произвольное фиксированное натуральное число. 2. Машина, удовлетворяющая требованию теоремы 6.4, является Э-машиной без растяжения (§ 3.2). Таким образом, иерархии основных классов грамматик: Г=>НСгэБ:эА отвечает иерархия классов Э-машин: произвольные Э-машины гэ Э-машины без растяжения =э МП-машины без растяжения гэ конечные автоматы. Можно было бы включить в эту иерархию также и соответствующие машины для классов языков, рассмотренных в §§ 5.3 и 5.4 (упражнение 6.9).
йбО ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ 6 б-Г^АММАТИКАХ [fЛ. 6 § 6.3. Доминационные грамматики Для лингвистических приложений полезно иметь возможность задавать язык таким образом, чтобы каждой его цепочке сопоставлялось описание ее синтаксической структуры в виде дерева подчинения, подобно тому, как с помощью НС-грамматики цепочкам сопоставляются описания в виде систем составляющих. Ввиду наличия простой связи между системами составляющих и проективными деревьями подчинения (§ Ш.З) для этой цели можно использовать те же НС-грамматики, некоторым образом «иерархизуя» их, так, чтобы для каждой системы составляющих, которую «выдает» данная грамматика, автоматически указывалась некоторая иерархизация и тем самым определялось дерево подчинения. Примером могут служить упоминавшиеся в § 6.1 прямая и обратная иерархизации категориальных грамматик. Сейчас мы проведем соответствующие построения в общем виде, ограничиваясь, впрочем, случаем Б-грам- матик (о распространении на произвольные НС-грамматики см. упражнение 6.18). Будем называть доминационной грамматикой (Д-грамматикой) упорядоченную пару G = = (Г, f), где Г = (V, W, I, R) — Б-грамматика без правил вида Л-*В, A, Be W, и А~*а, A (=W-{I}, at=V (такие Б-грамматики будут в дальнейшем называться удлиняющими), и f — отображение, сопоставляющее каждому правилу r=/4->ffle^, кроме правил вида I —*■ a, aeV, некоторое непустое подмножество f(r) множества {1, ..., |м|}. ^' Если г = А -> сросгр <= R, a е V U W и | фа | <= f (r), мы будем называть вхождение ф » a * гр символа а в правую часть г отмеченным. Пусть Г — дерево полного вывода в Г и С — соответствующая система составляющих; поскольку грамматика Г удлиняющая, дерево Г, рассматриваемое как дерево без меток, изоморфно системе С. Пусть далее a — произвольный невисячий узел Г и Л->а> — правило, применяемое на шаге вывода, отвечающем узлу а. Назовем отмеченными те из подчиненных а узлов, которые соответствуют отмеченным вхождениям символов в ы.
§ 6.3] ДОМИНАЦИОННЫЕ .ГРАММАТИКИ 201 Будем называть иврархизацию С системы С допустимой (для G), если все главные (т. е. принадлежащие С) составляющие отвечают отмеченным узлам Т. По теореме Ш.2 существует единственное связанное с (С, С) (и определяемое по (С, С) эффективно) дерево подчинения D для цепочки х = ц{Т); мы скажем, что D сопоставляется цепочке х грамматикой G. Замечание. Возможен другой способ определения Д-грамматик, при котором они трактуются как частный случай удлиняющих Б-грамматик. Для этого нужно: а) ввести для каждого символа aeVDW «двойника» — новый вспомогательный символ а'; б) заменить каждое правило г ф /-vo(oeF) системой правил, отличающихся от г тем, что в правой части каждого нового правила одно вхождение символа отмечается штрихом, а также добавить правила а'—*а для всех ае VUW. Каждому дереву выводу в такой грамматике отвечает единственная иерархизованная система составляющих: главными составляющими в ней будут те, которые соответствуют узлам, помеченным штрихованными символами. Будем говорить, что Д-грамматики G\ = (Г1, fi) и бг = (Гг, /2) сильно эквивалентны, если Т\. эквивалентна Гг и при этом дерево подчинения тогда и только тогда сопоставляется цепочке грамматикой G\, когда оно сопоставляется той же цепочке грамматикой G2. Скажем, кроме того, что Б-грамматика Го и Д-грам- матика G = (Г, /) слабо эквивалентны, если Г0 эквивалентна Г, и сильно эквивалентны, если они слабо эквивалентны и при этом: а) для всякой системы составляющих С, отвечающей полному выводу какой-либо цепочки в Г, найдется дерево подчинения, сопоставляемое той же цепочке грамматикой G и согласованное с С; б) для всякого дерева подчинения Т, сопоставляемого какой-либо цепочке грамматикой G, найдется система составляющих, отвечающая некоторому полному выводу той же цепочки в Го и согласованная с Т. Будем говорить, наконец, что Б-грамматика Г вкладывается в Д-грамматику (Г, /). Мы рассмотрим теперь один специальный класс Д-грамматик, представляющий особый интерес (в частности, для приложений), .
202 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ (ГЛ. 6 Будем называть Д-грамматику простой*), если во всех ее правилах отмечены только вхождения основных символов. Если Д-грамматика (Г, /) простая, то во всех строящихся с ее помощью иерархизованных системах составляющих главными составляющими могут быть только точечные. Для случая, когда Г — приведенная грамматика, справедливо и обратное. Понятие простой Д-грамматики естественно обобщается следующим образом. Пусть Г= ({V, W, I, R), f) — Д-грамматика. Введем на множестве V U W бинарное отношение 52 следующим образом: а5?р означает, что в некотором правиле Г с левой частью а правая часть содержит отмеченное вхождение р. Если граф {V U W;&£) не содержит циклов (замкнутых путей ненулевой длины), будем называть G Д-гр ам м ат икой без циклов. Лемма 6.1. Для всякой JX-грамматики без циклов можно построить сильно эквивалентную ей простую JX-грамматику. Доказательство. Пусть h — наибольшая длина пути в графе (VU W; 5?) для данной Д-грамматики G = (r, /), где Г =(V, W, I,R). Б-грамматику Г мы можем считать приведенной. (Действительно, если Г' = = {V,W, I, R')—грамматика, соответствующая Г по лемме 4.8, и /' — функция, которую f индуцирует на R', то Д-грамматика (Г', /) сильно эквивалентна G, а ее граф (У U W; 52') является подграфом исходного графа {V0^;й).) Поэтому при h = 1 грамматика G простая. Пусть h >' 1 и утверждение доказано для всех п' <С п. Назовем рангом вспомогательного символа А наибольшую длину пути в графе {V[]W\ $.) с началом Л. Ясно, что правые части правил Г, имеющих левыми частями символы ранга 1, являются цепочками в V. Заме-' ним теперь каждое правило, содержащее в правой части вхождения символов ранга 1, правилом, получающимся из данного путем замены всех вхождений символов ранга 1 в правую часть вхождениями цепочек в V, непосредственно выводимых из этих символов. *) В литературе для простых Д-грамматик часто используется термин «грамматики зависимостей» • (англ. dependence grammars).
§ С.З] ДОМИНАЦИОННЫЕ ГРАММАТИКИ 203 Функцию f переопределим на новых правилах так, чтобы для каждого такого правила отмеченными вхождениями были, во-первых, те, которые были таковыми в старом правиле и не были заменены при переходе к новому, и, во-вторых, те, которые возникают из отмеченных вхождений символов в правые части правил вида А —>х, хё V+, при подстановке х вместо отмеченного вхождения А в правую часть старого правила. Построенная таким образом новая Д-грамматика будет, очевидно, сильно эквивалентна G, и в то же время каждый максимальный путь в графе (V U W; Ж) при переходе к новой грамматике укорачивается на единицу; остается воспользоваться индуктивным предположением. Будем далее называть Д-грамматику G = (Г, /) Д-г рамматикой ограниченной ширины, если существует такое число k, что ширина дерева подчинения, сопоставляемого грамматикой G цепочке из L(T), не может превосходить этого k. Наименьшее из таких чисел будет называться шириной грамма- т и к и G. Лемма 6.2. а) Если G = (Г, /) — JX-грамматика без циклов, Г = (V,W,f,R) и наибольшая длина пути в графе (V \JW; Ж) равна h, то G есть грамматика ограниченной ширины, и ширина ее не превосходш h-(g—1), где g— максимум длин правых частей правил Г. (В частности, ширина простой JX-грамматики не превосходит g— 1.) б) Если Г — приведенная Б-грамматика и G = = (Г, f) — JX-грамматика ограниченной ширины, то G не имеет циклов. в) Если в условиях пункта а) грамматика Г приведенная, то ширина G не меньше h. Доказательство. Назовем путь в дереве полного вывода в Г отмеченным, если все его узлы, кроме, быть может, начального, отмечены. Для дальнейшего заметим, что в произвольном дереве полного вывода из любого узла идет хотя бы один отмеченный путь в висячий узел. Пусть а0, ..., ап — отмеченный путь в дереве полного вывода, причем узел а„ висячий, и А0 Ап — соответствующая последовательность составляющих. Вспоминая указанный в доказательстве теоремы П1.2 способ построения дерева подчинения,
204 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ 1ГЛ. 6 связанного с данной иерархизованной системой составляющих, мы видим, что если при какой-то иерархиза- ции все составляющие Аи ..., Ап окажутся главными, а Л0 — не главной, то узлу соответствующего дерева подчинения, являющемуся главной точкой А0, будут подчинены все узлы, являющиеся главными точками не главных составляющих, непосредственно вложенных в А0, А\, ..., Ап-и и только они. Но число таких узлов не меньше я и не больше n-(g—1). Если G — грамматика без циклов и наибольшая длина пути в графе (V U W;0f) есть h, то длина отмеченного пути в дереве вывода не может быть больше h, и, следовательно, никакой узел дерева подчинения не может подчинять более h-(g—1) узлов. (Вспомним, что всякая точка цепочки главная для некоторой не главной составляющей.) В то же время из самого определения отношения 01 следует, что хотя бы в одном дереве вывода должен быть хотя бы один отмеченный путь длины h, идущий в висячий узел; а если грамматика Г приведенная, то любое дерево вывода можно вложить в дерево полного вывода, так что, по предыдущему, в некотором дереве подчинения, сопоставляемом какой-либо цепочке грамматикой G, найдется узел, подчиняющий не менее h узлов. Теперь нам достаточно показать, что если Г — приведенная Б-грамматика и в графе (V U W; Ж) есть циклы, то в деревьях полных выводов найдутся сколь угодно длинные отмеченные пути. Пусть символ А принадлежит какому-либо циклу указанного графа. Тогда для некоторой цепочки coe(VUW)+ найдется (А, ш) -дерево Ту в Г, в которой" из корня идет отмеченный путь в висячий узел, помеченный тем же символом А. Для « = 2, 3, ... положим Тп = = Sub(Tn-i, To, Ti), где Г0 — единичное дерево с меткой А в единственном узле. При достаточно большом п дерево Тт будет содержать сколь угодно длинный отмеченный путь из корня в висячий узел с меткой А. Поскольку грамматика Г приведенная, найдется дерево полного вывода Т, в котором некоторый узел а имеет метку А. По предыдущему в полном а-поддереве V дерева Т из корня исходит хотя бы один отмеченный путь. Полагая Т'п = Sub (Тп,Т0,Т'), видим, что в Т'п из корня идет отмеченный путь, более длинный, чем в Т„,
§ 6.3i ДОМЙНАЦИОННыВ ГРАММАТИКИ 20S уже в узел, помеченный основным символом; но ввиду приведенности Г дерево Т'п можно «достроить» до дерева полного вывода. Из лемм 6.1 и 6.2 и из того очевидного обстоятельства, что свойство ограниченности ширины сохраняется при сильной эквивалентности, немедленно вытекает Теорема 6.5. а) Для всякой JX-грамматики ограниченной ширины можно построить сильно эквивалентную ей простую ^-грамматику, б) Если для JX-грамма- тики G существует сильно эквивалентная ей простая JX-грамматика, то G имеет ограниченную ширину. Посмотрим теперь, для каких Б-грамматик существуют эквивалентные в том или ином смысле простые Д-грамматики, или, что то же самое, Д-грамматики ограниченной ширины. Ясно, прежде всего, что удлиняющая Б-грамматика тогда и только тогда вкладывается в простую Д-грамматику (и притом эффективно*)), когда правая часть каждого ее правила содержит вхождения основных символов. Поэтому из теоремы 6.2 следует, что для всякой Б-грамматики можно построить слабо эквивалентную ей простую Д-грамматику. Чтобы исследовать вопрос о сильной эквивалентности, введем следующее понятие. Пусть Г ={V, W, /, R\—Б-грамматика. Будем сопоставлять символам из V U W числа, которые назовем их степенями, следующим образом: (i) степени основных символов, и только их, равны нулю; (И) пусть для каждого k = О п — 1 определено понятие символа степени k; тогда символу А приписывается степень п, если ему не приписано в качестве степени ни одно из чисел 0, ..., п — 1 и правая часть каждого правила с левой частью А содержит хотя бы одно вхождение символа степени, не превосходящей п—1. Символы, которым с помощью такой процедуры никакая степень не приписывается, считаем имеющими бесконечную степень. Наибольшая из степеней символов полного словаря Г будет называться степенью грамматики Г. *) То есть Для Б-грамматики Г можно построить простую Д-грамматику вида (Г,/).
206 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 Ясно, что степень каждого символа, а значит, и степень грамматики можно найти эффективно. Так, грамматики со схемами {/ -»- С/, / -+ аСЬ, 1^»аЬ,С^» аСЬ,С -> аЬ), {/->С/, /-► аСЬ, I-+ аЬ, С-> АСВ, C-*ab, С -*■ aabb, А->аа, В -> ЬЪ) и {l^lhl^albj^ab} имеют соответственно степени 2, 3 и оо (хотя все они эквивалентны). Легко заметить (ср. доказательство теоремы 6.2), что если Г — приведенная удлиняющая Б-грамматика, то ее степень равна точной верхней границе степеней систем составляющих, отвечающих деревьям полных выводов в Г. Поэтому, если назвать Б-грамматики Ti и Гг сильно эквивалентными в случае, когда они эквивалентны и множества систем составляющих, отвечающих деревьям полных выводов в Г] и Гг, совпадают, то будет справедлива Лемма 6.3. Если две приведенные удлиняющие Б-грамматики сильно эквивалентны, то их степени равны. Нам понадобится также Лемма 6.4. Для всякой Б-грамматики конечной степени можно построить сильно эквивалентную ей удлиняющую Б-грамматику конечной степени. Доказательство, весьма простое, предоставляется читателю (ср. доказательство леммы 4.1 и упражнение 4.1). Связь понятия степени с Д-грамматиками видна из следующей леммы. Лемма 6.5. Приведенная удлиняющая Б-грамматика тогда и только тогда вкладывается в JX-грамматику без циклов (и притом эффективно), когда ее степень конечна. Доказательство, а) Пусть степень Б-грамматики Г конечна, А—>и> — произвольное правило Г и степень А равна п. Объявим отмеченными все вхождения в ш символов степеней, не превосходящих п—1. Ясно, что полученная так Д-грамматика не будет иметь циклов, б) Если Д-грамматика ({V, W,I,R),f) не имеет циклов и наибольшая длина пути в графе (V U W; 01)
§ 6.4] СИСТЕМЫ УРАВНЕНИЙ, В ЯЗЫКАХ 207 равна h, то степень каждого символа а е V U W не превосходит наибольшей длины ha пути в графе (V \J W; &), исходящего из узла с меткой а (доказывается очевидной индукцией по ha). Поэтому степень грамматики {V, W,I, R) не превосходит h. Из лемм 6.1, 6.3, 6.4, 6.5 непосредственно вытекает Теорема 6.6. а) Для всякой Б-грамматики конечной степени можно построить сильно эквивалентную ей простую JX-грамматику. б) Если для приведенной удлиняющей Б-грамматики Г существует сильно эквивалентная ей простая Ц-грамматика, то степень Г конечна. Замечания. 1. Сопоставляя конец доказательства леммы 6.5 с леммой 6.2 (пункты б) ив)), видим, что если G = (Г, f) — Д-грамматика ограниченной ширины, то степень Г не превосходит ширины G. Отсюда по лемме 6.3 вытекает, что если Г — приведенная удлиняющая Б-грамматика, то ширина Д-грамматики, сильно эквивалентной Г, не может быть меньше степени Г. 2. Характеристикой Д-грамматики, в известном смысле двойственной ширине, является ее высота — максимум высот соответствующих деревьев подчинения. Если такой максимум существует, естественно сказать, что Д-грамматика имеет ограниченную высоту. О возможности построения сильно или слабо эквивалентной Д-грамматики ограниченной высоты для данной Б-грамматики см. упражнение 7.7. § 6.4. Системы уравнений в языках. Формальные степенные ряды Сейчас мы покажем, что ОБ-грамматики можно интерпретировать как своеобразные системы уравнений, в которых коэффициентами и неизвестными являются языки. Такой интерпретацией, вернее, подсказываемым ею способом записи, особенно охотно пользуются специалисты по языкам программирования. Фиксируем словарь V = {ait..., as} и конечный набор переменных S = {|ь ..., |„}. Рассмотрим п многочленов от этих переменных, или, как мы будем здесь говорить, неизвестных, с коэффициентами, представляющими собой непустые конечные языки в словаре V: Л(|ь .... In) Mil !")• (Не требуется,
208 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 чтобы каждый многочлен деиетвительно содержал все неизвестные или даже чтобы каждая из них присутствовала хотя бы в одном многочлене.) Для каждого из многочленов f\, ..., fn существует тождественно равный ему многочлен, коэффициенты которого являются цепочками (точнее, одноэлементными языками) в V; мы будем считать, что коэффициенты всех ft с самого начала таковы. Рассмотрим теперь систему уравнений и (lb • • ч £«) —li> (*) 1 In vSl> •••» S/i/ fe/t- Такую систему мы будем называть нормальной. Ее решением естественно назвать всякую упорядоченную «-ку (L\, ..., Ln) языков в словаре V, подстановка которой вместо (|i, ..., In) обращает каждое уравнение системы в тождество, т. е. такую, что fj(Li Ln) = = Lj для каждого / = 1, ..., п. Покажем прежде всего, что система (*) имеет по меньшей мере одно решение, которое можно найти «методом последовательных приближений». Именно: определим последовательность я-ок языков 3?i0), i?(1) где #(() —(//Д .... if), следующим образом: (I) ^(0) = (0 0УЛП)2?и+,)~(Ш\ -.., U") f№\ ... .... Ц°)). Поскольку всякий многочлен является неубывающей функцией *), из очевидных соотношений L|0) s Li'*, ... ..... Lf^Lf вытекает L^^L? Z,'1'£ L<f и т. д.; иначе говоря, для каждого/=1, ..., п последовательность Lj, ..., Lj , ... является неубывающей. Положим теперь Lj=L\ \)L(j (J ... (/=1, ..., п). Тогда, с одной стороны, имеем /.'/^Г/ для всех /=1, ..., п; / = 0, 1, ..., *) Функция g(Xu ..., Xk), аргументы и значения которой суть множества, называется неубывающей, если из Xxs Xlt... >.., X/t^Xk следуетg(Xlt ..., Xk)^g(x[, ..., x'^. Это свойство очевидным образом имеет место для объединения и произведения а значит, и для любого многочлена.
§6.4] СИСТЕМЫ УРАВНЕНИИ В ЯЗЫКАХ 209 откуда Li= (JbW'» •••• L{n)£f,(Lu .... ln); с дру- '=0 гой стороны, если z e //(1(, ..., L„), то найдутся такие цепочки x,el, xne=.Ln, что г <=/,(*,, ..., х„); но отсюда, обозначая через /0 наименьшее /, для которого, х, еLJ0, ..., xn<=Ln\ получаем ze/y(L['o)f ... •••« 4'o))e^'0+,)si/- Итак> £/=//£».... i«). Нетрудно видеть, далее, что если (L^ ..., L„) — произвольное решение системы (*), то I, s Lj L„ = L„; действительно, тривиальным образом L(i0)eL[, ... .... LfsLu отсюда Li" = f, Of, ..., L<0,)s /,(£.. ... • • •. £«)— Lu ..., L„ = f„ \L\ Ln)^fn(Li, ... ..., L„) = L„ и т. д., откуда и получаются нужные соотношения. Это дает основание назвать решение (Z1( ... ... ,Ln) системы (*) наименьшим. О существовании других решений см. упражнение 6.19. В дальнейшем нам удобно будет считать, что в многочленах «раскрыты все скобки», т. е. что каждый из них представлен в виде объединения выражений вида ХоЦх, ...xr-ilkrxr, где s = 0, 1, ...; х0, ..., xreF* (см. стр. 25), которые мы будем называть членами /,-. Члены, не содержащие неизвестных, называются свободными. Требуемое представление многочлена, очевидно, единственно с точностью до перестановки членов. Сопоставим теперь системе (*) ОБ-грамматику Г =(V,S,luR), где R состоит из всевозможных правил вида £,•-*■ ю таких, что /=1, ..., п и со — член многочлена fj. Обозначим через Lj(T) множество всевозможных цепочек в словаре V, выводимых в Г из £,-. Ясно, что для каждого / = 1, ..., п язык Z,/1 есть не что иное, как множество свободных членов fj, а последнее совпадает с множеством правых частей заключительных правил Г, имеющих левой частью |;-, т. е. цепочек в V, выводимых в Г из |j за один шаг,—иначе говоря, с помощью деревьев вывода высоты 1.
210 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 Покажем, что для любого / = 0, 1, ... язык L]i] есть множество цепочек в V, выводимых в Г из gj с помощью деревьев вывода высоты, не превосходящей z'-f 1. Действительно, пусть утверждение доказано для всех t = 0, .... to и всех /= 1, ..., п. Но Z,('o+I) = = fj(L[i<>\ ..., L%°)) — это множество эсех тех цепочек, которые получаются из членов fjt если подставлять в них вместо |i цепочки из L\°', вместо \% — цепочки из Ь^°) и т. д. (причем разные вхождения одного и того же \у — даже в один член — могут замещаться разными цепочками). Будем теперь в произвольные деревья высоты 1, имеющие вид /< (Xf • • • • • OCt где а, ... щ — член /;-, подставлять вместо каждого вхождения каждого %}>, /'= 1 п, какое-либо (£/», z)- дерево грамматики Г, имеющее высоту, меньшую или равную г0, и такое, что zeF'. Полученное множество деревьев обозначим Mi /. По предыдущему множество {Пркц(Т) \Т <= MiQj} есть как раз LJ'°+I>. Однако Mlaj— это множество (|/, х)-деревьев в Г высоты, не превосходящей t0 -f- 1, таких, что х е V*. Итак, наше утверждение доказано. -ч Из установленного в предыдущем абзаце факта немедленно вытекает, что Lj (Г) = 1 j для любого/—1, ..., п. Упомянем еще об одном способе представления наименьшего решения нормальной системы уравнений — с помощью так называемых формальных степенных рядов. Фиксируем некоторый пересчет цепочек в алфавите V: Xq, хи ■.., хп в котором более короткие цепочки предшествуют более длинным, так что, в частности, х0 = Л. Фиксируем также некоторую функцию f{n), определенную на натуральном ряду и принимающую в качестве значений натуральные числа. Выраже- оо ние 2/(я)х„, или, иначе, f(0)x0 + f(l)x,+ ... +f(n)xn+ ...
§6.4] СИСТЕМЫ УРАВНЕНИЙ В ЯЗЫКАХ 211 будем называть некоммутативным формальным степенным рядом (или для краткости просто формальным рядом) в алфавите V. Множество {Xi | / (0 > 0} назовем опорным множеством данного формального ряда. Многочлен без переменных, коэффициентами которого служат цепочки в V, можно рассматривать как частный случай формального ряда, если заменить в нем знак U знаком +, расположить члены соответствующим образом и «привести подобные». Для заданной конечной последовательности натуральных члсел р = (п0, п\, ..., nN) будем обозначать через Rp множество всех формальных рядов в алфавите V, у которых коэффициенты при х0, хи ..., xN равны п0, ti\, ..., nN соответственно. (В частности, последовательность р может быть пустой — тогда Rp есть множество всех формальных рядов в V.) Если считать окрестностями ряда г множества RPo, RPi, ..., RPN, ..., где pN — последовательность первых jV + 1 коэффициентов г, то множество всех формальных рядов в словаре V становится топологическим пространством. Сходимость в этом пространстве означает, очевидно, следующее: последовательность рядов Г\, ..., rs, ... сходится к ряду г, если для каждого N = 0, 1, ... найдется такое S = 1, 2, .... что для любого s = S, 5+1, ... имеют место равенства: fs(0) = f(0), fs(l) = /(1), ..., fs(N) = = /(jV), где fs(n) и f(n) означают коэффициенты при хп в рядах rs и г соответственно. Легко убедиться, что если последовательность рядов /"ь ..., rs, ... сходится к ряду г, то опорное множество г является пределом последовательности опорных множеств ги ..., rs, ...*). Вернемся теперь к системе уравнений (*), наложив на нее некоторые ограничения, а именно: (1) левые части уравнений не должны содержать членов вида £,у, (2) ни один из многочленов f,- не должен содержать *) Множество М называется верхним (нижним) пределом последовательности множеств, если М есть множество всех элементов, принадлежащих бесконечному числу членов последовательности (соответственно всем членам последовательности, кроме, быть может, конечного их числа). Если верхний предел совпадает с нижним, он называется п р е д е л о м последовательности.
212 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О 6-ГРАММАТЙКАХ [ГЛ. 6 переменной |г, (3) при / ф 1 в fj не должно быть пустого члена. Если перейти к грамматике, отвечающей системе (*), то порождаемый такой грамматикой язык и при сформулированных сейчас ограничениях может быть произвольным ОБ-языком (следствие из теоремы 4.3, лемма 4.1). Определим для каждого /== 1, ..., п последовательность формальных рядов (являющихся многочленами) gf\ g{l1) g(p, ... следующим образом: (I) g<°> есть сумма свободных членов многочлена /у, (II) gi'+1) полуг чается из ff подстановкой g\'\ ..., g<£> вместо |,, ..., |п соответственно с последующим формальным раскрытием скобок и приведением подобных. Непосредственно ясно, что для любых /, / (/==0, 1,..,; /=1 п) опорное множество ряда gip есть Lp. В то же время из наложенных на систему (*) ограничений (1) — (3) следует, что каковы бы ни были г' = 0, 1,... и /=1, ..., п, коэффициенты при цепочках длины, не большей /, во всех рядах gp, ^+1), g^+2), ... совпадают. Действительно, цепочки длины, не большей единицы, в любом многочлене gp — это в точности свободные члены // длины 1; если утверждение справедливо для некоторого г0, то для /0 -f- 1 оно вытекает из того очевидного факта, что каждая цепочка длины l0 -f- 1 в многочлене g(/+1) при любых / и / либо является свободным членом //, либо получается из некоторого члена // при подстановке вместо переменных каких-либо членов gp, ...., gW, являющихся цепочками длины, не большей /0, а такие члены у всех многочленов gp\ gp+i), gp+2), ... по индуктивному предположению оди< наковы. Таким образом, если обозначить через /-/ (/= 1, ..., п) формальный ряд, в котором коэффициенты при каждой цепочке длины i (i = 0, l, ...) такие же, как в gp, то к этому ряду будет сходиться последовательность gp, gp,... Однако опорное множество ряда^'." есть £(Д а предел неубывающей последовательности множеств*) равен объединению всех членов последова- *) То есть такой, в которой каждый предыдущий член содержится в следующем.
§ 6.5] КАНОНИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ Б-ЯЗЫКА 213 тельности. Поэтому опорное множество ряда Г/ есть L/. Что же касается коэффициента при (произвольной) цепочке хп в ряде rt, то он, как легко понять, равен числу fa, х„)-деревьев в соответствующей ОБ-грамма- тике, т. е. числу существенно различных способов вывода в этой грамматике цепочки хп из символа |/. В част^ ности, для однозначной грамматики коэффициенты ряда гх принимают только значения 0 и 1. § 6.5. Каноническое представление Б-языка Цель настоящего параграфа — доказать теорему, которая дает любопытное представление Б-языка, называемое иногда каноническим. Предварительно введем некоторые определения. Пусть V — произвольный словарь, V> и V&— подмножества V и Р — подмножество V2. Обозначим через L'(V, VV, V&-, Р) множество тех цепочек в V, которые начинаются символами из V>, кончаются символами из W и содержат только такие подцепочки длины 2, которые принадлежат Р,—иначе говоря, U (V, VV> V&-, Р)= ^ffV'nVygrtW'-V'iVt-PW). Ввиду теоремы 5.4 L'(V, V&, VV> P) является А-языком; мы будем называть такой А-язык стандартным. Сопоставим далее каждому символу аёУ «двойника»— новый символ афУ — и определим два языка D(V) и D'(V), которые будем называть соответственно языком Дика и скобочным языком, следующим образом: (i) пустая цепочка принадлежит обоим языкам; (Н) если цепочки ху и х'у' принадлежат D(V) и D'(V) соответственно, то для произвольного aei/ цепочки хаау и хаау принадлежат D(V), а цепочка х'аау' принадлежит D'(V); (iii) никакая цепочка не может принадлежать D(V) или D'(V) иначе, как в силу (i) или (И). Очевидно, язык Дика есть не что иное, как множество слов, равных единице в свободной группе с системой образующих V (если считать ana взаимно обратными); скобочный язык, если интерпретировать а и а соответственно как левую и правую скобки с меткой а, будет представлять собой множество всевозможных «правильных последовательностей» скобок с метками из V.
214 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ {ГЛ. 6 Теперь мы можем сформулировать теорему. Теорема 6.7. Для всякой Ъ-грамматики Г с основным словарем V можно построить такой словарь Z=>V и такой стандартный А-язык U в словаре, содержащем Z, что L(T) является проекцией пересечения U f)D(Z) на V и при этом U Л D(Z) = V Л D'(Z). Доказательство. Для упрощения конструкции будем считать, на что мы имеем право, что Г = = {V, W,I,R) есть стандартная бинарная Б-грамматика. Сверх того, допустим, что если для какого-либо символа В е W имеется правило вида А-+ВС, то не может существовать правила вида E-+FB; требуемое для выполнения этого условия преобразование грамматики читатель проведет без труда. Символ В е W будем называть «левым», соответственно «правым», если имеются правила вида А—>ВС, соответственно А—>СВ. Занумеруем как-либо правила Г. Рассмотрим произвольную цепочку j;et(F) и произвольную систему составляющих этой цепочки, отвечающую некоторому ее дереву вывода. Расставим в х скобки, отвечающие всем составляющим данной системы (включая тривиальные). Каждую скобку пометим тройкой (A,i,j), где А — метка в узле, от которого «происходит» соответствующая составляющая, / — номер правила, применяемого в данном узле, и i — номер правила, применяемого в узле, подчиняющем данный; у скобок, ограничивающих полную составляющую, значение i может быть произвольным, но непременно одинаковым для обеих скобок. Левую и правую скобки с метками A, i, j будем писать в виде [A,i,j] и [A,i,j] соответственно. Далее вставим непосредственно справа от каждого вхождения символа а в цепочку х (левее ближайшей скобки) новый символ а — «двойника» а. Полученную цепочку символов и скобок обозначим через х, а множество всех таких цепочек (для всех х<= L(T)) — через %■ Имеем, очевидно, х = Пру х, так что L (Г) = Upv L. Пусть, например, Г содержит правила: (1) I-* АВ, (2) Л->а, (3) В->Ь; тогда одна из возможных Цепочек ab будет иметь вид [/, 3, 1][Л, 1, 2]аа[А, 1, 2] [5, 1, 3] ЬЪ [В, 1,3] [/, 3, 1].
§ 6.5J КАНОНИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ Б-ЯЗЫКА' 215 Положим теперь Z = V\jV, V = V[)V\JV'{jV', где V — множество «двойников» основных символов, а V и V — соответственно множества (типов) левых и правых скобок, помеченных тройками, как описано выше. Определим стандартный А-язык L' = L'(V, V&, V&-, Р) следующим образом: а) Множества VV и V&■ будут со стоять из всевозможных скобок вида [/, i, j] и [/, i, j] (с произвольными i, j) соответственно, б) Множество Р будет состоять из цепочек, сопоставляемых правилам Г следующим образом: 61) каждому правилу с номером /о, имеющему вид А—*-ВС, сопоставляются всевозможные цепочки [A, i, /0] [В, /о, k], [В, /0, k] [С, /0) /], [С, /0, /] [A, i, /0], где i, k, I пробегают соответственно номера всех правил, номера всех правил с левой частью В и номера всех правил с левой частью С; 62) каждому правилу с номером /о, имеющему вид А —► а, сопоставляется цепоч- ка аа и всевозможные цепочки [A,i,jo]a, a[A,i,jo], где i пробегает номера всех правил. Покажем, что язык Z/ не пересекается с множеством D(Z) — D'(Z). Действительно, пусть ю es Z/Л [D (Z) — — D'(Z)]. Поскольку цепочка ш принадлежит D(Z), ее можно сократить до пустой цепочки, последовательно вычеркивая пары вида аа или аа, где а eZ. В то же время a<£D'(Z); поэтому при сокращении хотя бы один раз должна быть вычеркнута пара вида аа, иначе говоря, и» должна содержать подцепочку вида а|а, где | сокращается до пустой цепочки. Цепочку | можно выбрать так, чтобы при ее сокращении никакая пара вида РР не вычеркивалась. [Если | этим свойством не обладает, то она содержит подцепочку P|iP, где |i сокращается до пустой цепочки; если gi еще не обладает нужным свойством, то она содержит подцепочку такого же вида, и т. д.] Пусть цепочка | такова; она не может быть пустой, поскольку из самого определения языка Z/ ясно, что его цепочки подцепочек вида аа не содержат. Следовательно, % имеет вид $цу, где р, у е Z. Поскольку ненадчеркнутыи символ р стоит непосредственно справа от надчеркнутого символа а, должно быть а = [В, /, k], р = [С, /, /], причем в Г найдется правило
216 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 вида А —*■ ВС (действительно, по определению языка U всякая подцепочка всякой его цепочки, имеющая вид ар, именно такова), так что С — правый символ, а В— левый. Однако совершенно аналогичным образом из того, что а стоит непосредственно справа от у, получается, что символ В правый. Имеем противоречие. Таким образом, L'f] [D(Z)— D'(Z)] = 0, т. e.L'[)D(Z) = = L'f]D'(Z). Следовательно, нам достаточно теперь доказать, что L = L'f]D'(Z). Однако из способа построения цепочек х непосредственно ясно, что каждая такая цепочка принадлежит как Z/, так и D (Z). Остается показать, что любая цепочка ср е Z/Г) £)'(Z) принадлежит L. Для этого мы воспользуемся индукцией по длине ф, причем для удобства проведения индукции будем доказывать несколько более общий факт. Сопоставим каждому символу А е W стандартный А-язык La, отличающийся от U только тем, что V& и V&- будут состоять теперь из всевозможных скобок вида [A,i,j] и [A,i,j] соответственно. Обозначим через LA(F) множество всех цепочек в V, выводимых в Г из Л; для каждой цепочки x^LA(T) построим х так же, как это делалось для цепочек из L(T), и множество всех таких х обозначим LA. Покажем теперь, что для любого A^W всякая цепочка сре/.лЛ^ (Z) принадлежит LA. Тем самым доказательство будет завершено. Заметим прежде всего, что если гр— произвольная подцепочка какой-либо цепочки из La Л D (Z), сокращающаяся до пустой цепочки, то либо ip = a|a, либо ■ф = PtjPy^Y» гДе выделенные вхождения символов а и а, р и р, у иу соответствуют друг другу (иначе говоря, сокращаются друг с другом). Действительно, в противном случае мы имели бы ip = at,a&T)fiyt,yQ; но по определению языка L'a в его цепочке лишь тогда может содержаться подцепочка вида бе, когда 6 = [B,j,k], в = = [С, /, /], где символ В левый, а С правый. Поэтому получаем р = [D, т, п] и символ D оказывается одновременно левым и правым, что невозможно. Пусть теперь ср е L'a Л D' (Z). Если | ср | = 4 (наименьшая возможная длина цепочки из La), to фе/,д озна-
§ 6.51 КАНОНИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ В-ЯЗЫКА 217 чает ф = [A, i, j] aa [A, i, j], причем в Г должно быть правило А->а с номером /; но тогда ф = а, так что Ф е LA. Пусть утверждение доказано для всех цепочек длины, меньшей п (п > 4), и фе/,лЦО'(2), причем |ф| = и. Тогда ф = а'фа/, где а = [Л, i, j], a' = [A, i', /']. Нетрудно заметить прежде всего, что выделенные вхождения скобок а и а' соответствуют друг другу, так что а = а'. Действительно, в противном случае, по сделанному выше замечанию, скобка, соответствующая а, стояла бы непосредственно слева от скобки, соответствующей а', т. е. ф содержала бы подцепочку [A, i, j][A, V, /']; но тогда А должен был бы быть одновременно левым и правым символом. Далее можно усмотреть, что правило с номером / должно иметь вид А-*-ВС, а цепочка i|> должна начинаться символом вида [В, j, k] и кончаться символом вида [С, /, /]. В самом деле, в силу определения L'a в противном случае могло бы быть только i|) = aty'a, причем i|> ф Л, поскольку | ф | > 4. Однако тогда выделенные вхождения а и а должны бы были соответствовать друг другу, иначе в i|) нашлась бы подцепочка аа, чего в цепочке из L'a быть не может, а значит, i|/ сокращалась бы до Л. Однако из определения U ясно, что "§' начинается вхождением а, а значит, при сокращении if> это вхождение сократилось бы с каким-то вхождением а, стоящим правее, что невозможно. Итак, i|> = [fi, /, k]%[C, j, I]. При этом В — левый символ, а С — правый, так что во всяком случае ВфС, и, значит, скобки [В, /, k] и [С, j, l] не могут быть соответствующими. Следовательно, x = Xi [В, /, k] [С, /, 1]х2, где х, и & сокращаются до пустой цепочки. Но это означает, что цепочки IB, /, &]Xi[5. /, k] и [С, ], 1]%2[С, /, /] принадлежат соответственно L'b[\D'(W) и L'c П D' (W); следовательно, по индуктивному предположению они принадлежат LB и Lc соответственно. А отсюда — и из наличия в Г правила А -> ВС — следует, что цепочка ф = =ЧЛ /, /][я, j, й]х,[вГ7Гй] [С, j, 1ШС, и 1][~аТТГп принадлежит LA.
218 Допшшотёльныё сйеДенИя о fe-rPAMMAfHKAx [гл. 6 Упражнения 6.1. Построить К-грамматики, определяющие: а) язык [хх\х<= {ai a„}+}; б) язык {апЬп\п = 1, 2, ...)*; в) множество ппф логики высказываний в бесскобочной записи; г) язык Дика. 6.2. а) Показать, что для всякой К-грамматики можно построить эквивалентную ей К-грамматику с единственной элементарной категорией [Г. М. Ильин, не опубликовано]. б) Оценить происходящее при этом увеличение сложности грамматики. 6.3. Оценить увеличение мощности словаря категорий при построении по данной К-грамматике эквивалентной ей односторонней К-грамматики сложности, не превосходящей 2 (следствие из теоремы 6.1Y. 6.4. Показать, что класс языков, определяемых левосторонними (или правосторонними) К-грамматиками сложности, не превосходящей 1, «эффективно совпадает» склассом А-языков. 6.5. Показать, что класс языков, определяемых произвольными К-грамматиками сложности, не превосходящей 1, «эффективно совпадает» с классом линейных Б-языков. 6.6. Назовем К-грамматику С категориально однозначной, если каждой цепочке языка L(G) оиа сопоставляет единственную цепочку категорий, и синтаксически однозначной, если всякая цепочка ее категорий, сокращающаяся до ее главной категории, имеет единственное дерево сокращения. а) Проверить, являются ли грамматики примеров 1, 2, 3 из § 6.1 категориально и синтаксически однозначными. б) Пусть U — множество ппф логики высказываний в варианте, рассмотренном в примере 3 из § 6.1, но со стертыми скобками. Построить категориально однозначную, но синтаксически неоднозначную К-грамматику, определяющую^', таким образом, чтобы для каждой цепочки из V имелось взаимно однозначное соответствие мгжду ее деревьями сокращения и расстановками скобок, превращающими ее в ппф. в) Показать, что. всякая односторонняя К-грамматика, обладающая тем свойством, что «знаменатели» всех категорий, являющихся частями элементов значений ее приписывающей функции, элементарны, синтаксически однозначна. [Заметим, что грамматика, построенная при доказательстве теоремы 6.1, обладает указанным свойством.] г) Можно ли распространить результат предыдущего пункта на произвольные односторонние К-грамматики? д) Построить синтаксически однозначные К-грамматики для языков примеров 1—3 из § 4.4. Показать, что ни один из этих языков не может быть определен категориально однозначной К-грамма- тикой. 6.7. Вывести теорему 6.1 из теоремы 6.2. 6.8. Показать, что линейный язык {атЬп \ т, п = 1, 2, .. .• т sg п] не допускается никакой однодорожечной МП-машиной, удовлетворяющей требованию теоремы 6.4.
УПРАЖНЕНИЯ * 219 6.9. Показать, что для всякой МП-машины, принадлежащей одному из перечисленных ниже классов, можно построить эквивалентную ей МП-машину без растяжения, принадлежащую тому же классу: а) класс однодорожечных МП-машин; б) класс чисто стирающих МП-машин; в) класс МП-машин с ограниченным числом поворотов. 6.10. Назовем дерево подчинения для правильно построенной формулы узкого исчисления предикатов в бесскобочной записи «естественным», если оно построено, как в следующем примере: Построить для множества формул указанного вида Д-грамма- тику, сопоставляющую каждой из них естественное дерево подчинения (и только его). 6.11. Показать, что Д-грамматика, получаемая из К-грамматики О при обратной иерархизации, имеет ограниченную ширину, а при прямой иерархизации, если язык L(G) бесконечен, — неограниченную. 6.12. Показать, что Д-грамматика, получаемая из К-грамматики сложности 1 при прямой иерархизации, имеет высоту 1, а при обратной иерархизации — ширину I. 6.13. Показать, что длины путей без ветвления *) в деревьях подчинения, сопоставляемых цепочками К-грамматикой С при прямой иерархизации, не превосходят сложности С [Е. И. Подольская, не опубликовано]. 6.14. Назовем Д-грамматику С = (Г, f) однозначной, если никакой цепочке она не сопоставляет более одного дерева подчинения. Соответствующую функцию } будем называть «строгой», если все ее значения — одноэлементные множества. Исследовать взаимоотношение между однозначностью С и строгостью /. 6.15. Построить однозначные Д-грамматики (упражнение 6.14) для языков примеров 1—3 из § 4.4. 6.16. Показать, что всякая приведенная удлиняющая Б-ОАЕВ- грамматика (§ 5.4) имеет конечную степень. 6.17. Показать, что любая приведенная удлиняющая Б-грамма- тика, порождающая язык {а"Ьп\п= 1, 2, ...}, имеет конечную степень. 6.18. Пусть Г — НС-грамматика без правил вида фЛф-хрбф, Л, В е W, и фЛф -»- фоф, А <= W — {/}, aeV. [Такие грамматики порождают не все НС-языки (см. теорему 3.7), но и не только Б-язы- ки (достаточно слегка видоизменить пример 1 из § 3.4).] а) Обобщить определение Д-грамматики на случай, когда ее первая компонента — НС-грамматика указанного вида. *) Путь ось ..., a(+i называется путем без ветвления, если узлам «j ж подчинены только Oj, ..., a<+i соответственно,
220 ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О Б-ГРАММАТИКАХ [ГЛ. 6 б) Показать, что при таком обобщении сохраняет силу пункт а) леммы 6.2. 6.19. а) Показать, что решение нормальной системы уравнений единственно, если ни один из членов левых частей не равен одной из переменных gi или произведению нескольких переменных. б) Указать примеры, из которых следует, что при нарушении одного из условий пункта а) утверждение этого пункта теряет силу. 6.20. В пространстве формальных рядов в данном-алфавите определить расстояние таким образом, чтобы это пространство стало метрическим. 6.21. Показать, что пространство формальных рядов в данном алфавите является полным (т. е. в нем имеет место критерий Коши). 6.22. Определим сложение, умножение и адамарово умножение формальных рядов (обозначения: +, X и ® соответ- оо оо ственио) следующим образом: если г = 2 f (п) хп> s = 2 8 (п)Хп' rt=0 rt=0 оо оо то г + s = 2 (/ (") + 8 (")) хп> rXs = 2 А (") хп> где h (га) — сумма всевозможных произведений f (i) g (j) таких, что x-tx, = x , rig)s = оо = 2 f (n) £ (") *"■• Показать, что опорные множества рядов г + s, rXs и ngis равны соответственно объединению, произведению и пересечению опорных множеств г и s. 6.23. Показать, что дополнение к языку Дика D (V) можно представить в виде S (//; аи ..., ап, аи ..., йп\ аф (V), ..., anD (V), аф (V) anD (V)), где {ai ап)= V и U — стандартный Л-язык в словаре {ai ап, ait .... ап). Аналогично для скобочного языка. 6.24. Построить детерминированные МП-машины, допускающие языки D(V). CD(V), D'(V) и CD'(V) соответственно. 6.25. а) Показать, что теорема 6.7 останется справедливой, если взять в качестве Г линейную Б-грамматику и заменить D (Z) и D' (Z) языками Dx (Z) и Dx (Z) соответственно, где Dt (Z) и D\ (Z) определяются следующим образом: (i) Aefl, (Z), AeD|(Z); (ii) если xsD^Z), x <= D{ (Z) и eel/, то аха, йхае D{(Z), еде Де/),(£); (iii) никакая цепочка не может принадлежать Dx (Z) или D, (Z) иначе, как в силу (i) или (ii). б) Сформулировать и доказать аналогичные утверждения для металинейных Б-грамматик, итерационно-линейных Б-грамматик и .Б-ОАЕВ-грамматик. 6.26. Показать, что если в теореме 6.7 вместо стандартности •языка U потребовать выполнения более слабого условия — £-опредеь ленности для некоторого k, зависящего от Т (см. упражнение 5.7), .то словарь Z и язык D(Z) можно выбрать одни и те же для всех Б-грамматик с данным основным словарем.
ГЛАВА 7 СЛОЖНОСТЬ ВЫВОДА В БЕСКОНТЕКСТНЫХ ГРАММАТИКАХ Для классификации Б-грамматик по сложности вывода «разрешающая способность» «главных» сигнализирующих операторов — временной сложности и емкости — оказывается недостаточной. Действительно, для всякой Б-грамматики Г функция Гг(«) мажорируется линейной функцией (упражнение 4.1,6)) и сверх того для любой Б-грамматики Г можно построить эквивалентную Б-грамматику Г' такую, что Тг-(п) < сп, где с — произвольное наперед заданное положительное число (это тривиальным образом вытекает из теоремы 6.3); но временная сложность грамматики, порождающей бесконечный язык, не может быть по порядку меньше линейной функции (неравенства (1) и (2) на стр. 59). Что же,касается емкости, то она, как мы знаем, не позволяет классифицировать даже неукорачивающие грамматики. Зато квазисигнализирующие операторы «низших» типов — левая и правая глубина, разброс, активная емкость, для которых соответствующие относительные операторы в классе Б-грамматик являются сигнализирующими, — дают в рассматриваемом случае весьма интересную картину. К ее описанию мы и перейдем. § 7.1. Глубина и разброс Левая глубина. Следующая теорема устанавливает связь между левой глубиной Б-грамматики и степенями левого ветвления отвечающих ей систем составляющих.
222 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ [ГЛ. 7 Теорема 7.1 (ср. упражнение 3.5). Для всякой Б- грамматики Г = (V, W, I, R) <V?(rt)<Y{J(n)+l<<y£(n) + di где d — максимум длин цепочек xeV*, для которых существуют правила вида A -*xQ^R, причем 9 =й= Л. В частности, для стандартной бинарной Ъ-грамматики ^(e) = Y?(«)+l. Имеет место даже более сильное утверждение: ^(Г,^)<УЛ(Г, х) + 1<фл'(Г, х) + d (смысл символов гул и ул ясен из систем обозначений, использовавшихся на стр. 55 и 83). Назовем левой глубиной цепочки ха, где хе V* и toe W(VUW)*U{A}, число |ю|. Левой глубиной вывода будем называть наибольшую из левых глубин входящих в него цепочек. Легко видеть, что среди всех выводов в Б-грамматике, отвечающих одному и тому же дереву вывода, наименьшую левую глубину имеет упорядочиваемый вывод (всегда существующий и единственный— см. стр. 119). Поэтому' нужное утверждение непосредственно получается из следующей леммы. Лемма 7.1. Пусть (в обозначениях теоремы 7.1) А е= W, х е= V+ и Т есть (А, х)-дерево. Тогда г/л<ул(Г)+1<г/л + а!, где ул (Г)— степень левого ветвления индуцируемой деревом Т системы составляющих для х и у — левая глубина соответствующего Т упорядочиваемого вывода. Доказательство. Если высота Т равна единице, неравенства очевидны. Пусть они доказаны для всех (В, г)-деревьев высоты, меньшей п (B^W, геУ+), высота Т равна п и а0)> ... ^>aft_, — все узлы Г, подчиненные корню. Для- каждого узла alt помеченного вспомогательным символом, обозначим через ул степень левого ветвления системы составляющих, индуцируемой на соответствующей подцепочке х полным (^-поддеревом Т (само это поддерево обозначим Tt), и через yf — левую глубину отвечающего этому поддереву упорядочиваемого вывода. По индуктивному предположению yf ^ ул + 1 ^ yf -f- d. Положим, кроме того, ул = О,
§ 7.1] ГЛУБИНА Й РАЗБРОС ' 223 если щ помечен основным символом. Имеем, очевидно, г/л = max (г -f- yf), ул(Г) = тах(г+ yf), причем в первом случае максимум берется по тем i, для которых а* помечены вспомогательными символами, а во втором — по всем г' = 0, ..., k — l. Обозначим через ул' максимум чисел i -f- ул по тем i, для которых щ помечены вспомогательными символами, и'через ул"—максимум тех же чисел по остальным i (если они есть). Тогда ул ^ ул' -f- + 1<ул+ 1. С другой стороны, ул'<г/л(Г) + d — 1; что же касается числа ул", то оно, очевидно, меньше ул', если узел aft_, помечен вспомогательным символом, и равно k — 1 в противном случае. Но если i0 — наибольшее i, для которого щ помечен вспомогательным символом, то k— \~iQ<^d и (о^Ул—1, так что {k — 1) -f- l =k < ул -f- d. Этим доказательство заканчивается. Связь между левой глубиной и степенью левого ветвления была впервые замечена В. Ингве [Yngve I960]; именно эта связь была выдвинута им в качестве основного аргумента для обоснования гипотезы об ограниченности степеней левого ветвления в естественных языках (стр. 290). Дело в том, что если моделировать процесс произнесения («порождения») предложения человеком с помощью вывода в Б-грамматике, то для каждой промежуточной цепочки вывода ее отрезок вправо от самого левого вхождения вспомогательного символа (включая это вхождение) естественно интерпретировать как ту информацию, которую говорящий должен на соответствующем шаге процесса держать в памяти. [Такая интерпретация будет особенно наглядной, если взять грамматику с правилами вида А—>хХ, где leV и Xef* (например, стандартную бинарную или в нормальной форме), и построить для нее эквивалентную МП-машину способом, использованным в доказательстве теоремы 6.4. Тогда каждая промежуточная цепочка упорядочиваемого вывода будет иметь вид zZ, где г е eF' и Zef*, а при переходе к МП-машине цепочка 2 (точнее, Z) станет содержимым рабочей ленты, т. е. «ленты памяти», на соответствующем шаге вычисления.] Но объем «оперативной памяти» человека ограничен сверху, причем граница, по данным экспериментальной психологии, сравнительно невысока. То
224 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ [гл. 1 обстоятельство, что гипотеза в целом не подтверждается (стр. 290), заставляет сделать вывод, что с помощью Б-грамматик— во всяком случае, без дополнительных механизмов — нельзя достаточно удовлетворительно моделировать процесс порождения предложения носителем языка *). Тем не менее Б-грамматики, левые глубины которых ограничены константами, представляют значительный лингвистический интерес, хотя бы потому, что ограниченность степеней левого ветвления является существенной типологической характеристикой языка. Возникает вопрос о природе языков, порождаемых такими грамматиками, а также множеств цепочек, выводимых в произвольных Б-грамматиках с помощью выводов ограниченной левой глубины. Ответ на эти вопросы дает следующая Теорема 7.2. Для любой Б-грамматики Г и любого натурального числа k множество Lk является А-языком. Более того, для всякой Б-грамматики Г и всякого натурального k можно построить А-грамматику, порождающую Lk (Г). Доказательство. Пусть Г = (V, W,I,R). Сопоставим каждой цепочке coe(VUtt7)+, |о)|^й, новый символ а(ю) и каждой тройке (ср,ty,х), где cp<=(V\JW)+, il)e(VU^)*,j;eP, |ф|, М<й и ф1=^'Ф> новое пра- г вило a(q>)-*xa(ty), если ty ф Л, и а(ср)-»л:, если tp = Л. Положим Г' = (V, W, а(£)>#')» гДе w' состоит из всех новых символов и R' — из всех новых правил. Грамматика Г' правосторонняя линейная, и для нее без труда строится эквивалентная ей автоматная (ср. стр. 169). В то же время легко видеть, что L(T') = L(T). Следствие. Для любой Б-грамматики Г, для которой ®/$(п) ограничена числом k, можно, если известно k, построить эквивалентную ей А-грамматику. *) Это утверждение ни в коей мере не означает отрицания лингвистической значимости Б-грамматик. Грамматики, неадекватные для моделирования процесса порождения предложения человеком, могут быть в то же время пригодны для описания структуры законченного предложения, подобно тому, как с помощью языка математической логики можно представить готовое доказательство теоремы, но не процесс его нахождения математиком.
§ 7.1] ГЛУБИНА И РАЗБРОС 225 Заметим, что если Г — приведенная грамматика, то <2/л(л)=1 тогда и только тогда, когда Г — А-грамма- тика. Таким образом, если С — класс всех функций- констант, то 2%л{Ъ) = 2{к). В общем случае для Б-грамматики Г имеем, очевидно, °ЦЛ (п) ^ п, и существуют Б-грамматики, для которых это неравенство переходит в равенство, — примером может служить хотя бы грамматика Г = {{а}, {/}, /, {/—*1а, /—>а}); впрочем, язык L(T) = a+ может быть порожден и А-грамматикой, т. е. грамматикой левой глубины 1. Естественно спросить, существуют ли Б-язы- ки, не порождаемые никакими Б-грамматиками левой глубины, меньшей п. Ответ на этот вопрос отрицателен; более того, для любой Б-грамматики Г и любого действительного числа с, 0<с<1, можно построить Б- грамматику Г', эквивалентную Г и такую, что для всех достаточно больших п имеет место неравенство <Vp, (п) ^сп (так чт0 Для любой линейной функции f(n) = ел, с > 0, имеем &*л (Б) =&{Ъ). [A fortiori это утверждение верно также для разброса и активной емкости.] Действительно, нужным свойством будет обладать всякая грамматика, удовлетворяющая требованию теоремы 6.3, если только взять фигурирующее в условии этой теоремы число s достаточно большим (например, положить s^—). В то же время существуют Б-языки (и даже линей ные языки), удовлетворяющие тому условию, что для каждой порождающей такой язык Б-грамматики ее левая глубина мажорирует некоторую линейную функцию. Приведем пример. Пример 1. Рассмотрим язык L — {апЬп\п = 1, 2,...} и произвольную порождающую его Б-грамматику Г = ({a, b}, W, I,R). Мы можем считать, что Г — приведенная грамматика без правил вида А~*В, A, B^W; действительно, при переходе от произвольной Б-грамматики к приведенной (лемма 4.8) множество полных выводов не меняется, а переход к грамматике без правил вида А —► В можно, как показывает очевидный анализ доказательства леммы 4.1, осуществить так, чтобы 8 А. В, Гладкий
226 СЛОЖНОСТЬ ВЫВОДА Ё Б ГРАММАТИКАХ [ГЛ. 1 между множествами полных выводов в старой и новой грамматиках существовало взаимно однозначное соответствие со следующим свойством: для каждой цепочки о из полного вывода в старой грамматике найдется цепочка о/ из соответствующего вывода в новой такая, что | о' | = | о | и на всех местах, на которых в о стоят основные (соответственно вспомогательные) символы, в а' также стоят основные (вспомогательные) символы, и обратно. Покажем прежде всего, что ни из какого символа А е W не может быть выводима цепочка вида фВг|зСх, где В и С — циклические вспомогательные символы. Действительно, в противном случае мы имели бы А \— xByCz, В \— uiBuz, С |— ViCvz, где х, у, г, щ, и2, vu 0!ёР, «i«2 Ф Аф Viv2. Кроме того, I\-t\At2, B\—r, С \— s, где tu tz, r, sel/*. Но тогда /1— tiXUiBu2yuiCu2zt2 и t\XU\ru2yv\sv2zt2 = anbn для подходящего п. Поэтому ЛИбО И\ГИ2 СОСТОИТ ТОЛЬКО ИЗ а, ЛИбО V\SV2 — ТОЛЬКО ИЗ Ь; и если, например, справедливо первое, то оказывается невозможным t{xu2xru\yvlsv2zt2^. L, что по предыдущему должно иметь место. Пусть теперь Т — произвольное дерево вывода цепочки апЬп из / в Г. Из предыдущего следует, что, каковы бы ни были два пути в Т, идущих из корня в узлы, помеченные циклическими символами, один из них является продолжением другого. Наибольший из таких путей назовем главным. Никакое поддерево с корнем в произвольном узле а главного пути, состоящее из всех узлов, зависящих' от а и не входящих в главный путь, не содержит узлов, помеченных циклическими символами, так что высота такого поддерева не превосходит числа p = \x(W), и поэтому оно содержит не более q — 1 -\-g-\-g2 + ■■■+gp узлов, где g — максимум длин правых частей правил Г. Следовательно, главный путь содержит ье менее k/(q-\- 1) узлов, где k — общее число узлов дерева Т. Далее для подходящего символа А е W найдется последовательность а:, ..., а/, узлов, лежащих на главном пути, упорядоченных «сверху вниз» и помеченных этим символом, такая, что для каждого f = 0, ..., h — 1 длина пути из а* в a»+i не превышает р, откуда h ^ ck, где с = -—г-гг-рг. и тем бо-
§7.1J ГЛУБИНА И РАЗБРОС 227 лее h ^ с-2л; важно заметить, что с — константа, не зависящая от л и от Г. Обозначим через z{ составляющую цепочки апЬп, «происходящую» от а{. Рассуждениями, аналогичными использованным в начале разбора примера, без всякого труда устанавливается, что для любого г = 1, ..., h k I будет Zi — a'b1, причем ki — ki+{ = ll — li+{ для всех i = 1 h — 1. Поэтому, во всяком случае, /,- — li+] > 0. Пусть теперь (/ = а>0, ®{ ©т = апЬп) — произвольный вывод, отвечающий дереву Т, и о)/) о);д — те его цепочки, которые «проходят» через аь ..., ah соответственно. Если в цепочках Q]. и ti)ji+ выделить те вхождения А, которые отвечают узлам щ и а,-+1 соответственно, то мы получим ооу=1Лт|, а/ =1%АВг\', где X Ь- V, т) Ь— т)', Ah- £Л9; при этом 9 ф Л, поскольку 9 \- bl'~ti+i Ф Л. Следовательно, цепочка мЛ будет содержать подцепочку вида Л9Л_!9Л_2 ... 9,, где все 9{ непусты, так что левая глубина этой цепочки, а значит, и всего вывода не меньше п^с-2п. Таким образом, Щт(п)^сп. [См. также упражнение 7.2.] Для правой глубины картина такая же, как для левой, с точностью до обращения. Разброс. Нетрудно видеть, что роль, которую по отношению к глубине играют Л-языки, по отношению к разбросу принадлежит линейным языкам. Именно, справедлива Теорема 7.3. Для любой Б-грамматики Г и любого натурального числа k множество Lk(T) является линейным языком. Более того, для всякой Ь-грамматики Г и всякого натурального k можно построить линейную Б-грамматику, порождающую Lk{Y). Доказательство. Пусть Г = {V, W, I, R). Определим новые символы а (о), как в доказательстве теоремы 7.2. Каждой четверке (ф,ty,х,у), где <p<=(V{]W)+, i|><=(VUW)*, x, y<=V*, |ф|, |г|)|<А! и ф|= х-фг/, сопо- r ставим новое правило а(ф)—*ха(^)у, если \|> ф Л, и а(ф)—*ху, если •§ = Л. Положим Г' = (V, W,a(I),R'), где W состоит из всех новых символов и R'— из всех новых правил. Эквивалентность Г и Г' очевидна. 8*
-228 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ [ГЛ. 7 Следствие. Для любой Ъ-грамматики Г, для которой Dr(n) ограничена числом k, можно, если известно k, построить эквивалентную ей линейную Ь-грамматику. Остается заметить, что если Г — приведенная грамматика, то Dr(«)= 1 тогда и только тогда, когда Г линейна, так что S'c (Б) = S (Л) (Л — класс линейных Б-грамматик). Металинейный язык — и даже произведение двух линейных языков —■ может уже удовлетворять тому условию, что для каждой порождающей его Б-грамматики ее разброс мажорирует некоторую линейную функцию. Пример 2. Пусть L = {ambmanbn\m, n = 1, 2,...}, Т = {V,W,I,R) — Б-грамматика, и L(T)—L. Как и в примере 1, можно считать Г приведенной и не имеющей правил вида А-+В, A, Ssf. В произвольном дереве вывода Т цепочки ambmanbn из / в Г нетрудно, рассуждая аналогично примеру 1, найти два «главных пути», исходящих из одного и того же узла а (не обязательно совпадающего с корнем) и содержащих все узлы Г, помеченные циклическими символами. На этих путях для подходящих символов А, В е W найдутся последовательности узлов ось ..., аи и Рь ...., Р/ такие, что аи ..., ah имеют метку А, а рь ..., р,<— метку В, причем h, f ^ ck, где k — общее число узлов Т и с—константа, определяемая так же, как в примере 1. Обозначая через Z{ и щ составляющие цепочки ambmanbn, «происходящие» от а* и Pj соответственно, видим, что Zt = ak'b!i, Uj = adibei и при этом £, — — kw = h — li+u dj — d,+i = e} —- ej+u так что /, — — /г+ь dj — dj+i >■ 0. .Поэтому в произвольном выводе, отвечающем дереву Г, найдется цепочка, содержащая вхождение подцепочки вида AQh-л ■ ■ • Biocri... Of-\B, где 9,, Oj ф Л (мы считаем здесь, что узлы ai, ..., an принадлежат левому главному пути, а рь ..., Р/— правому). Но длина этой подцепочки не меньше /i-j-f^ 5== 2ck > 2с • | ambmanbn \. [См. также упражнение 7.17]. § 7.2. Активная емкость Активная емкость Б-грамматик ведет себя сложнее, чем глубина и разброс. Оказывается, прежде всего,
J 7.2] АКТИВНАЯ ЕМКООТЬ 229 что, — в то время как все классы g% (Б), где k — функции-константы, совпадают между собой, и то же верно для 3?к (Б), —разность i?£+i(B) — £{{Ъ) не пуста, каково бы ни было k = \, 2, ... {S£\(Б) есть, очевидно, класс линейных языков). Это доказывается следующим примером. Пример 1. Рассмотрим две бесконечные последовательности символов А о, Аи ..., В\, В2, ... и построим последовательность Б-грамматик Г0, Гь ..., причем каждая грамматика будет иметь основной словарь {а, Ь,с,d}, вспомогательный словарь {Ао Аи,В\,... ..., Bk) ({Ао} при k = 0) и начальный символ Ak, следующим образом: I. Г„= ({а, Ь, с, d], {Ао}, А0, {Л„-+«/}); II. Tk+\ получается из 1\ добавлением к вспомогательному словарю символов Аь+\ и Вн+и причем Ak+i объявляется начальным символом, и к схеме — правил Ak+1-*cBk+id, Ak+l-*cd, Bk+i-^aBh+ф, ВкМ-*аАгАф («,/ = 0 k). Полагая £(Гь)—Lft, имеем LQ = {cd}, Lk+l = = {canzbnd\n = l, 2, ..., zet*}UM). Цепочки, принадлежащие языкам Lo, L\, ..., мы будем называть «гроздьями». Для каждой грозди до определим ее высоту h(w): h(cd) = 0; если до = = camcudbmdcancudbnd и h(cud) = i, h{cud) = j, то Л (до) = max (£,/)+1. Гроздь будет называться «совершенной», если в любой ее подцепочке, имеющей вид Viv2, где vi и vz — гроздья, высоты vi и vz равны. Каждый язык Lh состоит, очевидно, в точности из всех гроздьев высоты, не большей k. При k ^ 1 для любой грозди высоты, не превосходящей k, наименьшая активная емкость ее вывода в 1\ не превосходит k. В самом деле, для Ti это тривиально; пусть доказано для 1\; любой полный вывод в Гь+i содержит цепочку вида canAiAjbnd, i, j < k, причем предыдущие цепочки содержат по одному вхождению вспомогательного символа, а в последующих наименьшее число вхождений вспомогательных символов получится, если сначала полностью «обработать» одно из «хождений Аг или А, — это делается по правилам, Г, или Г,- соответственно, — а потом другое. Итак, £*е 2?&■(&)•.■,.,•
230 СЛОЖНОСТЬ ВЫВОДА В Б ГРАММАТИКАХ [ГЛ.7 Установим теперь некоторые свойства гроздьев. Первые два из них очевидны: I. В каждой грозди вхождений а равно числу вхождений Ь, а число вхождений с — числу вхождений d. II. В любом начале грозди число вхождений b не превосходит числа вхождений а, а число вхождений d — числа вхождений с. Следующие три свойства без труда доказываются индукцией по высоте грозди. Назовем вхождение с в гроздь «правым», если оно непосредственно следует за вхождением d, и «левым» в противном случае. III. В каждой грозди число левых вхождений с на единицу больше числа правых. IV. Если гроздь содержит подцепочку cdqicdq2... ... cdqhcd, где h ^ 2', то длина хотя бы одной из цепочек <7i, ..., <7й не меньше 4 (t — 1). V. Если cqd — подцепочка грозди, содержащая одинаковое число вхождений с и d и такая, что во всяком ее начале число вхождений d не превосходит числа вхождений с, то q содержит одинаковое число вхождений а и Ь. Остается одно свойство: VI. Пусть некоторую гроздь w высоты k > 0 можно представить в виде w = U\xyzu2 таким образом, что из цепочек х и г хотя бы одна не пуста и для любого п — = 1, 2, ... цепочка wn = uixnyznu2 также является гроздью. Тогда: а) х, у, г имеют вид х = а1, у = ayvxv^W, z=bl, где V{ и v2 — гроздья; б) любая цепочка wn является гроздью высоты й;< Поскольку б) следует из а) непосредственно, достаточно доказать а). Допустим сначала, что х содержит вхождения с и d. Тогда возможны два случая: 1) некоторое вхождение с предшествует в х некоторому вхождению d\ 2) все вхождения с следуют за всеми вхождениями d. Случай 1. Рассмотрим последнее из тех вхождений с в х, за которыми следуют какие-либо вхождения d в х, и первое из вхождений d в х, следующих за этим вхождением с. Ясно, что интервал, ограниченный этими вхождениями, пуст, так что х = reds, откуда хп —
§7.2] Активная емкость 231 = r(cdsr)n~xcds, причем п может быть сколь угодно большим. Но это противоречит свойству IV. Случай 2. Рассмотрев последнее вхождение с и первое вхождение d в х, представляем х в виде г\сг2 = = Sids2, где г2 и Si не содержат cad; отсюда х2 = = r\cr2S\ds2, а поскольку х2 — подцепочка грозди, г2 и Si пусты. Далее рассуждаем, как в случае 1. Таким образом, х не может содержать вхождений end одновременно. Но если х содержит вхождения d, не содержа вхождений с, то при достаточно больших п начало и\хп цепочки wn не будет обладать свойством II. Если же х содержит вхождения с, не содержа вхождений d, то все вхождения с в хп, кроме разве одного, будут левыми; в то же время, поскольку х и z с точностью до перемены местами cud ведут себя одинаково, цепочка z тоже не может содержать вхождений cud одновременно; если она не содержит d, то уже цепочка w2 будет нарушать свойство I, а если она содержит d, не содержа с, то w2 нарушит свойство III. Итак, х не содержит ни с, ни d, и то же, разумеется, верно для z. Отсюда сразу следует, что цепочка х не может содержать а и Ъ одновременно, иначе она содержала бы вхождение ab или Ьа, но таких подцепочек в гроздьях нет. То же верно для z. Если теперь предположить для определенности, что х Ф Л, имеем х = а1 или х = Ы, I > 0. Но второе невозможно из-за нарушения свойства II для цепочки wn при достаточно большом п. Поэтому х = а1, откуда z=bl ввиду свойства I. Остается показать, что у также имеет требуемый вид. Если высота w равна 2, это очевидно. Пусть предложение доказано для всех высот, меньших k, и высота w равна k, так что w = cpt\t2qd, где р = ат, q = bm и tu t2 — гроздья высоты, не большей k — 1. Если х содержится в р и z — в q, наше утверждение очевидно; но при х, содержащемся в р, z должно содержаться в q, и обратно, иначе цепочка w2 не порождалась бы грамматикой 1\. Если обе цепочки х и z содержатся в U или в 4, то утверждение справедливо по индуктивному предположению. Остается случай, когда х содержится в ti и z — в t2\ но в этом случае w2 нарушала бы свойство V. Теперь мы перейдем к доказательству основного утверждения: покажем, что Ьк+1 ф. 5Е'к (Б) при любом
232 СЛОЖНОСТЬ ВЫВОДА В Б ГРАММАТИКАХ [ГЛ. 7 й = 1, 2, ... Для этого введем сначала вспомогательное понятие. «совершенного бинарного дерева порядка й» (сокращенно «й-дерева»). Именно: 1-деревом называется всякое дерево ширины 1; если для некоторого k понятие й-дерева определено, то (й -\- 1)-деревом называется всякое дерево вида • где t — дерево ширины 1 (возможно, единичное), а и b — дуги, ti и h — й-деревья. Если в дереве Т полного вывода в Б-грамматике найдется поддерево, не содержащее висячих узлов Т и являющееся й-деревом, то во всяком выводе, отвечающем дереву Г, имеется цепочка, содержащая не менее й вхождений вспомогательных символов. Действительно, для й = 1 это очевидно; если для некоторого й утверждение справедливо, и Т содержит поддерево Г', не содержащее висячих узлов Т и являющееся (й + 1)- деревом, то во всяком выводе («о,..., o)s), отвечающем Г, некоторая цепочка о, будет содержать вхождение вспомогательного символа, отвечающее корню Г'; из определения (й + 1)-дерева ясно, что некоторая цепочка oij, / > i, будет содержать два вхождения аир вспомогательных символов, отвечающих корням двух й-деревьев; но тогда при дальнейшем выводе наименьшее число вхождений вспомогательных символов в одну цепочку, являющихся потомками аир, получится, если сначала полностью «обработать» а, а потом р, или наоборот, и это число в силу индуктивного предположения будет не меньше й -\-1. Далее нам будет удобно воспользоваться еще одним вспомогательным понятием — понятием «совершенной бинарной системы отрезков (цепочки) порядка й» (сокращенно «й-системы»), которое мы определим так: 1-система состоит из одного отрезка длины, большей 1, (й-(-1)-система получается из объединения двух й-си-
§7.2] АКТИВНАЯ ЕМКОСТЬ 233 стем таких, что никакой отрезок одной из них не пересекается ни с каким отрезком другой, добавлением еще одного отрезка, содержащего все отрезки обеих й-си- стем. Ясно, что если система составляющих, отвечающая некоторому дереву Т полного вывода в Б-грамма- тике, содержит й-систему, то Т содержит й-дерево. Пусть Г = {V, W, 1, R) — произвольная ^-грамматика, порождающая Lh (k^l). Нам достаточно теперь доказать, что для некоторой цепочки из Lh всякая система составляющих, сопоставляемая ей выводом в грамматике Г, содержит й-систему. При этом мы можем считать, аналогично предыдущим примерам, что Г является приведенной и не имеет правил вида Л—"В, А, Пу£ть а и р — два узла некоторого дерева Т полного вывода в Г, помеченные одним и тем же символом AeW и такие, что р зависит от а. Если v и у — составляющие, «происходящие» от а и р соответственно, то v = xyz, A \— xAz, откуда А (— xnAzn для любого «= 1, 2, ..., причем хотя бы одна из цепочек х и z не пуста. Поэтому ввиду свойства VI х = a1, z = bl, у = = a}V\v2b\ где V\ и v2— гроздья. Выберем совершенную гроздь w высоты й так, чтобы для любой ее подцепочки х, являющейся гроздью высоты, большей 0 и представимой в виде х = = cantit2bnd (t\ и t2— гроздья), число п было не меньше 2(р + 1) •g2^p+1\ где р — мощность W и g — максимум длин правых частей правил Г. Фиксируем некоторую систему составляющих С, сопоставляемую цепочке w некоторым выводом в Г, — соответствующее дерево вывода обозначим Т — и рассмотрим одну из подцепочек-гроздьев цепочки w. х = cut\t2vd, где и = ап, v = = bn, t\ и h — гроздья. По лемме III.1 в системе С найдется р +1 составляющих, образующих вложенную последовательность: у\=>у2=> ■ ■■ =>Уп+\ — и таких, что либо левые, либо правые концы их попарно различны и содержатся в отрезке и. Узлы аь а2, • • ■, оср+\ дерева Г, от которых «происходят» г/ь у2, .. •, Ур+i соответственно, лежат на одном пути, и по крайней мере два из них-^ пусть yf и yh, f < h, — помечены одним и тем же символом. По предыдущему отсюда следует, что у; = а1 уф1, yh = alV\V2b\ где v\, v2 — гроздья. Теперь во всяком
234 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ [ГЛ. 7 случае ясно, что отрезок и содержит левый конец г/л, так что yh = amt', причем либо f — начало Мг, либо t\tz — начало ?. Поскольку и t\t2, и V\v2 начинаются символом с, имеем т = i. Следовательно, либо t\ — начало V\, либо V{ — начало tx\ но никакая гроздь не может быть собственным началом другой, так что t\ = v\, откуда точно так же t2 = v2. Итак, уь. = аЧ^фк Таким образом, каждой грозди х, являющейся подцепочкой w, отвечает составляющая у{х) = уи, содержащаяся в х и содержащая всякую гроздь, являющуюся собственной подцепочкой х. Пусть теперь С — множество всех составляющих из С, сопоставленных таким способом всевозможным подцепочкам w, являющимся -гроздьями (включая самое w). Ясно, что С есть й-система. Доказательство закончено. Замечание. Все рассуждения, относящиеся к грамматике Г, очевидно, сохраняют силу для любой Б-грамматики, которая а) порождает все гроздья высоты k и б) не порождает ни одной цепочки, не являющейся гроздью. Мы воспользуемся этим ниже при разборе примера 2. Назовем Б-грамматику, активная емкость которой мажорируется константой, Б-гр амматик.ой ограниченной активной емкости, сокращенно Б-ОАЕ- грамматикой, а язык, порождаемый такой грамматикой, — ОАЕ-языком. Всякая Б-ОАЕВ-грамматика (§ 5.4) является Б-ОАЕ-грамматикой (причем, если /0(Г) = й, то /г(«)<&). Грамматики Гк примера 1 являются не только ОАЕ-, но и ОАЕВ-грамматиками; однако легко ввдоизменить этот пример так, чтобы ни один из получаемых языков не был ОАЕВ-языком. Положим, например, Lk=LkLo, где L0 = {anbn\n = = 1,2, ...}*. Можно показать —это предоставляется читателю, — что ни один из L'k не является ОАЕВ-языком (ср. упражнение 5.27). В то же время для каждого L'k легко построить порождающую его Б-грамматику Га такую, что /г/(«) = й + 1; кроме того, нетрудно убедиться, опираясь на соответствующий результат, уже имеющийся для языков Lk, что L'k<£ 9?'к{Ъ). Таким образом, уже класс ^(Б) содержит языки, не являющиеся ОАЕВ-языками. (Что касается класса
§7-2) АКТИВНАЯ ЕМКОСТЬ 235 3!\ (Б), то он, как уже отмечалось, совпадает с классом линейных языков.) В общем случае для активной емкости можно получить более низкую верхнюю оценку, чем для глубины и разброса: имеет место Теорема 7.4. Для любой Ъ-грамматики Г справедливо неравенство /г (п) ^ (г — 1) • (log2 п -f- 1), где г есть максимум длин проекций правых частей правил Г на вспомогательный словарь, если этот максимум не меньше двух, и г = 2 в противном случае. Доказательство. Ради удобства индукции установим несколько более общий факт: если Г = {V, W, 1,R) — Б-грамматика, А (= W, xeF+ и А\-х, то най- г дется вывод х из А в Г, активная емкость которого не превосходит (г—1) (log2|jc|+1). Ограничимся сначала случаем, когда г ^ 2, т. е. правая часть каждого правила Г содержит не более двух вхождений вспомогательных символов. (Грамматику, удовлетворяющую этому условию, мы будем называть слабо бинарной.) При |л:| ===== 1 утверждение очевидно. Пусть оно доказано для цепочек длины, меньшей п, и пусть \x\=nnD — произвольный вывод х из А. Пусть далее о — первая цепочка вывода D, содержащая два вхождения вспомогательных символов (если такой цепочки нет, то все доказано): а = = tBuCv, В, Cef, t, и, эеГ. Тогда х = tyuzv, где В \~ у, С V- г. При этом длина хотя бы одной из це- г г почек у, z—пусть у — не превосходит п/2. По индуктивному предположению можно найти вывод D' цепочки у из В и вывод D" цепочки z из С, активные емкости которых не превосходят соответственно log2|#|-f- 1 ^ ^log2« и log2|2|-f- 1 ^ log2«-f- 1. Производя сначала все шаги вывода D до получения цепочки о, затем все шаги D' и, наконец, все шаги D", будем иметь вывод х из А активной емкости, не превосходящей log2«+l. Доказательство для общего случая получается теперь из следующего почти очевидного замечания: заменив в произвольной Б-грамматике Г = (V, W, I, R) каждое правило А -+ z0BizlB2Z2... zs-iBszs, где Ви ..., Bs e е W; zQ, ..., г, 6 У*, s > 2, системой правил А-* —*ZqB\Z\C\, C\—*■ B2Z2C2, ..., Cs_3—>-SS_2ZS_2C,_2, Cs_2 -*■ ~* Bs-Xzs-iBbZs, где С\ Cs-2 — новые символы
§36 СЛОЖНОСТЬ: ВЫВОДА В Е-№АММАТИКАХ [ГЛ. 1 (разные для разных правил), мы получим слабо бинарную грамматику Г', эквивалентную Г и такую, что /г(я)<(г-1)-/г(я). Оценка, доставляемая только что доказанной теоремой, не может быть понижена (во всяком случае, по порядку): существуют Б-языки, не порождаемые никакими Б-грамматиками с активной емкостью, растущей медленнее логарифмической функции (и тем более не являющиеся ОАЕ-языками). Приведем пример. оо Пример 2. Положим L=[jLk, где Lh — языки ft=0 "примера 1. Язык L порождается Б-грамматикой со схемой {I-+cAd, I-*cd, А-*аАЪ, A-*aIIb}. Пусть Г = = .(V, W, I, R) — произвольная порождающая L Б-грам- матика, /? —мощность W и g— максимум длин правых частей правил Г. Можно считать Г, подобно предыдущему, приведенной и не имеющей правил вида А—»В, A, BeW. Как и в примере 1, мы можем утверждать, (см. замечание на стр. 234), что если цепочка да e Lft, k ^ 1, выбрана так, чтобы для любой ее подцепочки х, являющейся гроздью высоты, большей 0: х = = cantihbnd (ti и t% — гроздья), число п было не меньше 2(^+1) g2(p+i\ то активная емкость вывода да из / в Г не может быть меньше k. Обозначив через 4 наименьшую длину цепочки из Lk, удовлетворяющей указанному условию, и полагая А(р -\- 1) -g^v+i) _|_ 2 — h, имеем /4 = = h -f- 4, lk+\ = 2/fe + h, откуда при k ^ 2 получается ■lk = (2ft - l)iL+ 2h+l < 2h+l (h + 1), так что k > log2 lh— — log2(/j + 1)— 1, Поэтому для бесконечного числа значений п (именно, п = 12, /з, ...) справедливо неравенство /г(л) ^ log2п — Iog2(h + 1)— 1, так что во всяком случае отношение /r(«)/log2« не может стремиться к пределу, меньшему единицы. Более того, можно найти такую постоянную с, что /г («) > \og2ti — с. Действительно, при любом k = 2, 3, ... имеем, во всяком случае, 1к+\<2гк, где г = \og2{h + 2); поэтому при h ^ п -< lk+i получаем h{n)>h{h) > log2 /fe - log, (A + 1) - 1 > >log2(/*+,)-r-log2(/i + l)-l> > log2 n — r — Iog2 (h + 1) — 1.
S" 7-21 АКТИВНАЯ ЕМКОСТЬ 237 В заключение параграфа мы укажем характеристику ОАЕ-языков в алгебраических терминах, сходную с полученной в § 5.4 для ОАЕВ-языков. Для этого введем одно новое понятие, представляющее и самостоятельный интерес. Пусть Т — конечное дерево. Сопоставим каждому его узлу а натуральное число |л(Г, а), которое будем называть густотой этого узла, следующим образом. I. Густота висячего узла равна нулю. II. Пусть для всех узлов Рь ..., ps, подчиненных узлу а, числа ц(Т, РО, ..., |л(Г, ps) определены; тогда: а) если [х(Г, Pi)= ... = [i(T, ps) = 0, то [i{T, a)=l; б) если max [л (Г, Pj) = tn > 0, то: 61) в случае, когда существует только одно i = 1, ..., s, для которого ц(Т, Pj) = = tn, полагаем ii(T, a) = tn; 62) в противном случае [х(Г, а) = т-\- 1. Далее, густотой дерева Т (обозначение: ц(Г)) будем называть густоту его корня. Из определения ясно, что в дереве густоты m все узлы, имеющие ту же густоту tn, образуют путь (возможно, нулевой длины), исходящий из корня. Мы будем называть этот путь стаошим. Лемма 7.2. Если Т — дерево полного вывода в слабо бинарной Ъ-грамматике, то наименьшая активная емкость вывода, отвечающего этому дереву, равна густоте Т. Доказательство. Ради удобства индукции бу« дем проводить его для любых (А, х) -деревьев, где А — вспомогательный символ их — цепочка основных символов. Для дерева высоты 1 утверждение очевидно. Пусть оно доказано для деревьев высоты, меньшей п, и пусть высота Т равна п, а густота равна tn. Если среди узлов, подчиненных корню Т, только один помечен вспомогательным символом и Г' — полное поддерево Т с корнем в этом узле, то наименьшая активная емкость выводов, отвечающих Т, будет такова же, как для выводов, отвечающих Т, а последняя равна ц{Т') = tn. Пусть имеются два узла, подчиненных корню Т и помеченных вспомогательными символами, и пусть Т', Т" — полные поддеревья Т с корнями в этих узлах. Возможны два случая: а) ц(Г') = \ь{Т") = m— 1; б) густота одного из деревьев Т, Г" —пусть Т — равна tn, a
238 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ [ГЛ. 7 густота второго меньше т. В обоих случаях наименьшая активная емкость вывода, отвечающего Т, получится, если сначала выполнить вывод наименьшей активной емкости, отвечающий Т", а потом — отвечающий Т' (впрочем, в случае а) можно и в обратном порядке); и в обоих случаях в силу индуктивного предположения получится вывод активной емкости ш. Перейдем теперь к алгебраической характеристике ОАЕ-языков. Эту характеристику можно сформулировать очень просто: класс ОАЕ-языков совпадает с замыканием класса линейных Б-языков относительно подстановки. Мы, однако, постараемся уточнить формулировку так, чтобы она стала эффективной. Для этого введем следующее определение. Будем называть подстановочным выражением от (переменных) |ь ..., |п всякое выражение, составленное из абстрактных символов |i, ..., %п с помощью знаков подстановки (в обозначениях подстановок должны участвовать также некоторые элементарные символы, причем каждой переменной, выступающей в роли языка, в которой производится подстановка, сопоставляется определенный набор элементарных символов; ср. определение центрально-подстановочного выражения, являющееся частным случаем настоящего определения, на стр. 177). Например, если |i, ..., £8 — переменные и а, Ь, с, d, e — элементарные символы, то 5(li; a, b,_c\%z, S(gi; a, b, сЦг, li, Is). -5(14; b, d, e\ S(h', a\h), \d], {e}))—подстановочное выражение; переменным |i, |i и |7 здесь сопоставлены наборы {а, b, с}, {b, d, e} и {а} соответственно. Обычным способом определим также представление языка с помощью подстановочного выражения. Теорема 7.5. а) Для любого подстановочного выражения 91 (gi, ..., |п) и любых п линейных Ъ-грамма- тик Гь ..., Гп можно построить Б-ОАЕ-грамматику, порождающую язык 9l(L(Ti) L(Tn))- б) Для любой В-ОАЕ-грамматики Г можно, если известно число, мажорирующее 1т(п), построить подстановочное выражение 91 (Ii, ..., |п) и линейные Б-грамматики Ti, ... ..., Гп такие, что L{T) =%(L(Ti) L(Tn)). Доказательство, а) Достаточно показать, что по любым Б-ОАЕ-грамматикам Г, Гь ..., Т3 можно
§ 7.2] АКТИВНАЯ ЕМКОСТЬ 239 построить Б-ОАЕ-грамматику, порождающую язык S(L(T); a,,..., as\L (Г,), ..., L(TS)). Но если Г = =-<y,W,I,R), Tt=(Vt,Pt,It,Rt) (/ = 1, .... s), F = = {а,, ..., aj, словари VUW, W , Ws попарно не пересекаются и при этом /г(")^й, /г.(")^й* (i = l, ...,s),_to, положив Г'= (F, U ._..UV„ WUWiU... ... U №„ /, R U Я i U • • • U Rs), где tf получается из R заменой во всех правилах всех вхождений ах, ..., as на /[,..., Is соответственно, будем иметь, очевидно, h'(n)<^k + тах(й1; ..., ks)—l. В то же время ясно, что Г" порождает нужный язык. б) Пусть Г — (V, W, I, R) — Б-грамматика такая, что /г (п) ^ М. Замечание, сделанное в конце доказательства теоремы 7.4, позволяет при соответствующем увеличении М считать Г слабо бинарной, так что М будет также верхней границей густот деревьев полных выводов в Г (лемма 7.2). Можно также считать, что в Г нет правил вида А —► В, А, В е W. Сопоставим каждой паре {А, т), где А <= W и т = = 1, ..., М, новый символ Ат, а также переменную 1д, т\ число т назовем уровнем символа Ат и переменной 1а, т- Кроме того, нам удобно будет полагать ай = а для каждого аеУи приписывать символам из V уровень 0. Каждому правилу г е R, содержащему в правой части вхождения вспомогательных символов, и каждому т = 2, ..., М сопоставим систему новых правил следующим образом: если г = А-^-хВу, Bsf, x, у <=V*, то система состоит из одного правила Ат->хВту; если r = xByCz, В, CeW, x, у, ге)/', то система состоит из всевозможных правил вида Am->xBm,yCm2z, где либо т1=т2 = т~ 1, либо одно из чисел ти т2 равно т, а другое меньше т. Число т назовем уровнем правил построенной системы. Кроме того, каждому правилу вида А->хВу, B^W, xy<=V+, и вида А-+х, x^V+, сопоставим новое правило Ах->хВху, соответственно А\~*х\ этим правилам будет приписываться уровень 1. Множество всех символов (правил) уровня т будем обозначать Vm (соответственно Rm)- Далее сопоставляем каждой паре (А, т), A^W, Щ = 1, ... 1 М, грамматику ГА, т = ( V0 U ... U Ущ-и Vm,
240 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ [ГЛ. 7 Ат, Rm); число т будем называть ее уровнем. Из определения правил уровня т ясно, что все Га, m линейны. Поскольку L (Г) = Li U ... U LM, где Lm, m = 1, .., ..., М, состоит из тех цепочек из L(T), для которых существуют деревья полных выводов в Г, имеющие густоту т, нам достаточно представить в требуемом виде каждый из языков Li, ..., LM (поскольку объединение тривиальным образом сводится к подстановке в конеч1 ный язык). Удобнее доказывать несколько более общий факт, а именно представимость в том же виде каждого языка LA,m(A<=W, m=l М), состоящего из тех цепочек х, для которых в Г существуют (А, х)-деревья густоты т. Мы покажем, что язык LA,m можно получить следующим образом: сначала подставим в язык L(TA, m) s s(V0U ••• UVm-i)* вместо каждого символа Вт>, 1< s^m'^m—1, соответствующий язык L(TB,m')\ в полученный язык (в словаре V0\j ... UVm-2) вместо каждого символа Ст", l^m"^m —2, подставим язык L(rc,m") и т- Д-. пока не получим язык в словаре V0 = V. Соответствующее подстановочное выражение читатель без труда выпишет. 1) Если цепочка х принадлежит описанному только что языку — будем обозначать его L'a, m,—то она может быть выведена из Ат с помощью новых правил уровней 1, ..., т. Устранив во всех цепочках полученного таким образом вывода индексы 1, . .. , т, мы получим, очевидно, вывод х из А в Г. 2) Включения LA, m s L'a, т докажем индукцией по т. Ясно, прежде всего, что деревья вывода густоты 1 — это в точности такие деревья, что в отвечающих им выводах используются лишь правила, содержащие в правых частях не более чем по одному вхождению вспомогательного символа; а эти правила совпадают — с точностью до индекса 1 при вспомогательных символах — с новыми правилами первого уровня. Поэтому La, i s s L'a, i для любого A (= W. Допустим, что т ~> 1 и утверждение доказано для густот, меньших т. Рассмотрим (А, х) -дерево Т густоты m (Л е W, x<=V+). Пусть ао, ■_• ., at— старший путь в Г и ро, . .., Р« {и ^ t -\- -\- 1) —все (упорядоченные «сверху вниз») узлы Г, подчиненные узлам старшего пути, не лежащие на нем и
§ 7.21 АКТИВНАЯ ЕМКОСТЬ 24 1 помеченные вспомогательными символами*) (рис. 14). Для каждого / = 0, ..., и будем обозначать через Голодное Pj-поддерево дерева Т. Положим также т} = = ц(^) = ц(Т, Pj); для любого / имеем т^<.т. Каждому узлу а, старшего пути отвечает некоторое правило га = А{—► сог- грамматики Г, где Л, — метка при а, и цепочка со* содержит, если i < t, одно или два вхождения вспомогательных символов (один из них является меткой при ая-ь а другой, если он имеется, — меткой при некотором ру, js^i), a если i = t — точно два вхождения (являющиеся метками при Pu-i и р„). Обозначим через. ri правило, которое получится из г и если приписать левой части индекс т, а в правой части: а) при i < t приписать Рис 14. тому вхождению вспомогательного символа, которое отвечает узлу cc,+i, индекс т, а вхождению, отвечающему узлу Pj (если оно есть), индекс ту, б) при i = t приписать каждому из двух вхождений вспомогательных символов индекс т — 1 (заметим, что mM_i = ти = т—1). Очевидно, все r't, i = = 1, ..., t, — правила грамматики ГАт. Среди отвечающих дереву Т выводов имеется такой, в котором на первых t + 1 шагах применяются правила Го, г\, .. . , г% (в этом порядке) и притом как раз в точках, соответствующих узлам ао, • - -, at- После выполнения этих шагов получается цепочка со, содержащая и -f- 1 вхождений вспомогательных символов, а именно символов, являющихся метками при р0, .. ., рм. Заменяя в со каждое вхождение вспомогательного символа SO), отвечающее узлу р;-, вхождением символа ВЦ\, получим цепочку со', которая, очевидно, получается из Ат последовательным применением правил г'о, г\, ..., r't и, следовательно, принадлежит £(Гл,то). Но цепочка х *) Каждому из узлов ао , at-i может быть подчинен самое большее один узел, помеченный вспомогательным симзолом и не, лежащий на старшем пути; для а* таких узлов ровно два.
242 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИК.АХ [ГЛ. 7 получается из со, а значит и из со', заменой каждого вхождения вспомогательного символа, отвечающего узлу Pj, на цепочку Zj = ц{Т))\ а поскольку Tj есть {В^\ Zj)- дерево густоты mi < m, имеем zi e L'B(j)t m.. Однако язык, получающийся из L(rAttn) подстановкой языков L'b, m> вместо символов Вт', т' < т, — это и есть L'a, m. Замечание. В настоящем параграфе, как и во всей главе, мы ограничились случаем Б- (а не ОБ-) грамматик, чтобы избежать дополнительного усложнения рассуждений, дающего не слишком большой выигрыш в общности. Однако соответствующие обобщения могут быть сделаны без труда. § 7.3. Степень гнездования и степень самовставления В § 3.1 мы ввели НС-сигнализирующие— специфические характеристики сложности вывода в НС-грамматиках, при определении которых существенным образом используется представление вывода в виде дерева. Там же были определены три конкретных типа НС-сигнали- зирующих: Yr, Y? и Фг. Для Б-грамматик, как мы видел^ в § 7.1, функции Yr и Yr совпадают, с точностью до аддитивной постоянной, с левой и правой глубиной соответственно. Нам остается изучить (для случая Б-грамматик) поведение функции Фг (п), которую мы будем называть степенью гнездования грамматики Г. Параллельно с ней мы будем рассматривать другую функцию — степень самовставления (обозначение: Хг (п)), — определяемую следующим образом: (i) назовем гнездо, содержащееся в системе составляющих, отвечающей дереву вывода в Б-граммати- ке, однородным, если все входящие в него составляющие «происходят» от узлов с одинаковыми метками (причем, если какая-нибудь составляющая «происходит» от нескольких узлов, то достаточно, чтобы один из них имел нужную метку); (и) степенью самовставления дерева полного вывода Т в Б-грамматике Г (обозначение: %(Г, Т)) назовем наибольшую глубину однородного гнезда, содержащегося в отвечающей Т системе составляющих; (in) для произвольной цепочки х е L(T) по
§ 7.3] СТЕПЕНЬ ГНЕЗДОВАНИЯ И САМОВСТАВЛЕНИЯ 243 ложим X (Г, х) = min %(Г, Т) где минимум берется по всем деревьям вывода цепочки х из начального символа в Г; (iv) наконец, Хг (п) = max X (Г, х). х<=ЦГ); \х\<п Из определений ясно, что Хг (п) ^ Фг (л). В то же время, если р — мощность вспомогательного словаря Г, то во всяком гнезде глубины, не меньшей рп, содержащемся в отвечающей дереву вывода в Г системе составляющих, будет содержаться, в свою очередь, однородное гнездо глубины, не меньшей л; поэтому Фг (л) ^ <рХг(л). Как было уже замечено (стр. 84), Фг(л)<тт(У?(л), Yr>)). Поэтому из теоремы 7.1 и ее аналога для правой глубины' следует, что для Б-грамматик Фг(л)^ < min (^r (л), °ifi (л)) -f е — 1, где е — максимум длин цепочек х в основном словаре Г, для которых в Г имеются правила вида А —>■ xQ или А —>■ Qx, причем б=^=Л *). В частности, для стандартной бинарной Б-грамматики Фг(я)<тт(<%Г?(л),^(л))-1. В силу определения гнезда имеем (для любой НС- грамматики) Фг (л) ^ у (л — 1); это неравенство может переходить в равенство уже для линейных грамматик (например: {/—>ala, I—ю.}). Для любой Б-грамматики Г и любого действительного числа с, О < с ^ 1, можно построить Б-грамматику Г', эквивалентную Г и такую, что (для достаточно больших л) Фг(п)-^.сп (в силу аналогичного факта для левой глубины, стр. 225). Вместе с тем даже для линейного языка может оказаться, что степень гнездования (а значит, и степень самовставления) каждой порождающей его Б-грамматики мажорирует некоторую линейную функцию. В частности, это верно для языка примера 1 из § 7.1. Действительно, мы можем, как и в этом примере, ограничиться приведенными грамматиками без правил вида А—*В, A, Be W (ни устранение таких правил, ни переход к приведенной грамматике не меняют степеней гнездования деревьев полных выводов); но при разборе примера мы видели, *) Впрочем, аналогичный факт верен и для произвольных НС- грамматик — см. упражнение 3.5, а).
244 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ (ГЛ. 7 что при любом п для всякого дерева вывода цепочки апЬп соответствующая система составляющих будет содержать последовательность составляющих zu ..., zh такую, что: a) h ^ с-2п, где с— константа, зависящая только от грамматики; б) г, =ак'Ь1{, причем &, — ki+i = = /,- — U+1 > 0 для всех i = 1, ..., /г — 1. Однако из условия б) вытекает, что данная последовательность является гнездом. . Теперь нам остается исследовать строение множеств Lk (Г) и Lk (Г) (смысл этих обозначений ясен по аналогии с введенными на стр. 61). Картина здесь сходна с той, которая была получена для глубины: имеет место Теорема 7.6. Для любой Б-грамматики Г и любого натурального числа k множества Lf (Г) и Lf(r) являются А-языками. Более того, для всякой Ъ-грамма- тики Г и всякого натурального k можно построить А- грамматики, порождающие Lf (Г) и Lk (Г) соответственно. Доказательству предпошлем лемму. Будем называть вспомогательный символ Л Б-грамматики Г самовставляющимся, если имеются такие непустые цепочки £ и 11, что А Н-|Лг|. Б-грамматику, у которой нет г самовставляющихся символов, назовем Б-граммати- кой/без самовставления. Лемма 7.3. Для всякой Ъ-грамматики без самовставления можно построить эквивалентную ей А-грам- матику. Доказательство. Пусть Г = ( V, W, I, R) — Б- грамматика без самовставления и р = \x(W). Каков бы ни был символ А е W, из А не могут быть одновременно выводимы цепочки вида £Л и Лг|, где g ф Л, г| ф ф Л; и если, например, Л г-|Л, \ Ф Л, то g не содер- г жит вхождений Л. Поэтому, в частности, если р = 1, т. е. W = {/}, то Г является либо правосторонней, либо левосторонней линейной грамматикой, и можно построить эквивалентную ей автоматную грамматику (стр. 169). ПустЪ утверждение доказано для грамматик с менее чем р вспомогательными символами. Пусть для определенности R не содержит правил вида / —*■ /£, \ф Л. Сопоставим каждому символу Л е W новый символ А и положим W = {А[Л е W). Положим далее
§ 7.3] СТЕПЕНЬ ГНЕЗДОВАНИЯ И САМОВСТАВЛЕНИЯ 245 Г = (V \J(W— {/}), WJ, #),_где R состоит из всевозможных правил вида А —► <рВ таких, что Л —► qB e /?, и правил вида 7—>-г|з таких, что /—*-ty^ R и ф не содержит вхождений /.. Кроме того, для каждого Дей7 — {/} будем полагать ГА = {V, W — {/}, A,R'}, где R' получается из R изъятием правил, содержащих в левой или правой части вхождения /. Для каждой грамматики Гд можно по индуктивному предположению построить эквивалентную ей А-грамматику, и то_же верно для правосторонней линейной грамматики Г, однако поскольку в цепочках вывода в Г, начинающегося символом /, этот символ может стоять только на последнем месте, язык L(T) получается из L(T) подстановкой вместо каждого Де W—{/} языка L(Ta), и мы можем воспользоваться теоремой 5.4. Доказательство теоремы 7.6. Пусть Г = = (V, W,I,R) — Б-грамматика. Мы можем считать, что она не имеет правил вида А->В, B^W. Кроме того, нам удобно будет полагать, что основные символы могут содержаться лишь в правых частях правил вида А —>■ a, a ge V; действительно, если ввести для каждого а еЕ V «двойника» — новый символ а, заменить в правых частях всех правил из R не вида А->а, а е V, все вхож-, дения основных символов вхождениями их «двойников» и добавить к R всевозможные правила вида а->а, то это не изменит ни порождаемого грамматикой языка, ни ее степени гнездования, ни степени самовставления. Введем теперь для каждого символа A е= W 5(k + 1) новых символов: Ллн>' («левые неуглубляющие» символы), Ллу'' («левые углубляющие»), Лпн-1 («правые неуглубляющие»), Аш-' («правые углубляющие»), Ас-1 («средние»); здесь 0<лг£;&. Каждому правилу Л-> ~>ВЕХ ...ESD, где В, Еи .... Е3, D<=W, s >0, сопоставим Ыг новых правил: ллн, лпн,, ЛЛУ, I 1ПУ, / А С, I i оЛН, icC, / + 1 г,ЛУ, t + \ CC, ( + 1 г,ЛН, icC, l + \ —> D JZ\ рС, 1 + 1 Г)ПУ, (" + 1 с-С, /+1 г,ПН, i . . Jzs L) с-С, Л-1-гчПН, i U = о,
246 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ [ГЛ. ? Кроме того, каждому правилу А-^-а, где aeV, сопоставим всевозможные правила вида Аъ-{-^а, где Ъ = ЛН, ЛУ, ПН, ПУ, С и г = 0, .... k. Положим теперь Г = (1/, W, Iе-°, R'), где W состоит из всех новых символов и /?' — из всех новых правил. Из самого вида новых правил непосредственно усматривается, что при любом i = 0, ..., k — 1 цепочка, выводимая в Г' из символа Али~', соответственно Лпн-', может содержать вхождение того же символа только на первом, соответственно последнем, месте; символы же ^лу.^ Л™4 Ас-! (1 = 0, .... k), а также Алн-к и Лпн>* не являются даже циклическими. Поэтому Г' —грамматика без самовставления, и по лемме 7.3 можно построить эквивалентную ей А-грамматику. Вспомнив индуктивное определение степени гнездования составляющей (стр. 289), можно без всякого труда показать индукцией по i, что в любом дереве полного вывода в Г' степень гнездования каждой составляющей, «происходящей» от узла, помеченного символом с индексом i, равна i; поэтому степени гнездования деревьев полных выводов в Г' (точнее, отвечающих им систем составляющих) не превосходят k. В то же время, если в дереве вывода в Г' лишить все символы- метки индексов, получится дерево вывода в Г, имеющее, очевидно, ту же степень гнездования; следовательно, L(Tr) s Lf (Г). С другой стороны, легко показать, что во всяком дереве полного вывода в Г, степень гнездования которого не превосходит k, можно так снабдить символы-метки индексами, чтобы получилось дерево полного вывода в Г' (следует приписывать индексы «сверху вниз», переходя от каждого узла к подчиненным ему). Отсюда /,?(Г')е£(Г'). Займемся теперь степенью самовставления. Пусть W — {#1, ..., Яр}. Каждому А = Hi^W мы сопоставим систему новых символов, которые будут запи- /Sj ... Sp\ сываться в виде Аъ . .1. где Ъ = ЛН, ЛУ, ПН, VI • • • 1р/ ПУ, С; Sj = 0, 1; г,- = 0, ..., k. (Содержательный
§ 7.3] СТЕПЕНЬ ГНЕЗДОВАНИЯ И СЛМОВСТАВЛЕНИЯ 247 смысл Ъ — тот же, что и в первой части доказательства; tj означает «степень Я^-самовставления» составляющей, происходящей от узла с меткой А, т. е. наибольшую глубину гнезда, все члены которого «происходят» от узлов с меткой Hj и содержат данную составляющую; Sj — вспомогательный «индекс готовности», смысл которого будет ясен из дальнейшего.) Далее, каждому правилу г = А —► со е R, где со = ВЕ\ ... ... EJ), В, Ei, ..., Es, D e W, s ^ 0, будет сопоставляться система новых правил, каждое из которых отличается от г только наличием индекса Ъ и матрицы /s, ... sp\ . I при каждом вхождении символа в левую и \i] ... tpj правую часть; при этом в левой части возможны любые комбинации индексов и матриц, а в правой индексы и матрицы выбираются следующим образом. I. Значение Ъ для каждого вхождения символа в со выбирается в зависимости от расположения этого вхождения и от значения того же индекса при А точно так же, как в первой части доказательства. II. Правила выбора значений sy. 1) Для всех средних вхождений Sj = 1 (/= 1, ... .... Р). 2) Если А = Hj или значение Sj при А равно 0, то неуглубляющие левые и правые вхождения символов в со получают значения Sj, равные 0, а углубляющие — равные 1. 3) Если А ф Hj и значение s, при А равно I, то все вхождения символов в со получают значения Sj, равные 1. III. Правила выбора значений if. 1) Если А = Hj, то значения ij для тех вхождений символов в со, для которых Sj = 0, такие же, как для ^4, а для тех, для которых Sj = I, — на единицу больше. 2) Если А ф Hj, то для всех вхождений символов в со значения ij такие же, как для А. При этом, если А = Hj и значение ij для А равно k, то те из описанных выше правил с соответствующей ле« вой частью, у которых в правой части имеются вхождения Hj со значениями Sj, равными 1, изымаются из числа сопоставляемых правил.
248 СЛОЖНОСТЬ ВЫВОДА В БГРАММАТИКАХ [ГЛ. 7 Кроме того, каждому правилу вида А-^-а, где aeV, сопоставляем всевозможные правила вида si • • • sp AM/ Г\-+а. l • • • lp, Положим r' = [V,W, IеI 0 Qj,R'}, где W есь стоит из всех новых символов и R' — из всех новых правил. Из приведенного только что описания новых правил легко усматривается, что: а) если левая часть правила имеет вид „лн / si • • • sp \ - Hj . I, то у всех вхождении символов в пра- V li • • • 1Р I вую часть, кроме первого (также имеющего ЛН в качестве значения Ъ) значения ц больше, чем в-левой части, а значения 1\, ..., tj_i, tj+i ip такие же; б) для пн / s, ... sp правил с левой частью Hj[. . 1 рассмотрение i\ ... 1р ] симметрично; в) если левая часть имеет вид ъ /s, ... sp\ Hj: [ . . I. где Ъ равно ЛУ, ПУ или С, то в правой \h • • • lp/ части первое и последнее вхождения символов имеют в качестве значений Ъ ЛН и ПН соответственно, и значения ti, ..., iP у этих вхождений такие же, как в левой части, а у средних вхождений значения ij больше, чем в левой части, и значения остальных i такие же. Отсюда, в свою очередь, ясно, что символы, для которых Ъ равно ЛУ, ПУ или С, не циклические и что в цепочке, выводимой из символа, для которого Ъ = ЛН (соответственно Ъ = ПН), вхождение того же символа может стоять только на первом (соответственно последнем) месте. Таким образом, Г' есть грамматика без самовставления. Нетрудно, далее, показать, исходя опять-таки из самого определения новых правил, что если а — произвольный узел дерева полного вывода в Г', р — узел, подчиненный a, taj — «степень Я^-самовставления» узла а (т. е. наибольшая глубина гнезда, все члены которого «происходят» от узлов, несущих пометку Hj — с разны-
УПРАЖНЕНИЯ 249 ми, вообще говоря, индексами и матрицами, — и содержат составляющую, «происходящую» от ее) и t$j — «степень Я^-самовставления» узла р, то t$j = tai, когда значения i, для меток при аир равны, и t$j = taj -f- 1 в противном случае (т. е. когда значение i$ для метки при р на единицу больше, чем для метки при а). Отсюда очевидной индукцией получается, что максимум «степеней Я^-самовставления» узлов дерева полного вывода в Г', взятый по всем узлам и по всем / = 1, ..., р, равен наибольшему из значений iu ..., ip для меток в узлах данного дерева, так что ни для какого дерева полного вывода в Г' этот максимум — обозначим его М — не может превосходить k. В то же время, лишив в таком дереве все символы-метки индексов и матриц, получим дерево полного вывода в Г, степень самовставле- ния которого равна М. Поэтому L (Г ) s Lk (Г). С другой стороны, нетрудно показать, что в дереве полного вывода в Г, степень самовставления которого не превосходит k, можно так снабдить символы-метки индексами и матрицами, чтобы получилось дерево полного вывода в Г'; отсюда L* (Г) е L (г'). Доказательство закончено. Следствие, а) Для любой Ъ-грамматики Г, для которой Фг (п) ограничена числом k, можно, если известно k, построить эквивалентную ей А-грамматику. б) Аналогично для Хг(п). Упражнения 7.1. а) Показать, что левая глубина и разброс любой Б-грамма- тики, порождающей язык Дика, мажорируют подходящие линейные функции. б) То же для скобочного языка. 7.2. Показать, что левая глубина любой однозначной . Б-грам- матики, порождающей неавтоматный язык, мажорирует подходящую линейную функцию. 7.3. Показать, что для произвольных Б-грамматик Г\ и Г2 можно построить Б-грамматик"у Г, порождающую язык L(Ti)L(r2) и такую, что DT (n) < max (<^£ (п), Щ^ (п) ). 7.4. Определим «центральную глубину» и «краевую глубину» цепочки we (VU W) + соответственно как наименьшее значение левой и правой глубины со и как наименьшее число п, для которого со представима в виде со^соз, где х ^ V* к |wi | + |ср2| = п. Далее обычным способом определим центральную и краевую глубину грамматики.
250 СЛОЖНОСТЬ ВЫВОДА В Б-ГРАММАТИКАХ ' [ГЛ. 7 Показать, что для центральной и краевой глубины справедливы аналоги теоремы 7.2. 7.5. а) Показать, что для любой НС-грамматики Г и любого действительного числа с, 0 < с < 1, можно построить НС-грамматику Г', эквивалентную Г и такую, что °УТ, (п) ^.сп. б) Можно ли распространить на случай произвольных НС-грамматик теорему 7.4? 7.6. Показать, что для любого k= 1, 2,... и любого l = k+ 1, k + 2, ... можно построить такую Б-грамматику Г, что L (Г) е е #j[+1 (Б) — 2>lh (Б) и при этом /0(Г) = I. 7.7. а) Показать, что если ft — высота дерева подчинения, согласованного с некоторой системой составляющих густоты \i (т. е. такой, что густота соответствующего дерева составляющих равна ц), то ц :g: ft. б) Показать, что для Б-грамматики Г тогда и только тогда существует (и может быть построена) сильно (соответственно слабо) эквивалентная ей Д-грамматика G ограниченной высоты, когда активная емкость Г ограничена константой (соответственно Ь(Г) является ОАЕ-языком). Оценить зависимость меж_ду активной емкостью Г и высотой О. 7.8. Построить Б-грамматику, порождающую язык {апЬп \ п = = 1, 2, .. .}♦ и такую, что густоты деревьев выводов в ней не превосходят двух. 7.9. Показать, что если Б-грамматика Г обладает тем свойством, что для каждой цепочки из Ь(Г) найдется дерево полного вывода в Г, густота которого не превосходит k, где k — постоянная, зависящая только от Г, то для Г можно построить эквивалентную ей Б-грамматику Г', в которой густоты всех деревьев выводов ограничены тем же числом k [Диковский 1972 (б)]. 7.10. а) Обобщить лемму 7.2 на случай произвольных Б-грам- матик. i б) Изменить определение густоты так, чтобы лемма 7.2 (в формулировке, приведенной в тексте) была справедлива для произвольных Б-грамматик. 7.11. Показать, что активная емкость итерационно-линейной грамматики не превосходит двух. Замечание. Вместе с упражнением 5.28 отсюда следует, что класс итерационно-линейных языков является собственным подклассом класса 2?2 (Б). 7.12. Показать, что: а) класс ОАЕ-языков замкнут относительно усеченной итерации; б) ни один из классов Э?к (Б) относительно усеченной итерации не замкнут. 7.13. Назовем грамматику контекстно-неукорачива го- щей, если каждое ее правило имеет вид xwy -*■ x'4>u', где ф е W U VW(VVW)*W; yes.W[)W(VUW)*WU{Ah х, у, х', у' е У*; |х|< =£S|x'|; M^li/'l (V и W — соответственно основной и вспомогательный словари Г). Показать, что для любой кочтекстно-неукорачи- вающей ОАЕ- (ОАЕВ-) грамматики Г такой, что /г (п) =Sj k, соответственно /о(Г) ^fe, можно построить эквивалентную ей Б-ОАЕ-(ОАЕВ-)
УПРАЖНЕНИЯ 251 грамматику Г', также удовлетворящую условию Ip> (n) ^ к, соответственно /о(Г') <: k [Диковский 1972 (б)]. 7.14. Найти необходимое и достаточное условие равенства нулю степени гнездования приведенной удлиняющей Б-грамматики. 7.15. Показать, что для функций Фр («) и Ф^ («) (стр. 84) имеют место аналоги теоремы 7.6. 7.16. Показать, что в любой Б-грамматике, порождающей нелинейный язык, из начального символа выводима цепочка, содержащая не менее двух вхождений самовставляющихся символов. [Указание. Использовать упражнение 5.21,6).] 7.17. Показать, что разброс любой однозначной Б-грамматики, порождающей нелинейный язык, мажорирует подходящую линейную функцию.
ГЛАВА 8 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ § 8.1. Предварительные замечания При изучении формальных грамматик, как и многих других математических объектов, нередко приходится сталкиваться с так называемыми массовыми проблемами. Массовая проблема — это совокупность однотипных задач, связанных с конструктивными объектами некоторого четко определенного вида, причем каждая «индивидуальная» задача состоит в построении по заданному объекту S другого конструктивного объекта Н, имеющего, вообще говоря, иной вид. В весьма распространенном частном случае требуется узнать, обладает ли Н некоторым свойством; тогда объект Н должен быть одной из двух констант 1 и 0 (или, если угодно, «истина» и «ложь»), интерпретируемых как утверждения «S обладает данным свойством» и «Н не обладает данным свойством» соответственно. Решение массовой проблемы ищется, как правило, в виде алгоритма, позволяющего для каждого объекта S заданного вида построить соответствующий объект Н; поэтому массовые проблемы часто называют алгоритмическими. Если нужный алгоритм существует, говорят, что данная алгоритмическая проблема разрешима, если нет — что она неразрешима. (Говорят также «проблема алгоритмически разрешима», соответственно «неразрешима».) В случае, когда все Н и Н являются цепочками в некотором алфавите (или допускают эффективное кодирование с помощью цепочек, что имеет место в действительности для любых конструктивных объектов), требуемый алгоритм
§8 1] ПРЕДВАРИТЕЛЬНЫЕ ЗАМЕЧАНИЯ 253 можно, в силу тезиса Черча, точнее, «тезиса Тьюринга — Черча», понимать как ДЭ-машину, которая вычисляет функцию, определенную на всех цепочках S заданногр вида и принимающую на каждой из них значение, равное соответствующей цепочке Н. Впрочем, при доказательстве разрешимости алгоритмической проблемы обычно ограничиваются указанием принципа работы алгоритма, не приводя построения соответствующей машины Тьюринга (или рекурсивной схемы, нормального алгорифма и т. п.), поскольку такое построение, коль скоро алгоритм достаточно ясно описан, не представляет трудностей *), но при доказательстве неразрешимости необходимо устанавливать именно несуществование нужной машины Тьюринга (или эквивалентного механизма четко определенного вида, например рекурсивной схемы). В предыдущем изложении мы неоднократно встречались с алгоритмическими проблемами, получавшими положительное решение. Сюда относятся все утверждения о возможности для всякой грамматики или машины некоторого специального вида построить эквивалентную грамматику или машину другого специального вида, о перестройке вывода и т. п. Напомним также об алгоритме, позволяющем по любой неукорачивающей грамматике Г и любой цепочке х в основном словаре этой грамматики распознать, принадлежит ли х языку L(T) (§ 3.3), и об алгоритмах для распознавания пустоты и конечности языка, порождаемого Б-грамматикой (§ 4.2). В настоящей же главе мы сосредоточим внимание на тех алгоритмических- проблемах (касающихся грамматик), которые решаются отрицательно. Проблемы, с которыми мы будем иметь дело, можно разделить на два типа. К первому типу принадлежат проблемы распознавания истинности предикатов, определенных на грамматиках. По большей части, но не всегда, речь будет идти об одноместных предикатах, т. е. 0 свойствах грамматик; в случае многоместных предикатов естественно говорить об отношениях между *) Возможны, вообще говоря, и неконструктивные доказательства существования алгоритма, не дающие способа его построить, например, путем приведения к противоречию утверждения о неразрешимости соответствующей проблемы.
254 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. грамматиками. Пусть 3~ — некоторый класс грамматики предикат Р(ГЬ ..., Г„) определен для всех Гь ... ..., Г„ ^ 3~- Мы будем называть предикат Р распознаваемым в классе &~, если существует алгоритм, позволяющий для любых Гь ..., Тп е 3~ распознать, истинно ли утверждение Р(Ти ..., Г„), и нераспознаваемым в классе У, если такого алгоритма нет. В частности, при п = 1 будем говорить о распознаваемом (нераспознаваемом) свойстве. Наибольший интерес представляют инвариантные свойства и отношения, т. е. такие свойства и отношения, которые зависят только от порождаемых грамматиками языков; иначе говоря, инвариантность предиката P(Ti,...,T„) означает, что из L(Ti) = L(T[), ... ..., L(r„) = L(r„) следует Р(Г„ .... Г„)«Р(П, ... ..., Г«). Всякому инвариантному свойству грамматик, соответственно отношению между грамматиками, естественным образом сопоставляется некоторое свойство языков (отношение между языками). Если а — некоторое инвариантное свойство грамматик (отношение между грамматиками) и а' — соответствующее свойство языков (отношение между языками), мы обычно будем вместо «а распознаваемо (нераспознаваемо) в классе £Г» говорить, что а' распознаваемо (нераспознаваемо) в том же классе. Так, результаты § 4.2 могут быть теперь сформулированы следующим образом: пустота и конечность языка распознаваемы в классе Б-грамматик. Все свойства и отношения, нераспознаваемость которых будет доказываться в основном тексте этой главы, инвариантны. Примеры проблем, относящихся к распознаванию неинвариантных свойств и отношений, см. в упражнениях 8.1, 8.2, 8.15. Если некоторое свойство или отношение распознаваемо в классе £Г, то оно, очевидно, распознаваемо и в любом классе, содержащемся в 3~. Обратное, вообще говоря, неверно*); ниже мы увидим, например, что в *) Однако если два класса грамматик «эффективно эквивалентны», т. е. для любой грамматики одного из этих классов можно построить эквивалентную грамматику другого класса, то из алгоритма, распознающего какое-либо инвариантное свойство в одном из этих классов, немедленно получается соответствующий алгоритм для другого (ср. общее замечание в конце настоящего параграфа).
§ 8.1] ПРЕДВАРИТЕЛЬНЫЕ ЗАМЕЧАНИЯ 255 классе НС-грамматик пустота и конечность языка уже нераспознаваемы. В дальнейшем нам будет полезен также следующий термин: мы будем называть свойство языков нетривиальным в некотором классе языков, если среди языков этого класса имеются как обладающие, так и не обладающие данным свойством. Проблемы второго типа формулируются следующим образом. Пусть V — некоторый словарь, &~ — класс грамматик и P(L, хи ..., хп)—предикат, определенный для всех языков L, порождаемых грамматиками класса 3~ с основным словарем V, и всех цепочек Хи ... ..., хп е V*. Ставится вопрос: существует ли алгоритм, позволяющий по любой грамматике Ге^ с основным словарем V и любым п цепочкам хи ..., jc„ e V* распознать, истинно ли утверждение P(L(T), xu ..., х„)? («Общая проблема распознавания Р в классе &~».) Фиксировав грамматику Г° е 3~ с основным словарем V, можно поставить другой вопрос («проблему распознавания Р для Г°» или «частную проблему распознавания Р»): существует ли алгоритм, позволяющий по любым цепочкам хи .. ., хп е V распознать, истинно ли P(L(T°), xu .,., х„)? Из неразрешимости частной проблемы распознавания Р хотя бы для одной грамматики класса 3~ вытекает, очевидно, неразрешимость общей проблемы распознавания PbJ". К этому типу относятся проблема распознавания принадлежности цепочки языку, порождаемому данной грамматикой, проблема распознавания замещаемости одной цепочки на другую в языке, порождаемом данной грамматикой, и т. п. Заметим, что при фиксировании цепочек Xi, ,.., хп общая проблема распознавания P(L, xu ..., хп) переходит в проблему первого типа — о распознавании некоторого свойства языков. Например, фиксируя х в предикате х е L, получаем проблему распознавания свойства языка содержать данную цепочку. В заключение параграфа сделаем одно простое замечание, которое будет чрезвычайно полезно нам в дальнейшем. Пусть 91 и 33 — классы конструктивных объектов, а — свойство объектов класса 91 и р — свойство объектов класса 33. Пусть, далее, имеется алгоритм
256 НЕРАЗРЕШИМЫЙ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. S $, позволяющий для^ всякого del построить такое Ь(а) е 33, что Ь(а) обладает свойством р тогда и толь* ко тогда, когда а обладает свойством а. Если при этом существует также алгоритм JR, позволяющий для всякого объекта b e 33 распознать, обладает ли он свойством Р, то есть и алгоритм, позволяющий для всякого объекта а е 91 распознать, обладает ли он свойством а (достаточно по данному а построить Ь(а) и затем применить к Ь(а) алгоритм Щ. Поэтому при наличии алгоритма $ неразрешимость проблемы распознавания а влечет неразрешимость проблемы распознавания р. Если описанный алгоритм $ существует, мы будем говорить, что проблема распознавания а сводится к проблеме распознавания р. Таким образом, для доказательства неразрешимости алгоритмической проблемы достаточно свести к ней какую-либо другую алгоритмическую проблему, неразрешимость которой уже доказана. Точнее, мы установили это для проблем распознавания свойств; но тот же прием мы можем использовать и для проблем распознавания отношений, поскольку отношение, например, между двумя конструктивными объектами можно рассматривать как свойство упорядоченной пары объектов, а пара конструктивных объектов также есть конструктивный объект. § 8.2. Инвариантные свойства произвольных грамматик В дальнейшем нам часто придется, рассматривая некоторый класс грамматик 3~, выделять те грамматики этого класса, которые имеют фиксированный основной словарь V. Совокупность всех таких грамматик мы будем обозначать через 3~у, а класс языков, ими порождаемых,— в соответствии с соглашением на стр. 30 — через 3?(3~у). Напомним также, что класс произвольных грамматик мы договорились обозначать через Г. Целью настоящего параграфа является доказательство следующей теоремы. Теорема 8.1. Каков бы ни был словарь V, никакое свойство языков, нетривиальное в классе i?(IV)—- иначе говоря, в классе рекурсивно перечислимых язы-
§ 8.2] ИНВАРИАНТНЫЕ СВОЙСТВА ПРОИЗВОЛЬНЫХ ГРАММАТИК 257 ков, содержащихся в V*, — не может быть распознаваемым в классе Гу и тем более в классе всех грамматик. Вместо этого утверждения нам удобнее будет доказывать другое, равносильное ему ввиду теоремы 1.4, а именно: Теорема 8.Г. Каково бы ни было свойство языков а, нетривиальное в классе рекурсивно перечислимых языков, содержащихся в V*, где V — фиксированный непустой алфавит, не существует алгоритма, позволяющего для любой Э-машины М с входным алфавитом V распознать, обладает ли язык L(M) свойством а. Для доказательства теоремы 8. Г установим, в свою очередь, справедливость следующей теоремы, которая понадобится нам и дальше. Теорема 8.2 (теорема Раиса). Пусть W и V — фиксированные непустые алфавиты и § — класс всевозможных частично рекурсивных функций, области определения и множества значений которых содержатся в W* и V* соответственно. Пусть, кроме того, а — произвольное свойство функций, нетривиальное в классе 3, т. е. такое, что в g есть как функции, обладающие этим свойством, так и функции, им не обладающие. Тогда не существует алгоритма, позволяющего для любой ДЭ- машины с входным алфавитом W распознать, обладает ли функция Пру/(*), г&е f(x)—вычисляемая данной машиной функция *), свойством а. Нетрудно видеть, что теорема 8.2 влечет теорему 8.1'. Действительно, по теоремам 1.2 и 1.3 для всякой Э-машины М, допускающей L(M) S V*, можно построить ДЭ-машину М', вычисляющую функцию с множеством значений L(M). Область определения этой функции не обязана, вообще говоря, содержаться в W*, но она, во всяком случае, представляет собой язык в некотором (конечном) алфавите Z, и легко построить ДЭ-машину М" (см., например, упражнение 1.19, а), б)), осуществляющую взаимно однозначное отображение W* на Z*. Комбинируя машины М" и М, получаем ДЭ- машину Mi, вычисляющую функцию с множеством значений L(M) и областью определения, содержащейся в W*. С другой стороны, для любой Э-машины, *) Очевидно, всякая ДЭ-машина вычисляет некоторую функцию (которая может, впрочем, оказаться нигде ие определенной). 9 А. В. Гладкий
258 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 вычисляющей функцию f(x), тривиальным образом строится Э-машина, вычисляющая функцию Upvf(x), а это ввиду теоремы 1.3 позволяет построить Э-машину (с входным алфавитом V), допускающую множество значений Upvf{x). Пусть теперь (5 — произвольное свойство языка и а — свойство функции иметь множество знамений, проекция которого на V обладает свойством р. Из предыдущего ясно, что если р нетривиально в классе рекурсивно перечислимых языков в алфавите V, то а нетривиально в классе Ъ, и из существования алгоритма, распознающего по любой Э-машине М с входным алфавитом V, обладает ли L(M) свойством [3, немедленно вытекало бы существование алгоритма, позволяющего по любой ДЭ-машине с входным алфавитом W распознать, обладает ли соответствующая функция Пру/ (х) свойством а. Обратимся к доказательству теоремы 8.2. Будем рассматривать всевозможные ДЭ-машины с входным алфавитом W. Без ущерба для общности можно считать, что рабочие алфавиты и множества состояний всех рассматриваемых машин содержатся в непересекающихся счетных множествах U и R соответственно, и сверх того R f\*Vt = 0 (поскольку это ограничение не сказывается на объеме класса вычисляемых машинами функций). Класс всех таких машин мы обозначим через ЯЙ. Сопоставим каждой машине М е SR цепочку х(М) е W+, которая будет называться кодом машины М, следующим образом. а) Допустим сначала, что мощность W не меньше двух. Выберем в W произвольным образом два символа а и Ъ. Положим Z = V [] U [] R и X = Z U {П, Л, —}, где П, Л, —► — некоторые символы, не входящие в Z. Занумеруем каким-либо образом элементы X (например, элементы V U {П, Л,—»-} первыми р + 3 целыми положительными числами, где р — мощность V, а элементы R и U—V соответственно четными и нечетными числами, большими р-\-3). Для произвольного символа аеХ обозначим через х(а) цепочку bahb, где k — номер а. Для произвольной непустой цепочки со = a.i . .. ...as, где at, ..., as e X, обозначим через к (со) цепочку «(at) ... x(as). Наконец, для произвольной машины М <= 3R обозначим через сом цепочку qiq1. . . qlU ... /„,
§ 8.2] ИНВАРИАНТНЫЕ СВОЙСТВА ПРОИЗВОЛЬНЫХ ГРАММАТИК 259 где <7i — начальное состояние М, ql, ..., ql — все заключительные состояния М и /i, ...; /„ — все инструкции М, причем qi расположены в порядке возрастания их номеров в выбранной нами нумерации X, а /,} — в лексикографическом порядке (т. е. сначала по возрастанию номеров первых символов, затем вторых и т. д.), и положим к{М) = к(сом)- б) Если W состоит из одного элемента аа, то сначала построим для каждой машины M^SR цепочку к'(М) точно так же, как в предыдущем случае строилась к(М), но используя вместо а и Ъ произвольные различные символы а' и Ь', а затем положим■к{М)==а'1~ <*'W)), где v—отображение, определенное в упражнении 1.3 (при k = 2, at = а', аг = Ь'). Будем называть машину МеЗК самоприменимой, если область определения вычисляемой этой машиной функции содержит код М, и несамопримени- мой в противном случае. Имеет место Лемма 8.1. Не существует алгоритма, позволяющего для любой машины из SR распознать, является ли она самоприменимой. Доказательство леммы 8.1. Поскольку машина класса ЗЯ восстанавливается по своему коду однозначно и эффективно, существование указанного алгоритма означало бы существование ДЭ-машины Мь вычисляющей функцию, определенную на всех кодах ма* шин из SR и принимающей на кодах всех самоприменимых машин одно и то же значение соь а на кодах всех несамоприменимых машин — одно и то же значение со2, отличное от он. Допустим, что такая машина Mi существует; без нарушения общности можно считать, очевидно, что она принадлежит 3R. По Mi легко построить (это предоставляется читателю) другую машину Мг, тоже принадлежащую ЯЯ и работающую на кодах несамоприменимых машин так же, как Mi, а на кодах самоприменимых машин работающую вечно, так что вычисляемая этой машиной функция / определена на кодах всех несамоприменимых машин и не определена ни на одном коде самоприменимой машины. Но машина Мг не может быть самоприменимой, поскольку это означало бы, что функция / определена на коде Mi, который был бы при этом кодом самоприменимой машины; в то же время и 9*
260 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 несамоприменимой М2 быть не может — ведь это равносильно тому, что на коде Af2 функция / не определена, и в то же время код М2 был бы кодом несамоприменимой машины, а на таких кодах / как раз определена. Имеем противоречие. Доказательство теоремы 8.2. Пусть So— подкласс S, состоящий из всех функций, обладающих • свойством а, и Si = S — So- По условию оба класса So и Si не пусты. Класс S содержит, в частности, нигде не определенную функцию (т. е. функцию с пустой областью определения) fo; допустим для определенности, что fo e So- Фиксируем далее некоторую функцию ft e е Si и вычисляющую ее машину Mi e Ш. Рассмотрим произвольную машину Mg2K и построим по ней другую машину М' е ЗЯ, работающую следующим образом. В начале вычисления машина М\ «не обращая внимания» на содержимое входной лрнты, записывает на рабочей ленте цепочку к(М) и затем работает как п.о.м. машины М, «пытаясь», таким образом, вычислить значение определяемой этой машиной функции при значении аргумента, являющемся ее собственным кодом. Если со- «i. ответствующее значение будет вычислено, то вслед за этим рабочая лента уничтожается, а потом машина начинает работать, как Мь т. е. вычислять значение ft от входной цепочки. В противном случае М' работает вечно. Итак, машина М' вычисляет функцию fieSi, если М самоприменима, и нигде не определенную функцию /о е ;5о, если М несамоприменима. При этом f0 и /i совпадают со своими проекциями на V. Следовательно, проблема распознавания самоприменимости для машин класса Ш сводится к проблеме распознавания свойства а для проекций на V функций, вычисляемых машинами того же класса, так что, согласно замечанию в конце § 8.1, неразрешимость первой проблемы влечет неразрешимость второй. § 8.3. Инвариантные свойства НС-грамматик В предыдущем параграфе мы показали, что в классе произвольных грамматик все нетривиальные свойства языков нераспознаваемы. Уже в классе НС-грамматик дело обстоит иначе. Действительно, для произвольной
§ 8.3] ИНВАРИАНТНЫЕ СВОЙСТВА НС-ГРАММАТИК 261 цепочки х свойство языка содержать х, как уже отмечалось, распознаваемо в этом классе*). Поэтому в нем распознаваемы и такие свойства, как «содержать хотя бы одну из двух данных цепочек», «содержать одну данную цепочку и не содержать другую» и т. п. Вообще, если Ф(Ь, Х\, ..., xh) — произвольное булево выражение от предикатов «#i e L», ..., «х% е L» (т. е. выражение, составленное из этих предикатов с помощью пропозициональных связок 1, &, V, =э) и Фо(хь ..., xh) — свойство языка L удовлетворять условию Ф{Ь, х\, ... ..., Xk), то Фо(хь ..., Xh) распознаваемо в классе НС. Такие свойства мы назовем булевыми. Однако для некоторого весьма общего типа инвариантных свойств все же удается доказать их нераспознаваемость в классе НС; это и будет основной целью настоящего параграфа. Предварительно докажем несколько лемм. Лемма 8.2. Для всякой ДЭ-машины М, входной алфавит которой содержит символ а, можно построить такие НС-грамматики rf и г£* с одним и тем же одноэлементным основным словарем {Ь}, что: а) если вычисляемая машиной М функция определена для значения аргумента, равного а, то L\Ti) = = {bn\n^n0), Z.(rf)={6n|Ktt<tt0}. где щ-целое положительное число, зависящее от М; б) в противном случае Z.(rf)=0, L{vf) = b+. Доказательство. Построим сначала по машине М ее детерминированную п. о. м. Mi (лемма 1.5). Затем построим по Mi другую ДЭ-машину Mi так, чтобы она также представляла собой п. о. м. для М и в то же время обладала тем свойством, что в случае, когда вычисляемая машиной М функция не определена, М% работала бы вечно и при этом ее рабочая лента при достаточно долгой работе оказывалась бы сколь угодно длинной. [Это можно сделать, например, перестроив М\. так, чтобы она: а) перед каждым своим шагом добавляла к рабочей ленте справа ячейку, которая уничтожалась *) Как и в более широком классе неукорачивающих грамматик. В отношении распознаваемости инвариантных свойств эти два класса вообще ведут себя одинаково (см. сноску на стр. 254).
262 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 бы лишь после перехода машины в «заключительное Mi-состояние»; б) в случае «безрезультатной остановки» начинала добавлять к рабочей ленте ячейку за ячейкой без конца.] Кроме того, мы будем считать, что левые части инструкций М2 не содержат заключительных состояний; это, очевидно, не уменьшает общности. В силу теоремы 3.1 достаточно построить неукорачиваю- щие грамматики ff и Гг* со свойствами а) и б)-; мы определим их следующим образом. 1) Основной и вспомогательный словари V и W и начальный символ / — общие для обеих грамматик, а именно: V = {b}, W = Z |J Q U {#, /, Q, где Z, Q - соответственно рабочий алфавит и множество состояний М2 и #,/, Со ф Z U Q U {Ь}. 2) Схемы обеих грамматик содержат правило / -> ф qxad, где q\ — начальное состояние М2 и d — «разделительный символ» (см. определение п. о. м., стр. 45), всевозможные правила вида С0а->аСо, где aeW, и правила, сопоставляемые инструкциям М2 следующим образом: каждой инструкции Aqa-^-qa типа (и) сопоставляется правило Aqa-^-q^C0, каждой инструкции qa-+ Aq^ типа (Ш) — правило qa-^-Aq^, каждой инструкции ga-> q^Jl типа (iv) — всевозможные правила вида BQa-^-qpB, где B^Z, и каждой инструкции qa-^-q^U типа (v) — всевозможные правила вида qaB —>-Bgp, где BeZ. 3) Сверх того, схема Гг содержит всевозможные правила вида gf—>6, где ^ — заключительное состояние Ми вида ЬВ^-bb, где Bef, вида Bb-^-bb, где Bef U{#}> и правило b-^-bb, а схема Г^ — правила /->Ь, I-^-bb, I^-bbb и всевозможные правила вида В-^b, где BeZUQU{#}. Ясно, что если вычисляемая машиной М функция определена на а, то ситуаций машины М2, достижимых из ситуации S0 = {qu Л, ф ф > Л, #ad), имеется лишь конечное число, причем длины отвечающих этим ситуациям рабочих лент пробегают все натуральные числа от 2 до некоторого щ включительно; поэтому в Yf будут в этом случае выводимы из I всевозможные цепочки вида bk, где k ^ щ -f- 2, и только такие степени Ь, а в. ff — всевозможные цепочки вида Ь1, где
§ 8.3] ИНВАРИАНТНЫЕ СВОЙСТВА НЙ-ГРАММАТИК 263 1 ^ / sg щ + 2, и только такие степени Ь. В противном случае достижимых из So ситуаций будет бесконечно много, длины отвечающих им рабочих лент будут пробегать все натуральные числа, не меньшие 2, но ни одна из этих ситуаций не будет содержать заключительных состояний; поэтому в ff не будет выводима из / ни одна степень Ь, а в Гг , напротив, все степени Ъ будут выводимы из /• Лемма 8.3. Для любых двух НС-грамматик Г) и Г2 можно построить НС-грамматику, порождающую язык {x\x^L{Tl)&3y{y^L{T2)&\y\ = \x\)}. Доказательство. В силу теоремы 3.3 достаточно построить почти неукорачивающую грамматику, порождающую нужный язык. Пусть Г, = <К„ Wlt /„ /?,), r2 = (V2, W2, /2> R2). Без ограничения общности мы можем считать, что Wi Л W2 = 0. Сопоставим каждому символу аеУ| новый символ а и обозначим через Г) грамматику, полученную из Ti заменой каждого символа а е V\ и каждого его вхождения в каждое правило на а. Положим Г ={VY,Z U {/},/, Я), где a) Z = V2 U Wl U W2 U U{a|aeFi}, I^ZuVi; 6) R получается из объединения схем Г] и Г2 добавлением правил I~*I\12, ab~*ba, ba-+a, где а и b пробегают V\ и V2 соответственно. Ясно, что при Vif\V2 = 0V есть нужная грамматика. В противном случае следует предварительно преобразовать Г2 так же, как было сделано с Г|. Положим теперь для произвольного языка L и произвольного п = 1, 2, ... : Z.(n)==WVeL&l<|*|<n}, I(n) = {*UeL&|x|>n} и докажем следующую лемму. Лемма 8.4. Пусть L0, Llt L2 — НС-языки и 2*— класс языков, содержащий LU\]LX и не содержащий ни одного из языков L0 U L\n) U L2n). Тогда свойство принадлежать классу 9? нераспознаваемо в классе НС-грам- матик. Доказательство. Пусть А0, Ai, A2 —НС-грам- матики, порождающие L0, L\, L2 соответственно.
264 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 Фиксировав символы а и Ь, рассмотрим произвольную ДЭ-машину М с входным алфавитом {а} и построим для нее НС-грамматики Г^1 и Г" по лемме 8.2. Затем, применив к грамматикам А) и Г^ лемму 8.3, построим НС-грамматику Г', порождающую множество тех цепочек из L), для которых в L(ri) имеются цепочки рав- ной.длины, и аналогичную НС-грамматику Г" построим для А2 и Г21. Если вычисляемая машиной М функция f определена для значения аргумента, равного а, то языки L (Г") и L (Г") будут, очевидно, совпадать соответственно с Z.i"o) и L{2°\ где п0 ~ число из леммы 8. В в противном случае будет L(r/) = L1, L(Y")—0. Наконец, построим НС-грамматику Г, порождающую язык L (Г0) U L (Г) U L (Г") (теорема 3.4). Язык L{T) будет совпадать с L0 U L\m) U L2"o), если f определена для а, и с Z-o U Z-j в противном случае. Но Lu\]Lx^lS£ и Lq U Z-i""' U ^2По) ^ 2". таким образом, неразрешимая по теореме 8.2 проблема распознавания свойства ДЭ-ма- шины М с входным алфавитом {а} вычислять функцию *), определенную для значения аргумента а, сводится к проблеме распознавания свойства НС-грамматики порождать язык, принадлежащий классу SS. Замечание. Из доказательства леммы 8.4 ясно, что она остается справедливой и в несколько усиленной формулировке; именно, для произвольного словаря V свойство принадлежать классу 9? нераспознаваемо в классе НСу. То же верно и для последующих рассмотрений этого параграфа (исключая одну специальную проблему, особо оговариваемую ниже, стр. 267). Теперь мы можем перейти к основной теореме этого параграфа. Скажем, что языки L] и L2 почти совпадают, если они отличаются друг от друга лишь конечным числом элементов, т. е. их симметрическая разность (L\ — L2)U(Z,2 — L\) конечна. Отношение почти совпадения является, очевидно, эквивалентностью; классы индуцируемого этой эквивалентностью разбиения мы будем на- *) Собственно говоря, речь должна идти о проекции этой фун- ции на некоторый алфавит (который можно выбрать произвольно) но проектирование не изменяет области определения функции.
§ 8 3] ИНВАРИАНТНЫЕ СВОЙСТВА НС-ГРАММАТИК 265 зывать пучками. Ясно, что всякий пучок, содержащий хотя бы один НС-язык, целиком состоит из НС-языков. Теорема 8.3. Если 9? — класс языков, содержащий хотя бы один НС-язык и имеющий хотя бы с одним пучком НС-языков конечное (в частном случае пустое) пересечение, то свойство принадлежать классу 9? нераспознаваемо в классе НС-грамматик. Доказательство. Пусть сначала пересечение 9? с пучком конечных языков бесконечно. Тогда существует пучок П, состоящий из бесконечных языков и пересекающийся с 9? по конечному множеству. Обозначим через L0 произвольный конечный язык, принадлежащий 9Z, через L, — пустой язык и через L — произвольный язык из П. При любом т = 1,2, ...язык L0(J Z.(m) также принадлежит П, и, следовательно, найдется такое р, что ни при каком /г >р язык L0 \]LM не_принадлежит 9?. Положив_£(р)= L2. будем иметь L.2l) = l}n\ если п^р, и /i"' = Lip\ если п <р; поэтому при любом п = 1, 2,... получаем LoU b\n) \iUn) = Z.0U Йтах("' Р" Ф %■ В то же время L0U L( ==Z.0e 9?. Остается применить лемму 8.4. Пусть теперь 9? пересекается с пучком конечных языков по конечному множеству. Если при этом 9? не содержит бесконечных НС-языков, воспользуемся леммой 8.4, взяв в качестве LQ произвольный конечный язык, принадлежащий 9?, в качестве L\ — пустой язык и в качестве L% — произвольный бесконечный НС-язык. В противном случае, — если существует бесконечный НС-язык L, принадлежащий 9?, — применяем ту же лемму при LQ = £», Lx = L, L2 = 0, где р — такое натуральное число, что ни один из языков П-п\ где n ^ р, в 9? не входит. Доказанная теорема позволяет легко убедиться в нераспознаваемости ряда более конкретных типов свойств. Имеют место, в частности, такие факты: Следствие 1. В следующих случаях свойство, нетривиальное в классе НС-языков, нераспознаваемо в классе НС-грамматик: а) если им обладает лишь конечное число НС-языков; б) если им обладают все конечные языки, соответственно все языки с конечными дополнениями, кроме, быть может, конечного их числа;
266 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 в) если им обладают только Ъ-языки и, быть может, конечное число НС-языков, не являющихся Ъ-языками. Пункт а) вытекает из того, что число пучков НС- языков бесконечно, пункт б) — из того, что конечные языки, равно как и языки с конечными дополнениями, образуют пучок (и из нераспознаваемости отрицания нераспознаваемого свойства), пункт в)—из того, что всякий пучок, содержащий Б-язык, целиком состоит из Б-языков (в силу теорем 4.8 и 5.5). В частности, нераспознаваемы в классе НС-грамматик следующие свойства языков: быть пустым, иметь пустое дополнение, быть конечным, иметь конечное дополнение, быть бесконтекстным, иметь бесконтекстное дополнение, быть автоматным, линейным, металиней- ным и т. п. Следствие 2. Какова бы ни была НС-грамматика Го, не существует алгоритма, позволяющего для любой НС-грамматики распознать, эквивалентна ли она грамматике Го. Тем более не существует алгоритма для решения общей проблемы эквивалентности НС-грамматик. Действительно, свойство языка совпадать с Ь(Г0) нераспознаваемо по пункту а) следствия 1. Следствие 3. Если Lq — произвольный бесконечный язык, то не существует алгоритмов, позволяющих по произвольной НС-грамматике Г распознать: -а) содержит ли L(T) язык Ь0; . б) является ли пересечение Lq(]L(Y) пустым. Это вытекает из пункта б) следствия 1, так как свойством не содержать Ь0 обладают все конечные языки, а свойством иметь с L0 непустое пересечение — все языки с конечными дополнениями. Аналогично получаем Следствие 4. Если L0 — произвольный язык с бесконечным дополнением, то не существует алгоритмов, позволяющих по произвольной НС-грамматике Г распознать: а) содержится ли L(T) в Lq; б) имеет ли объединение L0[}L(T) пустое дополнение. Из следствия 3 вытекает, например, нераспознаваемость свойства содержать цепочку, содержащую вхождение данной цепочки (соответственно начинающуюся или
§ 8.3] ИНВАРИАНТНЫЕ СВОЙСТВА НС-ГРАММАТИК. 267 оканчивающуюся вхождением данной цепочки) (ср. упражнение 4.7), из следствия 4 (в случае словаря не менее чем из двух символов)—нераспознаваемость свойства состоять только из цепочек, содержащих вхождение данной цепочки (соответственно начинающихся или оканчивающихся вхождением данной цепочки). Другие примеры применения теоремы 8.3 см. в упражнениях 8.5 и 8.6. Замечание. Если язык L0 конечен, то указанные в следствии 3 алгоритмы существуют, так как соответствующие свойства являются в этом случае булевыми. Аналогично для следствия 4. Итак, мы убедились, что «естественно возникающие» не булевы свойства НС-языков оказываются, как правило, нераспознаваемыми. Возникает вопрос: быть может, распознаваемые свойства исчерпываются булевыми? Следующий пример показывает, что это не так. Пример*). Фиксируем (произвольный) словарь V и сопоставим цепочкам в этом словаре натуральные числа способом, описанным в упражнении 1.3; цепочку, которой сопоставлено число п, будем обозначать со/г. Пусть, далее, R — произвольный рекурсивный язык в словаре V, не являющийся НС-языком**). Определим класс языков 3? следующим образом: L е= 2 = 3/г [со/г е= (L — R) & (V/ < /г) (сог е= L = сог' е= /?)]. Свойство языка принадлежать 3? распознаваемо в классе НС (и НСу). В самом деле, для произвольной НС-грамматики Г в силу выбора R имеем L(T)=^=R; поэтому, проверяя последовательно для каждой цепочки col, co2, ..., принадлежит ли она L(T) и принадлежит ли она R, мы дойдем в конце концов до такой цепочки со/г, которая принадлежит либо L(T) — R, либо R — — L(T). Если первая из таких цепочек принадлежит L(T) — R, имеем 1(Г)е2\ если же она принадлежит R-L(T), то L(T)<£&. Вместе с тем свойство принадлежать 3? не булево. Действительно, если Фо = Фо^ Xk) — булево *) Указан М. И. Белецким. **) Пример такого языка при ц(У)^2 доставляется хотя бы теоремой 2.4, если положить в ней F = S, f(n) = п. При ц(У) = ) нужно еще произвести перекодирование, как на стр. 259.
268 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 свойство и р—наибольший из номеров цепочек Xi. .., Хи, то всякие два языка L и Z/, для которых имеет место равенство £Г){со1,..., сор} = Z/f]{col сор}, либо оба обладают свойством Ф0, либо оба не обладают. Но если q — наименьшее число, большее р и такое, что cog ф. фК*), то язык L = {col,..., ®(q — l)}f]R не принадлежит 3?, в то время как L' = LU{co^} e 9?, и при этом Z.fl{col,..., сор} = L'fl{col сор}. § 8.4. Некоторые проблемы, связанные с Б-грамматиками При переходе от НС-грамматик к Б-грамматикам класс нераспознаваемых свойств языков сужается еще больше. Так, в классе Б-грамматик распознаваемы пустота (теорема 4.1), конечность (теорема 4.2), свойство содержать цепочку, содержащую вхождение х, или начинающуюся вхождением х, или оканчивающуюся таковым (упражнение 4.7); в классе НС-грамматик все эти свойства, как мы видели, нераспознаваемы. Однако и для Б-грамматик можно доказать нераспознаваемость довольно обширного круга свойств. Этим, а также доказательством неразрешимости в классе Б-грамматик некоторых проблем иного типа мы сейчас и займемся. Впрочем, нам удобнее будет говорить не о Б-, а об ОБ- грамматиках (хотя все результаты останутся справедливыми и для Б-грамматик; соответствующие видоизменения конструкций очевидны, и упоминать о них мы не будем). Нам понадобится одно вспомогательное понятие, относящееся к машинам Тьюринга, и лемма, связывающая произвольные ДЭ-машины с ОБ-грамматиками. Пусть М — Э-машина с входным алфавитом V, рабочим алфавитом W и множеством состояний Q. Положим Z= FUWUQU{#, ф,У}, где V —символ, не входящий в l/(JWUQU{#, ф}. Ситуацию (qa, х', х", X', X") машины М назовем правильной, если х'х" = фхФ и Х'Х" = фХ для подходящих xetf*, ХбГ. Записью правильной ситуации (qa, х', х", X', X") бу- *) Если бы такого числа не нашлось, то R имел бы конечное дополнение и, значит, был бы НС-языком.
§ 8.4] ПРОБЛЕМЫ, СВЯЗАННЫЕ С Б-ГРАММАТИКАМИ 269 дем называть цепочку qax'Wx"X'SjX". Для произвольного вычисления С = (S0, Su ..., Sn) машины М будем называть его протоколом цепочку я(С) = j(S0) %{S\)... . ..j(Sn), где %{Si) — запись ситуации Sj. Множество всех протоколов машины М будем обозначать через П(М), дополнение ЩУИ) до Z* — через Ц'(М). Лемма 8.5. Для произвольной JXB-машины М множество П'(УИ) есть линейный язык, и для всякой ЛЭ-ма- шины М можно построить линейную ОБ-грамматику, порождающую Il'(M). Предварительно докажем другую лемму. Лемма 8.6. Пусть Э-машина М имеет инструкции только типов (i) и (iii) и для любой ее непустой входной цепочки х существует самое большее одно [х, у]-вычис- ление, причем это вычисление происходит в такой последовательности: сначала читается символ ф на входной ленте, затем (если \х\ ^ 1) —первый символ входной цепочки х, затем создается рабочая ячейка, и далее шаги типов (i) и (iii) чередуются через один, пока не будет прочитан последний символ цепочки х; после этого машина либо сразу останавливается, либо, прежде чем остановиться, делает еще один или два шага типа (iii). Пусть, кроме того, входной и рабочий алфавиты машины М представлены соответственно в виде V= V U V, W = W'\}W, где V П V'= W'f] W = 0. Для произвольных двух языков Li <= V'V*, Lt <=, WW* обозначим через LM(Ll,L2) множество всевозможных цепочек ху таких, что xeL), у е Z.2 и не существует [х, у]-вычисления машины М. Тогда для любых двух А-грамматик Г) и Гг таких, что L(ri)s V'V*, £(Гг)е WW*, можно построить линейную ОБ-г рамматику, порождающую LM(L(ri), ЧГ2)). Доказательство леммы 8.6. Поскольку для данной входной цепочки х самое большее при одном значении у, которое мы будем обозначать у(х), может существовать [х, г/]-вычисление, ясно, что цепочка ху, гдехе1(Г)), j/eL(r2), принадлежит LM(L(T]), £(Г2)) тогда и только тогда, когда выполняется одно из четырех условий: (а) цепочки у(х) не существует; (б) \у\< <1\у(х)\; (в) |#| >|#(*) |; (г) существует такое i= 1, ..., min(|*/|, |*/(*)|), что г'-е слева символы цепочек у и у(х) различны. Дизъюнкция этих условий
270 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 равносильна дизъюнкции (б') V (в') V (г'), где (б') = s=(a)V(6), (в') = (a)V(B), (г') = (a) V(r). Иначе говоря, £М(МГ,), Z.(F2))=Z/UZ."UZ/", где U, L", U"— множества цепочек ху, xeL(Ti), j/eL(r2), удовлетворяющих (б'), (в') и (г') соответственно. Поэтому ввиду эффективной замкнутости класса линейных языков относительно объединения (стр. 170) нам достаточно указать способ построения линейных ОБ-грамматик для языков U, L" и U". В силу теорем 5.2 и 5.8 это равносильно построению однодорожечных МП-машин, допускающих указанные языки, по конечным автоматам М\ и М2, допускающим L(Ti) и /-(Гг) соответственно. Машина М' для U строится следующим образом: если на ее входной ленте записана цепочка ху, где x^V'V*, y^WW*, то сначала она работает на входной ленте, как Ми а на рабочей — как М; прочтя х, она начинает работать на входной ленте, как М2, а на рабочей после каждого «входного» шага уничтожает одну ячейку; есАда после прочтения ху еще останутся рабочие ячейки, то машина уничтожает и их, после чего переходит в заключительное состояние; в противном случае после прочтения ху машина «ломается». Машина М" для L" строится аналогично. Машина М"' для U" работает так. Имея на входной ленте ху, где лё W*, г/е WW*, она сначала работает так же, как М', но потом, не .дойдя до конца х, переходит «в другой режим»: на входной ленте продолжает работать так же, а на рабочей не делает ничего. При этом она «запоминает» тот символ Ъ, который должна была бы записать на рабочей ленте машина М (или М') сразу после прочтения содержимого той входной ячейки, которую М"' обозревает к началу работы в новом режиме; пусть к этому времени рабочая лента состоит из i ячеек (возможно, t = 0) *). Прочтя х, машина М"' снова начинает работать так же, как работала с этого момента М', пока не уничтожит всю рабочую ленту. Если к этому моменту входная цепочка будет прочитана целиком, машина ломается. В противном случае входная головка будет обозревать в данный момент г —j- 1-й слева символ цепочки у, и очередной шаг ) Разумеется, числа i машина «знать» не может.
§ 8.1) ПРОБЛЕМЫ, СВЯЗАННЫЕ С Б-ГРАММАТИКАМИ 271 будет состоять в следующем: как и на предыдущих шагах, машина имитирует работу М2, но одновременно проверяет, совпадает ли обозреваемый входной символ с запомненным ранее символом Ь; если да — она ломается; если нет — продолжает работать просто как М2, и если у окажется «М2-допущенной», переходит в заключительное состояние. Доказательство леммы 8.5. Пусть R — множество записей всевозможных ситуаций данной ДЭ-ма- шины М. Ясно, что R есть Л-язык; соответствующая А-грамматика строится без всякого труда. Обозначим через Т множество всевозможных цепочек вида ху, где х, у е R и ситуация с записью у не является непосредственно достижимой из ситуации с записью х. Ввиду очевидного равенства П'(М) = R*TR* U CZR+, теоремы 5.4 и замечания на стр. 170 нам достаточно построить линейную ОБ-грамматику, порождающую Т. Будем говорить, что инструкция Ж машины М применима к "ситуации S = {q,x',ax",X',AX"), если левая часть Ж содержит q и при этом: если Ж — qb-+q', то b = а, если Ж = Bq-*q', то В = А; если Ж — q-+ q'Jl, то X' Ф Л; если Ж = q -+ q'U, то Я" ф Л. Будем обозначать через Я(Ж) множество записей всевозможных ситуаций машины М, к которым применима инструкция Ж, и через Ro — множество записей всевозможных ситуаций М, к которым неприменимы никакие инструкции. Как Ro, так и все -/?(Х) являются А-языками, и построение соответствующих А-грамматик очевидно. При этом Т =ь [R0 П 7"] U U [R (Ж) П Т], где объединение берется по всем инструкциям М. Поскольку R0 П Т- = = RoR, достаточно указать способ построения линейной Б-грамматики для каждого из языков к(Ж)Г\ Т. Ввиду детерминированности машины М к- каждой данной ситуации может быть применима только одна инструкция. Поэтому, если x^Rffl) и у <= R, то ситуация 5' с записью у тогда и только тогда не является непосредственно достижимой из ситуации 5 с записью х, когда S' н е получается из S применением инструкции Ж. А отсюда по лемме 8.6 вытекает, что достаточно построить Э-машину М, удовлетворяющую условию этой леммы и такую, что для цепочек х е R (Ж) и 1/еЛ тогда и только тогда существует [х, ^-вычисление
272 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 машины М, когда ситуация с записью у получается из ситуации с записью х применением инструкции Ж. При этом возможны пять случаев, соответствующих возможным типам инструкций Ж. Мы рассмотрим случай Ж = Aq —*q', предоставив остальные (вполне аналогичные) читателю. Машина М будет в этом случае, имея на входной ленте цепочку qx'S x" X'BSАХ" (где в силу выбора типа инструкции А е W, В е W U {#}), работать следующим образом. Сначала она читает q и пишет на рабочей ленте q'. Затем до прочтения В просто переписывает входные символы на рабочую ленту. Прочтя В, она пишет на рабочей ленте V. (Подчеркнем, что это делается «недетерминированным образом»: машина может записать V после прочтения любого символа из W U {ф}, но если в следующей входной ячейке не окажется V, то произойдет «поломка».) Затем, прочтя на входной ленте V, она пишет на рабочей В. Далее, прочтя А, пишет на рабочей ленте символ, который на входной непосредственно следует за А (опять «недетерминированным образом»: символ пишется наугад, и в случае несовпадения его со следующим входным символом машина ломается). Далее, читая X", машина после прочтения каждого символа пишет на рабочей ленте (как описано выше) тот символ, который на входной следует за прочитанным, а прочтя последний символ из Я", переходит в специальное состояние q (если она, «не угадав», что данный символ последний, вместо перехода в q запишет что-нибудь на рабочей ленте, то на следующем шаге будет прочтен граничный маркер*) и произойдет поломка). После этого читается граничный маркер и наступает заключительное состояние. Выполнение для М условия леммы 8.6 очевидно. Итак, лемма 8.5 доказана. Пусть теперь М — произвольная Э-машина. Обозначим через R{M) множество записей всевозможных ситуаций М, через R\(M) — множество записей всевозможных начальных ситуаций М и через Rz(M)—множество записей всевозможных ситуаций М, имеющих вид (qf, фх, ф, Л, фу), где <?/ — заключительное состоя- *) Мы можем, разумеется, считать граничные маркеры М отличными от #.
§ 8.41 ПРОБЛЕМЫ, СВЯЗАННЫЕ С Б-ГРАММАТИКАМИ 273 ние М. Положим, кроме того, F (М) = II (М) П [/?, (М) (R (М)У R2 (М)]; иначе говоря, F(M) —это множество протоколов тех вычислений машины ' М, с помощью которых значения аргумента вычисляемой ею функции / переводятся в значения самой /. Поскольку множество CZF(M) (обозначение Z введено на стр. 268) представимо в виде CzF(M) = li'{M)^Cz[Rx{M){R{M)TR2{M)l a R\(M) и R2(M) суть А-языки, причем А-грамматики для них строятся очевидным образом, из только что доказанной леммы непосредственно вытекает следующая Лемма 8.7. Для произвольной ДЭ-машины М множество CZF(M) есть линейный язык, и для всякой ДЭ-машины М можно построить линейную ОЪ-грамматику, порождающую CZF(M). Нам понадобится еще следующая простая конструкция. Пусть G — {g\, ..., gn, ■■■} — счетное множество символов и а, Ъ — произвольные символы. Для каждой цепочки ® = gii ■ • • gis положим X(cd) = W+'>6 ... ... bal+'sb; кроме того, положим Я (Л) =bab. Для каждого языка L в произвольном словаре, содержащемся в G, положим \(L) = (Х(со) |со е!}. Мы можем допустить, что для каждой рассматриваемой нами Э-машины М соответствующий словарь Z содержится в G, и рассмотреть язык Н(М) == X(F(M)). Имеет место Лемма 8.8. Для произвольного словаря V, содержащего а и Ъ, и для произвольной ДЭ-машины М множество CVH(M) есть линейный язык, и для всякого словаря V э {а, Ь} и всякой ДЭ-машины М можно построить линейную ОЪ-грамматику, порождающую CVH(M). Доказательство. Имеем CVH{M) =Cv(k(Z))*{J . U ((K(Z))* — Н{М)). Поскольку %(Z) конечно, для первого члена объединения по теореме 5.4 строится ОА-грамматика; второй член порождается линейной ОБ-грамматикой, схема которой получается из схемы соответствующей грамматики для CZF{M) заменой в каждом правиле каждого вхождения каждого основного символа gi вхождением цепочки bal+ib.
274 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. Теперь для некоторых инвариантных свойств ОБ- грамматик легко доказать нераспознаваемость. Теорема 8.4. Пусть V — произвольный словарь, содержащий не менее двух символов, Е — произвольное непустое множество натуральных чисел и а#— свойство языка в словаре V иметь дополнение (до V*), число элементов которого конечно и является элементом Е. Тогда as нераспознаваемо в классе линейных ОЪ-грамматик и тем более в классе всех ОЪ-грамматик с основным словарем V. Доказательство. Для произвольной ДЭ-машин М мощность множества Н(М) равна мощности F(M)f а эта последняя — мощности области определени вычисляемой данной машиной функции. Поэтому к проблеме распознавания аЕ сводится проблема распознавания свойства машины М вычислять функцию *),область определения которой имеет конечную мощност являющуюся элементом Е. Следствие 1. Следующие свойства языков нераспознаваемы в классе линейных (и тем более всех) ОЪ-грамматик с заданным основным словарем мощности, большей или равной 2: а) иметь конечное дополнение; б) иметь дополнение, состоящее в точности из заданного конечного числа элементов (в частности, пустое) . Действительно, для пункта а) достаточно взять в качестве Е множество всех натуральных чисел, для пункта б) — множество, состоящее из одного числа. Следствие 2. Не существует алгоритма, позволяющего для любой ОЪ-грамматики (или даже для любой линейной ОЪ-грамматики) с данным основным словарем мощности, большей или равной 2, распознать, эквивалентна ли она заданной грамматике, порождающей V*. Тем более неразрешима общая проблема эквивалентности ОЪ-грамматик. Следствие 3. Не существует алгоритма, позволяющего для любых двух ОЪ-грамматик П и Г2 с дан- *) Точнее следовало бы говорить о машинах с некоторым фиксированным входным алфавитом и о проекции функции на некоторый фиксированный алфавит (ср. сноску на стр. 264).
§ s.ij проблемы, связанные с б-грамматиками ■ 275 ньш основным словарем мощности, большей или равной 2, распознать, содержится ли L(Ti) в L(T2). В самом деле, по предыдущему следствию такой алгоритм невозможен даже для фиксированной грамматики Гь если она порождает V*. Замечание. Ограничение на мощность словаря в теореме 8.4 и ее следствиях существенно (см. упражнение 8.16). Для доказательства нераспознаваемости ряда других свойств мы воспользуемся следующей теоремой. Теорема 8.5. Пусть U, V — словари такие, что U Л V = 0, n(V):ss2, и Т — класс ОБ-грамматик, содержащий все линейные ОЪ-грамматики и такой, что соответствующий класс j?(i7~) эффективно замкнут относительно объединения и относительно умножения слева на U* и справа на V*. Тогда всякое свойство языков, нетривиальное в 3?(3~и), справедливое для U*V* и сохраняющееся при операциях пересечения с А-языком и проектирования, нераспознаваемо в STuw- При этом сохранение свойства при проектировании может быть заменено более слабым требованием: если L s С/*', у е V* и язык Ly обладает данным свойством, то им обладает и язык L. Доказательство. Пусть а — свойство языков, удовлетворяющее описанным условиям. В силу одного из этих условий должен существовать язык L0ej? (&~u), не обладающий свойством а. Для произвольного языка L^.S(Tv) положим L' = U*L U L0V*. Если при этом L = V*, то L' — U*V*, так что а справедливо для L'. Если же L Ф V*, то, фиксировав цепочку уеУ* — L и допустив, что свойство а имеет место для U, получим ввиду условий, наложенных на а, что этим свойством должен обладать и язык L' Л U*y = L0y, а значит, и Upu{L0y) = L0, что неверно. Таким образом, L' обладает свойством а тогда и только тогда, когда L = V*. А это позволяет заключить, — поскольку L' строится по L эффективно, — что проблема распознавания совпадения языка класса 3?(3~у) с V* сводится к проблеме распознавания а в классе &~v\jy Но свойство совпадать с V* нераспознаваемо в &~v (следствие 1 из теоремы 8.4, пункт б)).
276 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 Следствие. Следующие свойства языков нераспознаваемы в классе ОВ-грамматик с заданным основным словарем мощности, большей или равной 4: (а) быть однозначным Ъ-языком; (р) быть детермини рованным языком (т. е. допускаться детерминированной МП-машиной); (у) иметь бесконтекстное дополнение; (£) быть ОА-языком; (е) быть линейным языком; (£) быть металинейным языком; (ii) быть итерационно- линейным языком; (0) быть ОАЕВ-языком. Свойства (а)— (ii) нераслознаваемы также в классе ОБ-ОАЕВ- грамматик, свойства (а)— (£) и (0)— в классе итерационно-линейных грамматик, свойства (а)— (е) — в классе металинейных грамматик, свойства (а)— (б) — в клас се линейных грамматик {при том же ограничении на словарь). В самом деле, все перечисленные классы грамматик дают классы языков, эффективно замкнутые относи тельно нужных операций (теорема 4.8, замечания на стр. 170, лемма 5.1); справедливость названных свойств для U*V* очевидна, сохранение свойства (б) при нужных операциях обеспечивается теоремой 5.4, сохранение свойств (е) — (6) — замечаниями 2 и 3 в конц § 5.4, нетривиальность свойств (а) — (6) в соответствующих классах при (х((У)^2 — примерами из § 4.4 (для (а) и (Р)), простой модификацией примера 2 из § 4.3*) (для у), примером к следствию из теоремы 5.7 (для (б)), примерами из упражнений 5.26, 5.28 (для (е) — (б)). Свойства (а) и (Р) при проектировании могут не сохраняться, но удовлетворяют указанному в конце формулировки теоремы 8.5 более слабому требованию (упражнение 4.35). То же верно, как нетрудно убедиться, для (y). Сохранение свойства (а) при пересечении с А-языком вытекает из упражнения 5.17, а), свойства (р) — из теорем 5.5 и 5.3, свойства (y) — из теорем 4.8 и 5.4. Замечание. Утверждения следствия из теоремы 8.5 справедливы для любого словаря мощности, большей или равной 2 (упражнение 8.11). В случае одноэлементного словаря свойства (а)—(6) тривиальны. *) Именно, нужно убрать разделительный символ Ь.
§ 8.4] ПРОБЛЕМЫ, СВЯЗАННЫЕ С Б-ГРАММАТИКАМИ 277 Другие примеры нераспознаваемых в классе Б-грам- матик свойств и отношений см. в упражнениях 8.12, 8.13, 8.15, 8.22. В заключение мы рассмотрим некоторые проблемы иного характера (второго из двух типов, указанных в § 8.1), а именно проблемы распознавания замещаемо- сти, взаимозамещаемости и конфигураций. Мы покажем, что они неразрешимы уже для линейных языков; более того, для подходящих линейных языков неразрешимы и соответствующие частные проблемы. Укажем сцособ построения этих языков. Пусть М — произвольная ДЭ-машина, в рабочем алфавите которой выделен символ а0 такой, что все значения вычисляемой машиной М функции f являются цепочками в {cto}. Множество всех тех п, для которых а£ суть значения f, будем обозначать Ем- При надлежащем выборе М мы можем, очевидно, получить в качестве Ем произвольное рекурсивно перечислимое множество. Будем, кроме того, считать, что машина М имеет единственное заключительное состояние <7о, причем оно отлично от начального и не встречается в левых частях инструкций; понятно, что класс множеств Ём при таком ограничении не сужается. Положим далее V = {а, Ь) и построим по лемме 8.8 линейную ОБ-грамматику IV, порождающую язык СуЯ(тИ). Рассмотрим произвольную цепочку ы^ЦЯг{М)) (см. стр. 272, 273). Эта цепочка единственным образом представляется в следующем виде: ?Л?о)М#л:Уф)Ц#)М#), гДе х и У~ Цепочки во входном и рабочем алфавитах М соответственно; обратно, всякая цепочка такого вида принадлежит K(R2(M)). Обозначим через Ql(M) и Q2(M) соответственно множества всевозможных цепочек вида Mft)M#*V#V)c и bk+\(#xV$\)k(#)\(y)bb, где х, у — цепочки во входном и рабочем алфавитах М соответственно; k = \y\; с — символ, отличный от а и Ъ. Положим Si(M) = K(Rl{M){R{M)Y)Q'(M) (1 = 1,2) и U (М)=[Л (Rl (M) (R(M))* R2 (М))-Н (М)] ЪЬ U Sl(M). Ясно, что S{(M) — ОА-язык, a S2(M) — линейный язык; соответствующие грамматики строятся без труда. Поэтому
278 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 лемма 8.8 дает возможность по машине М построить линейные ОБ-грамматики, порождающие Ll(M) и L2(M) Непосредственно ясно, что в языке Ll(M) любая цепочка вида X(#)[X(a0)]ft66, k = О, 1, ..., замещаема на символ с, в то время как этот последний замещаем на l{^)[k(aQ)]kbb тогда и только тогда, когда никакая •цепочка из Н(М) не оканчивается вхождением к(ф)[К(а0)]кЬЬ — иначе говоря, когда а* не является значением f. Что же касается языка L2(M), то для нег принадлежность а* множеству значений f равносильна замещаем ости bk+4 на Л (<?о) - Заметим еще, что а) кодирование К можно произвести так, чтобы было Х(</о) = = baab; б) в Ll{M) символ с можно с тем же результатом заменить цепочкой bbbb. Подобрав машину М так, чтобы множество значений f было нерекурсивным, т. е. чтобы не существовало алгоритма, позволяющего по числу k узнать, принадлежит ли оно этому множеству*), мы получаем конкретные линейные ОБ-грамматики 1\ с основным словарем {а,Ь,с}, Г] и Гг — обе с основным словарем {а, Ь} — такие, что не существует алгоритмов, позволяющих для произвольной цепочки xe{a,i}' распознать: а) является ли х конфигурацией языка L(Ti) с результирующим с; б) является ли х конфигурацией первого ранга языка *) Таким свойством будет обладать, например, следующая ДЭ-машина (ниже описывается, как обычно, только принцип ее работы). Входной алфавит машины есть {а, &}. В начале работы машина переписывает входную цепочку х на рабочую ленту; затем она проверяет, является ли эта цепочка кодом в алфавите {а, Ь) некоторой Э-машины М' (см. стр. 258—259), и если да, то переписывает ее "еще раз в другой зоне рабочей ленты (если нет, машина ломается) и далее работает в этой зоне, как М', используя «первый экземпляр» .v на рабочей ленте для «получения инструкций» (это значит, что перед каждым очередным преобразованием «второго экземпляра» головка должна найти в «первом экземпляре» код той инструкции, которую следует применить на данном шаге). Если этот процесс окончится вычислением значения соответствующей функции от х, то все содержимое рабочей ленты заменяется однобуквеиным кодом М' в алфавите {а0}, после чего машина останавливается, перейдя предварительно в 'заключительное состояние; в противном случае машина работает вечно. Таким образом, цепочка а0 тогда и только тогда принадлежит множеству значений функции, которую вычисляет построенная машина, когда эта цепочка есть код некоторой самоприменимой машины М'. Остается воспользоваться леммой 8.1.
УПРАЖНЕНИЯ 279 L(Fi) с результирующим с; в) замещаема ли цепочка bbbb на х относительно £(П); г) замещаема ли х на baab относительно £(Гг); д) являются ли х и bbbb вза- имозамещаемыми относительно L (Г[). По поводу возможности уменьшить здесь мощности словарей см. упражнения 8.19 и 8.20, по поводу распознавания конфигураций высших рангов — упражнение 8.21. Упражнения 8.1. Закодировав всевозможные грамматики, как в доказательстве теоремы 2.4, назовем грамматику Г самопорождающей, если наименьший (в лексикографическом порядке) из ее кодов принадлежит L(T). Показать, что самопорождаемость нераспознаваема в классе Г *). [Указание. Показать, что множество наименьших кодов несамопорождающих грамматик не порождается никакой грамматикой.] 8.2. Показать, что следующие свойства грамматик нераспозна-, ваемы в классе Г: а) иметь ограниченное растяжение (т. е. емкость,' мажорируемую линейной функцией); б) быть грамматикой без растяжения. 8.3. Можно ли перенести результат упражнения 8.1 на класс НС? 8.4. а) Пусть £-о — произвольный НС-язык, L — произвольный непустой НС-язык и 3? — класс языков, содержащий L0 U L и не содержащий ни одного языка вида L0U (L — {*}), где х е L. Показать, что свойство принадлежать Я? нераспознаваемо в классе НС. б) То же с заменой языков L — {х} на языки вида L — U, где L' — непустое конечное подмножество L. 8.5. Показать, что в классе НС нераспознаваемо свойство принадлежать 9?тп (НС). 8.6. Язык L в словаре V имеет нетривиальную заме- Щаемость, если найдется хотя бы одна пара цепочек х, у е V*, х ф у, такая, что х является подцепочкой некоторой цепочки из L и при этом х =$> у. Показать, что свойство иметь нетривиальную заме- V, L щаемость нераспознаваемо в классе НС. 8.7. Усилить лемму 8.1 и теорему 8.2, показав, что следующие множества не могут быть рекурсивно перечислимыми: а) множество кодов несамопркменимых Э-машин; б) множество кодов таких ДЭ-машин, что вычисляемые ими Функции обладают некоторым свойством, справедливым для нигде че определенной функции, но не для всех частично рекурсивных Функций. 8.8. Используя упражнение 8.7,6), показать, что следующие множества не могут быть рекурсивно перечислимыми: *) Г — класс всех грамматик (стр. 30),
280 НЕРАЗРЕШИМЫЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ [ГЛ. 8 а) множество кодов грамматик, обладающих некоторым инвариантным и нетривиальным в классе Г свойством, справедливым для грамматик, порождающих пустой язык; б) множество кодов НС-грамматик, для которых порождаемые ими языки принадлежат некоторому классу, удовлетворяющему условию леммы 8.4 или теоремы 8.3 (но не дополнение к такому множеству!). 8.9. Назовем свойство языков в словаре V «булевски перечисл.и- мым», если оно представимо в виде B^V... V BjfeV • • •, где В* — булевы свойства, занумерованные с помощью некоторого эффективного кодирования булевых выражений (от переменных Xi, .. ., Хп ..., где Х„ означает «one L-»; а>п — цепочка с номером п, см. стр. 267), и {ii ik, ■ ■ ■} — рекурсивно перечислимое множество натуральных чисел. Показать, что если £Г— класс грамматик такой, что соответствующий класс i?(£7~) содержит вместе с каждым конечным языком все его НС-надъязыки и множество кодов НС-грамматик из £Г рекурсивно перечислимо, то свойство быть НС-языком, принадлежащими^), булевски перечислимо. [Указание. Использовать упражнение 8.8,6).} 8.1-0. Опираясь непосредственно на лемму 8.8, доказать, что в классе линейных языков нераспознаваемы свойства быть ОА-языком и иметь бесконтекстное дополнений 8.11. Показать, что все результаты следствия из теоремы 8.5 справедливы для любого словаря мощности, большей или равной 2. [Указание. Установить сводимость проблем распознавания свойств' (а) — (9) для словаря мощности 4 к соответствующим проблемам для словаря мощности 2.] 8.12. Доказать нераспозиаваемость в классе By, где V — словарь мощности, большей или равной 2, следующих свойств языков: а) порождаться Б-грамматикой, активная емкость которой не превышает заданного числа k; б) быть ОАЕ-языком; в) удовлетворять условию х =Ф у, где х и у — произвольные v, L фиксированные различные цепочки в V; г) иметь заданную конфигурацию заданного ранга с заданным результирующим; д) содержать бесконечный ОА-язык [Ginsburg 1966, лемма 4.3.4]. 8.13. Доказать нераспознаваемость в классе Бу, где V — словарь мощности, большей или равной 2, следующих отношений между языками L\ и L2: а) пустоты пересечения L, Г) Li; б) бесконтекстности пересечения L, П L2; в) существования конечного автомата с выходом (упражнение 5.8), переводящего L\ в бесконечное подмножество L2 [Ginsburg 1966, теорема 4.3.2]. 8.14. Доказать, что для словаря V мощности, большей или равной 2, невозможен алгоритм, позволяющий для любых двух систем п цепочек х\ хп и у\ уп в V узнать, существует ли такая (непустая) последовательность чисел h ik ('i, ..., ik = = 1, ..., n), что Xit... xik= ytr- ■ f/.fc (теорема Поста о проблеме соответствий; см. [Post 1946. Марков 1954]).
УПРАЖНЕНИЯ 281 [Указание. Доказать нераспознаваемость в классе линейных ОБ-грамматик с основным словарем {а, Ь, с, d, e) свойства языка иметь непустое пересечение с La{d, е}*, где L0 = {хсх\х е {а, Ь}*}. При этом можно рассуждать по аналогии с доказательством теоремы 8.5.] 8.15. Используя упражнение 8.14, доказать нераспознаваемость однозначности грамматики в классе Бу, где Ц(V) ^2. 8.16. Указать алгоритмы, распознающие для любых ОА-грамма- тик (а тем самым и для любых ОБ-грамматик с одноэлементным основным словарем — см. замечание к теореме 4.6) свойства и отношения, перечисленные в следствиях из теоремы 8.4. 8.17. Показать, что если L — рекурсивный язык, то для любой цепочки х дополнения к множествам ФХЩ и ^(L) (см. стр. 318) рекурсивно перечислимы. 8.18. Пусть R — рекурсивное множество точек целочисленной плоскости (т,п) (т,п = 0, 1, ...'), проекция которого на ось т не рекурсивна. Положим II=»{66an+I|n = 0, 1, ...}U {ат+1Ьап+1\(т, п) <£ R}; L2 = {(bam+1b)p (b2an+lb2)q\ (m, n) <£ R; p, q = 1, 2, ...} U u{(6am+I6)2p(6V+I62)1(m,«)e«; p,q=\, 2,...}. Показать, что: а) множества (Dft6(Li) и 4?bb{L{) не рекурслвны; б) для любой цепочки х е [а, Ь}* множества Фх(£2) и ^(/.г) рекурсивны, однако Ф(£г) и ^(/.г) не рекурсивны. [Гладкий 1963 (б)]. 8.19. Показать, что для любого рекурсивного языка L в одноэлементном словаре Ф(Ь) и Ч'(Ь) рекурсивны [Гладкий 1963 (б)]. 8.20. Построить линейный язык в двухэлементном словаре с неразрешимой проблемой распознавания конфигураций. 8.21. Указать примеры линейных языков, для которых не существует алгоритмов, позволяющих по заданной цепочке х распознать: а) является ли х конфигурацией заданного ранга г (для каждого г — свой язык); б) является ли х конфигурацией. [Лучкин 1966]. [Указание. Использовать конструкцию упражнения ПИ. 7.] 8.22. Показать, что не существует алгоритма, позволяющего для любой Б-грамматики Г найти наименьшее число вспомогательных символов Б-грамматики, эквивалентной Г. [Указание. Использовать упражнение 4.21.]
ПРИЛОЖЕНИЕ I СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ СИНТАКСИЧЕСКОГО ПОДЧИНЕНИЯ В современной лингвистике используются различные способы описания синтаксической структуры предложения, из которых наиболее употребительны два — описание с помощью систем составляющих и описание с помощью деревьев синтаксического подчинения. Мы дадим здесь краткое изложение этих способов, а также-правил перехода от одного способа к другому. § П1.1. Системы составляющих Пусть х — произвольная непустая цепочка в словаре V. Множество С отрезков цепочки х называется системой составляющих этой цепочки, если оно удовлетворяет следующим двум условиям: I. С содержит отрезок, состоящий из всех точек цепочки х, и все одноточечные отрезки я. II. Любые два отрезка из С либо не пересекаются, либо один из них содержится в другом. Элементы С мы будем называть составляющими. Одноточечные отрезки будут называться точечными составляющими, отрезок, состоящий из всех точек цепочки, — полной составляющей; полную и точечные составляющие мы будем иногда называть т р и- виальными. Для наглядного изображения системы составляющих можно пользоваться следующим простым способом: заключать каждую нетривиальную составляющую в скобки, причем левую и правую скобки, отвечающие одной составляющей, помечать одной и той же меткой так, чтобы разные пары скобок были помечены разными метками;
§П.1.П СИСТЕМЫ СОСТАВЛЯЮЩИХ 283 в качестве меток можно использовать хотя бы натуральные числа. Можно, впрочем, обойтись и без меток, так как в силу пункта II определения системы составляющих для каждой левой скобки можно однозначно указать соответствующую ей правую и обратно (упражнение Ш.1). Мы будем пользоваться скобочным изображением как с метками, так и без меток — где как удобнее. Пример. Две разные системы составляющих (из многих возможных — см. упражнение Ш.2) одной и той же цепочки babcadebaccdabab можно изобразить так- (1) {{{ba)b)ca{deb)){{acc){d{ab)){ab))\ 12 3 3 2 4 4156 67 8 .8 7.9 .95 - (2) Ь (а (Ь (с (ad {е {ba {ее) d) а))) ЬаЬ)). 1234 56 776543 21 Если цепочка интерпретируется как предложение естественного языка, то система составляющих может быть использована в качестве способа выражения информации о его синтаксической структуре (или,.как обычно говорят, способа изображения синтаксической структуры предложения). Именно, такая информация может представлять собой список ел овосочета? ний, т. е. тех «кусков» предложения, которые в каком? то интуитивном смысле являются «синтаксически связными». Эмпирические соображения позволяют сделать допущение, что словосочетания, во-первых, образуют .отг резки и, во-вторых, не имеют «частичных пересечений», т. е. удовлетворяют пункту II определения системы составляющих. Таким образом, нетривиальные составляющие— это (при подходящем выборе системы составляющих!) как раз словосочетания. (Тривиальные добавляются для придания системе формальной законченности.) Пример. Предложение (3) Онегин, добрый мой приятель, родился на брегах Невы допускает следующую «естественную» систему составляющих: (4) {Онегин, {добрый {мой приятель))), {родился {на {брегах Невы).)).
284 . СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I Аналогичную роль играют составляющие в искусственных формализованных языках, используемых в математике и в программировании. Так, формула логики предикатов (5) Vx{F{x)&-[{G(x)VlH{x))) допускает следующую «естественную» систему составляющих (мы записываем ее с помощью квадратных скобок, так как круглые входят здесь в словарь языка): [4x][([F(x)]&[l[([G(x)]vn[H-(x)]])]])]. 1123 3456 6 78 87 54 2 Та же формула в бесскобочной записи (50 V* & Fx ~] V Gx ~] Нх допускает «естественную» систему составляющих [V*][&[f*]n[V[Gx] ["№]]]]]• 1 123 34 5 6 67 8 87542 Среди многочисленных систем составляющих, которые имеет предложение естественного языка, лишь весьма немногие «правильны», т. е. адекватно отражают синтаксическое строение предложения. При этом понятие «правильной» системы составляющих не абсолютно— оно зависит от соглашений лингвистического характера, отражающих определенные содержательные представления о синтаксической структуре предложения данного языка. Так, из двух возможных систем составляющих для одного и того же предложения (6) (Все (эти известия)) (произвели (на меня) (удручающее впечатление)) и (6') (Все (эти известия)) произвели (на меня) (удручающее впечатление) первая отвечает традиционному представлению о подлежащем и сказуемом как главных членах предложения, вторая — более новому взгляду на подлежащее и дополнения как равноправно подчиненные сказуемому «актанты». При фиксированной системе соглашений предложение также может иметь несколько «правильных» систем
§ n.i.il СИСТЕМЫ СОСТАВЛЯЮЩИХ 285 составляющих. Нередко эти системы соответствуют различным толкованиям смысла предложения. В лингвистике такое явление — наличие у одного предложения двух или более правильных «синтаксических анализов» — известно под названием синтаксической омонимии*). Например, предложение (7) Геологи и студенты из Тюмени уехали в Москву допускает по меньшей мере три толкования: 1. «Тюменские геологи и тюменские студенты уехали откуда-то (не обязательно из Тюмени) в Москву». 2. «Какие-то (не обязательно тюменские) геологи и тюменские студенты уехали откуда-то (не обязательно из Тюмени) в Москву». 3. «Какие-то (не обязательно тюменские) геологи и какие-то (не обязательно тюменские) студенты уехали из Тюмени в Москву». Этим толкованиям отвечают соответственно следующие системы составляющих: (8) ({Геологи и студенты) (из Тюмени)) (уехали (в Москву)). (9) (Геологи и (студенты (из Тюмени))) (уехали (в Москву)). (10) (Геологи и студенты) ((из Тюмени) уехали (в Москву)). Заметим, что синтаксическая омонимия нередко встречается и в таких предложениях, которые обычно не кажутся нам двусмысленными, поскольку мы в состоянии однозначно выбрать нужное толкование, опираясь на имеющиеся у нас сведения о действительности. Однако при автоматическом синтаксическом анализе такие случаи синтаксической омонимии также должны учитываться. Рассмотрим, например, предложения: (11) Гастроли балета на Кавказе проходят успешно и (12) Гастроли балета на льду проходят успешно. Если носитель русского языка, научившийся строить системы составляющих и понимающий смысл этих *) Что касается искусственных формализованных языков, то они обычно строятся так, чтобы синтаксической омонимии не было.
286 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I предложений, получит задание указать для них «правильные» системы составляющих, то он, надо полагать, без труда построит следующие системы: (а) ((Гастроли балета) (на Кавказе)) (проходят успешно), (б') (Гастроли (балета (на льду))) (проходят успешно). Однако такой анализ существенным образом опирается на знание некоторых внеязыковых фактов (имеет ся нечто, называемое «балет на льду», но нет ничего называемого «балет на Кавказе»; понятие «гастроли на Кавказе» имеет смысл, а «гастроли на льду» — нет). Человек, не знающий этих фактов, должен будет допустить для первого предложения еще одну систему (а') (Гастроли (балета (на Кавказе))) (проходят успешно), аналогичную (б'), а для второго — систему (б) ((Гастроли балета) (на льду)) (проходят успешно), аналогичную (а). Так же будет действовать, разумеется, и машина (вернее, алгоритм синтаксического анализа). Наконец, следует заметить, что различные «правильные» системы составляющих (при фиксированной системе лингвистических соглашений) могут и не соответствовать каким-либо ощутимым различиям в толковании смысла. Примером могут служить следующие две системы составляющих: (13) Мы увидели (древние (стены города)); (14) Мы увидели ((древние стены) города). Введем теперь следующее определение. Если А и В — составляющие некоторой системы С то выражение «В непосредственно вложено в Л» будет означать, что Л с В и в С нет составляющей, вложенной в А, содержащей В и отличной от Л и от В. Будем писать в этом случае BczczA или AzdzdB.
§ n.i.n СИСТЕМЫ СОСТАВЛЯЮЩИХ 287 Нетрудно видеть (упражнение Ш.З), что граф (С; =э =э) является деревом, корнем которого служит полная составляющая и висячими узлами — точечные составляющие. Это дерево- называется деревом составляющих; его графическое изображение может служить еще одним наглядным способом записи системы составляющих. Например, система составляющих (4) предложения (3) представляется следующим деревом: Онегин, добрый мой приятель, родился на брегах Невы Онегин, добрый мой приятель Онегин добрый мой приятель добрый мой приятель I родился родился на на 1 на 1 брегах Невы брегах Невы 1 брегах Невы 1 1 брегах 1 Невы мой приятель Рассматривая составляющую как узел дерева составляющих, мы можем определить ее высоту, ранг и степень, как на стр. 18. Вместо «ширина (высота, степень) дерева (С; =э гэ)» будем говорить «ширина (высота, степень) системы С». Систему составляющих, имеющую бинарное дерево, мы также будем называть бинарной. Заметим, что если ширина системы С равна /, то длина составляющей ранга г не превосходит V. Поэтому каждый отрезок цепочки, длина которого больше или равна Г, содержит точку, являющуюся левым или правым концом какой-либо составляющей ранга, не меньшего г. При изучении систем составляющих, связанных с грамматиками, оказывается полезной следующая Лемма П1.1. Пусть С — система составляющих Цепочки xyz, I — ширина С и \ у | ^ 2га • 12п. Тогда найдутся точки а, ^ ... ^а„ < Р„^ ... г^р, цепочки xyz такие, что [щ, р,], [а„, р„] е С и либо щ < ... < а„
288 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I и аи ..., ап — точки отрезка у, либо Р[ > ... > f$„ и Рп •■•, Pn — точки отрезка у. Доказательство. Представим у в виде у = =#i ■•• #2п, где \уг\^12п, i=l, ..., 2/г. Каждый отрезок у{ содержит хотя бы одну точку, являющуюся концом некоторой составляющей ранга, большего или равного 2л. Среди этих 2/г точек найдется либо п левых концов либо п правых — пусть для определенности первое. Отрезок у содержит, таким образом, точки yi < • • • <Y2n являющиеся левыми концами некоторых составляющих рангов, больших или равных 2/г. Обозначим правые концы этих составляющих через 6ь ..., бп соответственно. Если все они лежат вне у, то, очевидно, 8п ^... ... ^ 6i, так что последовательность уь • • •, \п, 6„, ... ..., 6i удовлетворяет нужному условию. Если же какая- либо точка 6j принадлежит у, то составляющая А = = [Yj, 6j] содержится в у целиком; она в свою очередь содержит вложенную последовательность составляющих А = [ei, Tji] => [е2, т)г] ^э ... zd [г2п, Цы], и либо среди точек ei, ..., е2и, либо среди точек tji, .... ц2п имеется не менее /г попарно различных; если, например, имеет место первое и при этом ег, < ... < е1/г, то последовательность е^, ..., &in, r\in, ..., г\{1 является искомой. Важными характеристиками составляющей являются также степень левого ветвления, степень правого ветвления и степень гнездования (обозначения: ул {А), уп(А), ф(Л)). Степени левого и правого ветвления определяются так: I. Если А — полная составляющая, то ул(А) = = f/rT(v4)=0. II. Если для составляющей А значения функций ул и уп определены и если Ао, Аи ..., Ak — все непосредственно вложенные в А составляющие, занумерованные слева направо, то Ул (At) =y*(A) + k- i; у" (At) = yn (A) + i. Для определения степени гнездования введем предварительно следующее понятие. Назовем последовательность составляющих [ао, Ро], [oti, pj, . . ., [а„, р„] г н е 3- дом глубины /г, охватывающим составляющую [а,п, Рп], если а0 < «1 < • • • < ап < Рп < • • • < Pi < Ро Степень гнездования составляющей А — это, по определению, наибольшая глубина гнезда, охватывающего А.
§ n.i.i] СИСТЕМЫ СОСТАВЛЯЮЩИХ 289 Наибольшие значения ул(А), уи{А) и ф(<4) для /1еС называются соответственно степенью лево* го ветвления, степенью правого ветвления и степенью гнездован ия системы С и обозначаются ул(С), уп{С), ф(С). Величина ф(С) есть, таким образом, наибольшая глубина гнезда, содержащегося в системе С. Степень гнездования составляющей можно определить также индуктивно следующим образом. Пусть Ао, ..., Ah — все составляющие, непосредственно вложенные в составляющую Л, занумерованные слева направо. Будем называть составляющую А0 левой, Ли — пр а во й, Аи ..., Ah-i (если k> 1) — средними. Кроме того, полную составляющую будем считать средней. Среди левых и правых составляющих будем различать углубляющие и неуглубляющие, которые определим индуктивно. Именно: если состав-* ляющая А средняя, то непосредственно вложенные в нее левая и правая составляющие будут неуглубляющи- ми; если А левая, то непосредственно вложенная в А левая составляющая — неуглубляющая, а непосредственно вложенная в А правая составляющая — углубляющая, когда А неуглубляющая, и неуглубляющая, когда Л углубляющая; если А правая, симметрично. Кроме то- того, все средние составляющие считаем углубляющими. Теперь ф(А) определяется так: I. Если А — полная, то ф(Л) =0. II. Пусть ф{А) определено и В непосредственно вложена в А. Тогда ф{В) — ф{А), если В — неуглубляющая составляющая, и ф(В) = ф{А) + 1, если В — углубляющая составляющая. Эквивалентность двух определений степени гнездования без труда доказывается индукцией по высоте. Назовем далее последовательность составляющих l«o, Po], [cti, Pi], ..., [ct„, p„] левым (правым) п о* л у гнездом глубины п, охватывающим составляющую [ап, Рп], если ао < oci < ... <С ап^Рп^ ... •••^Pi^Po, соответственно ао^оя^ ■ • ■ ^ап^рп< ... • • • < Pi < Ро- Наибольшую глубину левого (правого) полугнезда, охватывающего данную составляющую А, обозначим фл(А), соответственно фп(Л). Очевидно, ф(Л)<тт(фл(Л), фп(Л)). 10 А. В. Гладкий
290 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I В то же время непосредственной индукцией по высоте А легко показать, что фл(Л)<г/п(Л), фп(Л)< ул(А). Поэтому ф (Л)<гшп (ул(А), уп (Л)), откуда ф (С) < min (ул (С), УП(С)). Широко известна гипотеза В. Ингве [Ingve I960], согласно которой в естественных языках имеются специальные механизмы, обеспечивающие ограниченность степеней левого ветвления предложений (в то время как степени правого ветвления ничем в принципе не ограничены — ср. хотя бы конструкции типа Дом, который построил Джек) *). Имеются, однако, языки, для которых это предположение заведомо не подтверждается (например, венгерский — см. [Гладкий—Мельчук 1969, стр. 101]); более того, и в языках, с фактами которые данная гипотеза на первый взгляд хорошо согласуется, можно, по-видимому, при более детальном исследовании обнаружить конструкции довольно большой левой глубины, вполне приемлемые не только грамматически, но и стилистически (ср., в частности, приводимые в [Паду- чева 1966] примеры для русского языка). Значительно более адекватной характеристикой «синтаксической громоздкости» предложения является, видимо, степень гнездования. В русском языке, например, хотя и можно строить грамматически правильные предложения со сколь угодно большими значениями ф(С), но уже очень скоро они начинают восприниматься как стилистически недопустимые ввиду их крайней громоздкости; ср. хотя бы предложение ((Прочитавший ((полу- 12 3 4 ценное (от (опубликовавшего ((единственную (после 5 6 7 8 9 Иванова)) монографию)) ученого)) письмо)) брат) (был 9 8 7 6 54 3 2 110 недоволен), для которого степень гнездования равна 5. ю См. об этом, например, [Мартыненко 1971]. Построенная для предложения система составляющих указывает в нем словосочетания разных «уровней» (составляющие разной высоты), не вводя при этом никакой иерархии среди словосочетаний одного «уровня». *) По поводу аргументации, выдвигаемой в пользу этой гипотезы, см. § 7.1.
§ П.1.1] СИСТЕМЫ СОСТАВЛЯЮЩИХ 291 Между тем, в предложении естественного языка часто интуитивно ощущается «главенствование» некоторого словосочетания над другими, в нем не содержащимися. Чтобы в некоторой степени отразить этот факт, можно поступить следующим образом. Пусть С —система составляющих цепочки х. Для каждой неточечной составляющей А е С выделим в множестве всех составляющих, непосредственно вложенных в А, какую-либо одну составляющую А', которую будем называть главной. Множество всех главных составляющих обозначим С и назовем иерархизацией системы С. Упорядоченную пару (С, С) назовем иерархизован* ной системой составляющих. Например, система (4) предложения (3) может быть иерархизована следующим образом (именно такую иерархизацию можно считать интуитивно естественной): (15) (Онегин, (добрый (мой приятель))), (родился (на (брегах Невы))). (Главные составляющие здесь подчеркнуты.) Вообще говоря, «естественная» система составляющих может допускать более одной «естественной» иерархизации. Например, в системе (16) Студенты встретили (больного (врача Иванова)) можно взять в качестве главной составляющей (внутри составляющей больного врача Иванова) либо больного, либо врача Иванова; при первом выборе естественно считать, что речь идет о «больном врача Иванова», во втором — о «больном враче Иванове». При описании предложения естественного языка с помощью системы составляющих часто используется еще один способ введения в эту систему дополнительной информации: рассматривается ее отображение в множество всех подмножеств некоторого конечного множества, элементы которого называются метками и содержательно интерпретируются как символы «синтаксических классов» слов и словосочетаний. Упорядоченную тройку {С, W, ф), где С — система составляющих, W — множество меток и ф — отображение С в 2W, мы будем называть размеченной системой составляющих. 10*
292 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I xyvw Пример. Пусть множество W содержит, в частности, следующие элементы (одновременно с их пере* числением приводится содержательная интерпретация); ПРЕДЛ —«предложение»; Vxtivw — «группа непереходного глагола в роде х, числе у, времени v и лице w»; — «непереходный глагол в роде х, числе у, времени v и лице tiy»; — «группа переходного глагола в роде х, числе у, времени v и лице w»; — «переходный глагол в роде х, числе у, времени v и лице w»; — «группа существительного рода х в числе у и падеже 2»; — «существительное рода х в числе у и падеже 2»; Vlx V V xyvw S S А xyvw t xyvw 'хуг 'хуг *xyz — «прилагательное в роде х, числе у и падеже 2»; НА — «предложная группа с предлогом на»; НА — «предлог на». Тогда система составляющих (4) предложения (3) допускает следующую «естественную» разметку (в записи каждая составляющая А снабжена акколадой, около которой выписаны все элементы множества ф(Л)): ПРЕДЛ " MU3re,e3,uM Рмуж^д,и» ^муэсейим й ...... " муж.еЭ.им А , v му:нс,еЗ,прош,3 V1. НА J муж,мн,ро& ■-)муяг,мн,роЭ ^ясен,е9,род 9.._ _,* <?_. «»„* (Онегин, (добрый ( мой приятель)))) [родился (ра ( брваал УеЗы)))
5 rn.H СИСТЕМЫ СОСТАВЛЯЮЩИХ 293 Одна и та же «естественная» система составляющих может допускать более одной «естественной» разметки. Так, система (16) может быть размечена либо таким образом: ПРЕЛ Л <5муж,е9,0ин ^муж,еЗ,ро8 1 •">муж,мн,им "муж.мн.прош.З ^муж,ед,Ъий *->муж,вЭ,роЭ ^муж,ед,роЗ ^муж,мн,им Ч1уж,мн,прош,3 ^муж.еб.бин ^муж.еб.роЭ ^муж,еЭ,ро9 Студенты Запретили ( больного (врача Иданода)), либо таким: Т1РЕДЛ •5муж,еЗ,Вин ^муж,МН,им Чй^ж,мн,прои1,3 £муж,еЭ,6ин с ; •^мумс,еЭ,Вин ,->муж)еЗ,8ин ^муж.мн.им миуж,мн,прош,3''1муж,еЭ,Вин •5муж,еЭ,6(!н ^муж,8Э,Вин Студенты Встретили (больного ( драча ИбанаВа)). Заметим, что в последнем примере каждая из двух разметок по смыслу совместима только с одной из приведенных иерархизаций. Однако вполне возможны
294 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I различные разметки, совместимые с одной и той же ие- рархизацией—например, в системе Я {сел {в метро), составляющей метро можно приписать либо метку "^ср, ед, вин И Оср, ед, вии> ЛИОО оср, ед, предл И ^ср, ед, предл» и оба варианта совместимы с иерархизацией Я {сел в метро)). § П1.2. Деревья подчинения Пусть х — произвольная непустая цепочка в словаре V и X — множество всех точек х. Произвольное бинарное отношение —*■ на X такое, что граф (X; -*) является деревом, мы дем называть отношением синтаксического подчинения (или просто отношением подчинения) для х. Само дерево (X; -») будет называться деревом (синтаксического) подчинения для х. При графическом изображении дерева подчинения мы будем помещать точки цепочки х на горизонтальной прямой так, как условлено в § 1.1, и для всякой пары точек а, р, для которой а-»р, будем проводить из а в Р стрелку, причем таким образом, чтобы все стрелки были по одну сторону от прямой. Для дерева подчинения обычным образом определяются подчинение, зависимость, группа зависимости, ширина куста узла, ширина дерева, ранг узла, высота узла и дерева (см. стр. 18—19). Сверх того всякое множество, полученное из группы зависимости точки а выбрасыванием групп зависимости некоторых (или всех) точек, подчиненных а, мы будем называть усеченной группой зависимости точки а. Пример. На 'рис. 15 изображено несколько различных деревьев подчинения для одной и той же цепочки abcdefg. Деревья подчинения могут быть использованы как один из способов изображения синтаксической структуры предложения. Именно, информация о синтаксическом строении предложения может представлять собой набор сведений о «главенствовании» одних слов (точнее, вхождений слов) в предложении над другими; задать такой набор — значит задать некоторый граф на множестве
; rti.2] Деревья Подчинения. 2Ф5 точек цепочки (предложения). Из интуитивных соображений, обсуждать которые мы здесь не будем, вытекает, что этот граф можно считать деревом. с d а) Рис. 15. а Пример. Следующее дерево подчинения для предложения (3) может считаться «естественным»: (17) Онегин, добрый мой приятель, родился на брегах НеВы. Аналогичным образом можно строить деревья подчинения для выражений формализованных языков. Так, Для формулы (5') (стр. 284) «естественное» дерево подчинения будет иметь вид ViAfil V Ё xl H х Понятие «правильного» дерева подчинения для предложения естественного языка зависит, вообще говоря,
296 системы составляющих И деревья подчинения [п. i от некоторых лингвистических соглашений (ср. аналогичное замечание о системах составляющих в § 1). Например, дерево (17) отвечает современной точке зрения на сказуемое как на корень (или, как говорят некоторые лингвисты, «вершину») предложения. Более традиционной концепции отвечало бы дерево с корнем в подлежащем: При описании предложений с помощью деревьев подчинения мы можем, как и при использовании систем составляющих, столкнуться с явлением синтаксической омонимии. Так, следующие два дерева одного и того же предложения: соответствуют двум его разным смыслам (ср. стр. 285), , Аналогично для предложений (11) и (12) «естественные» деревья будут иметь вид и
§ П1.2] ДЕРЕВЬЯ ПОДЧИНЕНИЯ 297 однако, не располагая полным набором необходимых внеязыковых фактов (ср. стр. 286), мы должны бы были допустить также деревья (АО Гастроли балета на Кавказе проходят успешно (Б) Гастроли балета на льду проходят успешно. При этом возможны случаи, когда бесспорно синтаксически омонимичное — с содержательной точки зрения — предложение допускает различные «естественные» описания с помощью деревьев подчинения, но только од* но с помощью системы составляющих, и наоборот. Например, двум различным смыслам предложения, допускающего лишь одну «естественную» систему составляющих (16), отвечают соответственно деревья №' Студенты Встретили больного драча ИВаноВа (22) Студенты Встретили бального Врача ИВаноВа. В то же время предложение (23) Он только подписывает эти бумаги допускает по меньшей мере два смысла («эти бумаги он только подписывает, а не составляет их сам» и «он ничего вообще не делает, кроме как подписывает эти бумаги»), и этим смыслам отвечают разные системы составляющих (24) Он ({только подписывает) (эти бумаги)) (25) Он {только (подписывает (эти бумаги))),
208 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П I но «естественное» дерево при обоих смыслах одно и то же: (26) Он только подписывает эти бумаги. Для анализа предложений естественного языка част- используются так называемые размеченные деревья подчинения. Размеченное дерево подчинения для цепочки х— это четверка {X; -*, Z, \р), где (X; -*) — дерево подчинения для х, Z — конечное множество (его элементы называются метками) и г|?— отображение множества дуг дерева (X; —►) в Z. Пусть, например, Z содержит символы пред., а я п о з., о пред., а тр., обет., отпредл., интерпретируемые соответственно как отношения между: сказуемым и подлежащим, существительным и приложением к нему, существительным и его согласованным определением, существительным и его несогласованным определением, глаголом и его обстоятельством, предлогом и управляемым им существительным (каждый раз в указанном порядке). Тогда дерево (17) естественно будет разметить так: преЭ. обет. отпреЗл.' amp. •Онегин, добрый мой приятель, родился на брегах /Мы Возможны, вообще говоря, различные разметки одного и того же дерева, отвечающие разным смыслам. Так, конструкция книга отца Федора имеет не менее двух смыслов — при одном речь идет об отце некоего Федора, при другом о некоем отце Федоре. Этим смыс-
§ П1.2] ДЕРЕВЬЯ ПОДЧИНЕНИЯ 299 лам можно сопоставить следующие две разметки одного и того же дерева: amp. amp. книга атца Федора; amp. аппоз. книга отца Федора. Проективность и слабая проективность. В классе всевозможных деревьев подчинения можно выделить подкласс, который содержит подавляющее большинство «естественных» деревьев для предложений реальных языков и, по-видимому, практически все «естественные» деревья выражений наиболее важных искусственных формализованных языков. Это класс так называемых проективных деревьев. Именно, дерево подчинения (X; -*) для цепочки х (а также соответствующее отношение подчинения —*) называется проективным, если для любых трех точек а, р, у цепочки х из того, что а —* р и у лежит между а и р, следует, что у зависит от а. Будем называть подстрелочным всякий интервал (а, р) цепочки х, для которого а-»-р или р-»-а. Подстрелочный интервал (а, р) будет называться правильным, если все его точки зависят от а или от р (в частности, пустой интервал правилен). Таким образом, проективность означает правильность всех под- стрелочных интервалов. Деревья рис. 15, а), б), в) проективны, деревья рис. 15, г), д) не проективны. Все деревья предложений на стр. 295—298 проективны. Еще один важный класс деревьев подчинения (являющийся, как мы скоро увидим, расширением предыдущего) — класс слабо проективных деревьев. Именно, дерево подчинения (X; -*) для цепечки х (и отношение -») называется слабо проективным, если для любых четырех точек а, р, у, 6 цепочки х из а —*■ р
300 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I и y —*■ б следует, что пары а, р и у, б не разделяют друг друга. При нашем способе графического изображения деревьев подчинения слабая проективность равносильна возможности провести все стрелки так, чтобы никакие две из них не пересекались *). Деревья рис. 15, а)—г) слабо проективны, дерево рис. 15,(5) не является слабо проективным. Все приведенные на стр. 295—298 деревья предложений слабо проективны. Укажем простые необходимые и достаточные условия проективности и слабой проективности. Будем называть циклическим отрезком цепочки х всякое множество точек этой цепочки, которое является либо отрезком, либо объединением двух отрезков, прилегающих к концам цепочки (иначе говоря, любое множество, которое при «склеивании» начала и конца цепочки — цепочка при таком склеивании оказывается «записанной на окружности» — переходит в отрезок). Теорема Ш. 1. Дерево подчинения для цепочки х тогда и только тогда проективно, соответственно слабо проективно, когда группы зависимости всех узлов этого дерева являются отрезками, соответственно циклическими отрезками, цепочки х. Доказательство, а) Если дерево подчинения не является слабо проективным, то существуют четыре точки а, Р, у. б такие, что а —*■ р, у —*■ б и пары а, р и Y, б разделяют друг друга. Из точек а, у хотя бы одна не зависит от другой; пусть для определенности у не зависит от а. Тогда и б не зависит от а, так что и внутри интервала, ограниченного точками а и Р, и вне его имеются точки, не принадлежащие группе зависимости точки а. Но если множество М точек цепочки х содержит такие две точки, что и внутри и вне ограниченного ими интервала имеются точки, не входящие в М, то он не может быть циклическим отрезком. Если дерево не проективно, то существуют три точки а, р, y такие, что а -* р, у лежит между а и р и у *) Доказательство этого геометрического факта выходит за рамки настоящего изложения.
§ rti.2] Деревья подчинения 301 не зависит от ос. Но тогда группа зависимости точки а не может, очевидно, быть отрезком. б) Пусть дерево подчинения {X; —►) цепочки х про- ективно (слабо проективно). Покажем, что группа за* висимости произвольной точки а цепочки х является от* резком (циклическим отрезком). Доказательство проведем индукцией по рангу ос. Если ос— узел ранга 0 (т. е. висячий), то группа зависимости для а состоит из одной точки ос, стало быть, она является отрезком и тем более циклическим отрезком. Пусть утверждение доказано для всех точек ранга, не большего п (га^О), ос— точка ранга я+1 и Ка—ее группа зависимости. Тогда Ка = МU/Ср, U ... • ■ • U K& , где pi, ..., рр — все точки, подчиненные ос, и /Cpj /Ср — их группы зависимости. Если дерево проективно, то множества А"р,> ••>. ..., /(р — отрезки, и если бы при этом Ка не было отрезком, то нашлась бы точка y, не принадлежащая Ка и в то же время лежащая между ос и некоторым /Ср£ и, следовательно, между а и pf; а это противоречит проективности. Пусть дерево слабо проективно. Покажем прежде всего, что в этом случае для каждого р* либо все точки, лежащие между ос и р*, либо все точки, не лежащие между ос и pj, принадлежат Ка. Действительно, пусть, например, как между, так и не между ос и Pi имеются точки, не входящие в Ка. Обозначим через е корень дерева (X; ->-). Очевидно, е ф Ка- Пусть для определенности е лежит между а и Pi, и пусть К — произвольная точка, не принадлежащая Ка и не лежащая между а и pi. Рассмотрим путь е = щ, ..., \x,s = К из е в К; ни одна из его точек не может совпасть с а или Pi. Если |Яг — последняя точка этого пути, лежащая между а и Рь то пары точек a, Pi и ^г, \it+i нарушают условие слабой проективности. Допустим теперь, что Ка не является циклическим отрезком. Тогда существуют точки у, б е Ка такие, что как внутри, так и вне интервала (у, б) имеются точки, не принадлежащие Ка. Пусть К, \афКа> ^e(v. б), \аф{у, б) (рис. 16). Тогда как внутри, так и вне
302 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I интервала Д, ограниченного точками Я, ц, имеются точки множества Ка. Это, однако, невозможно. В самом деле: Пусть сначала а^А; тогда по ранее доказанному все точки pi, ,.., Рр тоже не принадлежат А, а отсюда следует, что каждое из множеств К^г , .. ■, /Ср целиком лежит вне А (так как эти множества — циклические отрезки) ; совершенно аналогично для случая иеА. —н ч 1 1 н- ji а у А £ Рис. 16. Следствие. Всякое проективное дерево подчинения слабо проективно. Замечания. 1. В слабо проективном дереве подчинения каждый неправильный подстрелочный интервал содержит корень. Действительно, если а ~*■ р и у — произвольная точка, принадлежащая подстрелочному интервалу А, ограниченному точками ос, р, и не зависящая от ос, и если при этом корень не принадлежит А, то пары ос, р и 6,-, бг+i, где бг — последняя точка пути из корня в у, не принадлежащая А, нарушают условие слабой проективности. 2. Слабо проективное дерево подчинения тогда и только тогда проективно, когда никакой подстрелочный интервал не содержит корня. Это сразу следует из предыдущего замечания. Следствие из теоремы Ш.1 и замечание 2 дают возможность получить для проективности столь же наглядное представление, как для слабой проективности (при нашем способе графического изображения): проективность означает возможность провести все стрелки так, чтобы никакие две из них не пересекались и корень не лежал ни под одной из них. Мы не можем сколько-нибудь подробно обсуждать здесь вопросы, связанные с лингвистической интерпретацией понятий проективности и слабой проективности, или разбирать различные случаи выполнения и невыполнения этих условий в естественных языках. Ограничимся следующими замечаниями:
§ П1.2] ДЕРЕВЬЯ ПОДЧИНЕНИЯ 303 1. Содержательный смысл условий проективности и слабой проективности может быть, как видно уже из самих определений и еще яснее из теоремы Ш. 1, охарактеризован приблизительно так: при выполнении этих условий слова, близкие синтаксически, близки и по положению в тексте. При этом проективность обеспечивает «более тесную» текстовую близость. 2. В так называемой научной и деловой прозе (по крайней мере русской) «естественные» деревья подчинения подавляющего большинства предложений слабо про- ективны и даже проективны. При этом едва ли не все непроективные деревья принадлежат тем предложениям, для которых дерево подчинения вообще не является достаточно естественным средством представления синтаксической структуры (см. ниже,стр.309—310). За вычетом таких случаев непроективность в «деловом» тексте — верный признак недостаточной грамотности его сочинителя. Ср. хотя бы знаменитый оборот вида ...рассмотрев Выдвинутые здесь предложения товарищем Ло* *) паткиным... 3. Напротив, в художественной литературе, особенно в поэзии, отклонения от слабой проективности и тем более от проективности вполне обычны и в тех случаях, когда дерево подчинения достаточно адекватно представляет синтаксическую структуру. Такие отклонения, как правило, значимы, т. е. служат задаче создания определенного художественного эффекта**); они могут, например, использоваться для подчеркивания особой важности каких-либо частей предложения, для придания предложению экспрессивности, живости, непринужденности, для создания нужной стилистической окраски *) Пример из романа В. Дудинцева «Не хлебом единым». Эти слова вложены автором в уста одного из эпизодических персонажей — доктора наук Тепикина, и их оказывается достаточно для портрета малограмотного «научного» карьериста. **) Как и другие отступления от «абсолютной правильности», встречающиеся в художественной литературе.
304 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I и т. п. Ср. выделение слова новая во фразе из стихотво- рения М. И. Цветаевой ИоВая найдется дура - Верить b Волчью седину или впечатление непринужденности, «разговорности», создаваемое непроективностями в басне И. А. Крылова: Какой=то побар, арамотЕй, С поварни побежал сЗоей В кабан; он набожных был праВил § П1.3. Связь между системами составляющих и деревьями подчинения Пусть С — система составляющих цепочки х и {X; —*) — дерево подчинения для той же цепочки. Будем говорить, что система С и дерево (X; -*) (или система С и отношение —*) согласованы, если: 1) группы зависимости всех узлов дерева {X; ->) являются составляющими системы С; 2) каждая составляющая системы С является группой зависимости или усеченной группой зависимости некоторого узла дере- ва <*; ->). Пример. Дерево (17) согласовано с системой (4). Для дальнейшего будет полезно следующее очевидное замечание. Если система составляющих С согласована с деревом (X; -*) и А е С — группа зависимости или усеченная группа зависимЪсти точки а, то среди составляющих, непосредственно вложенных в А, та, ко*
§ П1.3] СВЯЗЬ СИСТЕМ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЕВ 305 торая содержит точку а, является для нее усеченной группой зависимости, а остальные являются группами зависимости некоторых точек, подчиненных а. Ввиду теоремы П1.1 всякое дерево подчинения, согласованное с какой-либо системой составляющих, про- ективно. С другой стороны, для всякого проективного отношения подчинения существуют согласованные с ним системы составляющих; одной из них будет множество Со, состоящее из всех точек*) цепочки и их групп зависимости. (Всякая точка совпадает со своей группой зависимости, если она является висячим узлом дерева, и с одной из своих усеченных групп зависимости в противном случае; две группы зависимости пересекаются лишь тогда, когда одна из них содержится в другой.) В общем случае согласованная с деревом подчинения система составляющих не единственна; строение множества таких систем рассматривается в упражнениях П1.7—ШЛО. Перейдем к обратному вопросу — о деревьях подчинения, согласованных с заданной системой составляющих. Здесь оказывается удобнее исходить из понятия иерархизованной системы составляющих. Введем следующее определение. Иерархизованная система составляющих (С, С) цепочки х и дерево подчинения (X; -*) для той же цепочки (или (С, С) и отношение ->-) связаны, если: 1) множество групп зависимости узлов дерева совпадает с С — С; 2) все элементы С являются усеченными группами зависимости узлов дерева. Очевидно, всякое дерево, связанное с (С, С), согласовано с С. Пример. Дерево (17) связано с иерархизованной системой (15). Лемма П1.2. а) Если С—система составляющих для цепочки х, А^С и ха — подцепочка х, соответствующая А, то множество СА— {В|ВеС&В = Л} есть система составляющих для хА. б) Если в условиях пункта а) С есть иерархизация системы С, то С'а~С' ("] С а есть иерархизация системы СА. *) Точнее — одноточечных подмножеств.
306 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I в) Если в условиях пункта а) —► есть отношение подчинения для х, согласованное с С, то отношение -*А, индуцируемое отношением —► на хА, есть отношение подчинения для ха, согласованное с СА. г) Если в условиях пунктов а), б), в) отношение не связано с иерархизованной системой (С, С), то-* связано с (Са, Са). Лемма Ш. 3. Пусть (С, С) — иерархизованная система составляющих и В0, Ви ..., Вр — все составляющие высоты 1, причем В0еС, Blt ..., Врф.С. Если при этом (X; ->) — дерево подчинения, связанное с (С, С), то (X; ->) получается из объединения деревьев {Во; ->в0)> (Bi; ->в,>, -, {ВР; ->вр) добавлением дуг (а0, а,) (а0, ар), где а0, а,, ..., ар — корни деревьев (Во; ->ва)> (Вй ->в,),... ..., (Вр;->в) соответственно. Доказательства лемм П1.2 и Ш.З очевидны. Теорема Ш.2. а) Для всякой иерархизованной системы составляющих существует единственное связанное с ней дерево подчинения. б) Для всякого дерева подчинения, согласованного с системой составляющих С, существует единственная иерархизация С системы С такая, что иерархизованная система (С, С) связана с данным деревом. Доказательство, а) Пусть (С, С)—иерархизованная система составляющих для цепочки х и X — множество всех точек цепочки х. Для каждой неточечной составляющей А будем обозначать через а(А) непосред- ствено вложенную в А главную составляющую и через Ь\(А) ЬрА{А) (рА^1) — непосредственно вложенные в Л не главные составляющие. Для каждой составляющей ^еВ определим ее главную точку а (Л) следующим образом. Если ранг А равен нулю, то единственная точка А будет главной. Если главные точки определены для всех составляющих ранга, меньшего п, я А — составляющая ранга п, то главной точкой А будет главная точка а (А). Заметим, что каждая точка а цепочки х будет главной для одной и только одной не главной составляющей. Действительно, если А — точечная составляющая, состоящая из единственной точки а, А0> Аи ..., Ah=A — путь в дереве составляющих из его корня (полной со-
§1113) СВЯЗЬ СИСТЕМ СОСТАВЛЯЮЩИХ И-ДЕРЕВЬЕВ. 307 ставляющей) в Л и последняя на этом пути не главная составляющая есть Лг„ (0 ^ г"о ^ k), то At,, Aia+\, ... ..., Ak — в точности все составляющие системы С, для которых а служит главной точкой; поэтому составляющая Лг0 будет искомой. Положим теперь а-* в, если а — главная точка какой-либо составляющей Лив — главная точка одной из составляющих 6, (Л), ..., ЬРа(А). Из только что сделанного замечания немедленно вытекает, что: а) ни в одну точку цепочки х не входит более одной дуги; б) во всякую точку х, кроме главной точки полной составляющей, входит дуга; в) в графе (X; -*) нет замкнутых путей ненулевой длины. Итак, (X; —*) — дерево подчинения для х (с корнем в главной точке полной составляющей). Покажем, что это дерево связано с (С, С). Для этого достаточно установить следующий факт: для любого г, 0 ^ г ^ R, где R — высота системы С, каждая не главная составляющая ранга г является группой зависимости своей главной точки, а каждая главная составляющая ранга г — усеченной группой зависимости своей главной точки. (Действительно, отсюда, поскольку каждая точка цепочки главная для некоторой не главной составляющей, будет следовать, что С — С совпадает с множеством групп зависимости.) Докажем это утверждение сначала для г = 0. Пусть Л — точечная составляющая; тогда Л = {ос} и а — главная точка А. Если при этом Л — не главная составляющая, то ни для какой составляющей, отличной от Л, точка а не будет главной, так что (по определению отношения —*) эта точка окажется в дереве (X; —*■) висячим узлом и ее группа зависимости будет состоять лишь из нее самой. Если же Л — главная составляющая, то непременно найдутся точки, подчиненные а (такими будут хотя бы главные точки других составляющих, непосредственно вложенных в ту же составляющую, что и Л), так что Л не Может быть группой зависимости точки а и поэтому является ее усеченной группой зависимости. Пусть теперь Утверждение доказано для всех г, меньших r0 (ro^l), А— составляющая ранга г0 и а — ее главная точка. Если Во, В и ..., Вр — все непосредственно вложенные в А составляющие и В0 является главной, то по индуктивному предположению В0 есть усеченная группа
308 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I зависимости точки a, a Bi Вр — группы зависимости своих главных точек. Таким образом, А есть объединение усеченной группы зависимости точки а с группами зависимости некоторых точек, подчиненных ос, — а такое множество есть либо группа зависимости, либо усеченная группа зависимости для а. Если при этом А — главная составляющая, то существуют точки, подчиненные а и лежащие вне А, если же Л — не главная составляющая, то таких точек нет (так как а не является тогда главной точкой ни для какой составляющей, не содержащейся в А). Поэтому в первом случае А — усеченная группа зависимости для ос, во втором — группа зависимости. Единственность дерева, связанного с иерархизован- ной системой составляющих (С, С), мы докажем индукцией по высоте г системы С. При г = 0 утверждение тривиально. Пусть оно доказано для всех г < г0 и С имеет высоту го. Обозначим через В0, Bi, ..., ВР составляющие глубины 1. Пусть (X, -*i) и (X, -»2) —два дерева подчинения, связанных с (С, С). По лемме П1.2 для каждого / = 0 р отношение ->/в/(' = = 1,2), индуцируемое отношением ->ч на Bj, связано с иерархизованной системой (Св., С'в,)- Отсюда по индуктивному предположению следует, что для каждого / = О, . . ., р деревья (В;, -+1в}) и (fi/, ->2Bf) совпадают. А это в силу леммы Ш. 3 влечет совпадение деревьев (X, -*i) и (л, —«-г). б) Пусть С — система составляющих, согласованная с некоторым деревом подчинения. Для каждой неточечной составляющей А е С, являющейся группой зависимости или усеченной группой зависимости некоторой точки ос, объявим главной ту из непосредственно вложенных в А составляющих, которая содержит ос. При такой иерархизации в силу замечания, сделанного после определения согласованности (стр.304—305),все главные составляющие будут усеченными группами зависимости, а не главные—группами зависимости; но все группы зависимости по условию являются составляющими, так что множество не главных составляющих совпадет с множеством групп зависимости. Единственность нужной иерархизации сразу следует из упомянутого замечания.
§ ш.з] связь систем составляющих и Деревьев 309 Итак, для каждой системы составляющих имеется взаимно однозначное соответствие между ее иерархиза- циями и согласованными с ней деревьями подчинения. Замечания. 1) В рассуждениях этого параграфа проективность нужна только для того, чтобы все группы зависимости были отрезками. Если изменить определение системы составляющих, допустив в качестве ее элементов циклические отрезки или даже произвольные множества точек цепочки (конечно, при сохранении пунктов I, II определения на стр. 282), то все наши рассуждения будут годиться для любых слабо проективных, соответственно вообще для любых, деревьев подчинения. 2) Системы составляющих и деревья подчинения характеризуют синтаксическую структуру предложения в разных аспектах. С помощью первых описываются в явном виде словосочетания, но игнорируется ориентация связей (т. е. не различаются «главные» и «зависимые» элементы); вторые дают возможность рассматривать направленные связи, но только между отдельными словами. Между тем во многих случаях было бы естественнее описывать структуру предложения, рассматривая направленные связи не только между словами, но и между словосочетаниями. В какой-то мере здесь могут помочь иерархизованные системы составляющих; однако из теоремы Ш.2 видно, что в некотором смысле их возможности не шире, чем у проективных отношений подчинения: с помощью иерархизованных систем составляющих удается описать направленные связи словосочетаний только тогда, когда в каждом словосочетании достаточно естественным образом выделяется «главное слово» так, что ему можно передать пассивную связь словосочетания (т. е. вместо того, чтобы подчинить какому-то элементу все словосочетание, подчинить тому же элементу главное слово); это означает, что система направленных связей между словосочетаниями, т. е. иерархизован- ная система составляющих, должна быть содержательно равносильна системе связей между их главными словами, а последняя есть не что иное, как дерево подчинения, связанное с исходной иерархизованной системой. Однако бывают словосочетания, в которых либо вообще не удается выделить естественным образом главное
310 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. I слово, либо «подвешивание» словосочетания за главное слово не оправдано. Например, в конструкциях с однородными членами нет оснований считать то или иное слово главным; в сложных формах глагола (типа буду читать) естественно считать все их внешние связи относящимися только ко всему словосочетанию как целому, поскольку эти формы синтаксически ведут себя так же, как простые. Сходным образом можно трактовать сочетания модальных глаголов и иных модальных слов с инфинитивами, конструкции, содержащие определенные стандартные лексические функции [Жолковский — Мельчук 1967] (например, Open, Incep), и некоторые другие типы конструкций. Именно в таких конструкциях при попытках описать их с помощью деревьев подчинения часто возникает непроективность: Лвтои здесь будут uspami 'дети ; Эти и другие случаи содержательной неадекватности деревьев подчинения и систем составляющих привели к попыткам разработать другие, более сложные способы описания синтаксической структуры предложения. Один из таких способов, являющийся одновременным обобщением систем составляющих и деревьев подчинения, предложен в [Гладкий 1969, 1971]. Останавливаться на этих вопросах подробнее мы не будем, поскольку они не имеют прямого отношения к предмету книги. Упражнения Ш. 1. Показать, что если в цепочке расставлены каким-либо образом левые и правые скобки, то существует не более одного взаимно однозначного отображения множества левых скобок на множество правых, при котором каждая левая скобка расположена левее своего *) Дать = Орет [(отзыв).
УПРАЖНЕНИЯ ' 311 образа и отрезки, ограниченные левыми скобками и соответствующими им правыми, образуют систему составляющих данной цепочки. Ш. 2. Пусть sn — число систем составляющих одной цепочки длины п > 2 и Sn; (1 ^ i ^ п) — число тех из этих систем, для которых крайняя справа точка цепочки служит концом i различных составляющих. Показать, что п а) s„+1 = 2 W— O'SmS (=2 п б) Sn+i, i — sn, i-i + 2 ^ %/• i=i П1.3. Доказать, что граф (С; гз гз) (стр. 287) является деревом. П1.4. Пусть Ьп—число бинарных систем составляющих одной цепочки длины п 5= 2. а) Указать рекуррентную формулу, выражающую 6n+i через 62, • • ■, Ьп- б) Показать, что для каждой системы составляющих С цепочки х (1*1 5=2) существует точно JJ 6дЛ) содержащих ее би- нарных систем составляющих той же цепочки, где 1(A)—ширина куста составляющей А в системе С (Ь0 считается равным единице). П1.5. Пусть С — система составляющих ранга г и ширины /. Обозначим через /с число различных иерархизаций системы С и через Iri — число i-i'-li')'- ... • (... (»')' .. .)*, где последний сомножитель содержит г — 1 возведений в степень. Показать, что: а) если ширина куста каждой неточечной составляющей системы С равна /, то /с = Irl; б) в общем случае Iг2 < /с < / .. Ш. 6. Построить «естественное» дерево подчинения для формулы (5) (стр.284). Ш.7. Показать, что всякая небинарная система составляющих, согласованная с некоторым деревом подчинения, содержится в некоторой другой системе составляющих, согласованной с тем же деревом. Таким образом, в множестве всех систем составляющих, согласованных с данными деревом подчинения, система С0 (стр. 305) является наименьшим элементом (относительно теоретико-множественного включения), а бинарные системы — максимальными элементами. Ш. 8. Показать, что согласованная с деревом (X; ->-) система составляющих тогда и только тогда единственна, когда (X; -*■) — дерево без ветвления (т. е. каждая его вершина имеет не более одной подчиненной). Ш. 9. Пусть S — множество всех систем составляющих, согласованных с деревом (X; -*■) , и для Си С%& S запись С\ =ф С2 означает, что Ci с С2 и не существует системы С s S такой, что С\ с С cz C2. Показать, что длина любого максимального пути в графе (S; =ф) (такой путь, вообще говоря, не один) равна сумме уменьшенных на единицу ширин кустов невисячих узлов дерева (X; ->-).
312 СИСТЕМЫ СОСТАВЛЯЮЩИХ И ДЕРЕВЬЯ ПОДЧИНЕНИЯ [П. 1 Ш. 10. Показать, что бинарная система составляющих, согласованная с деревом (X;-*), тогда и только тогда единственна, когда для каждого узла этого дерева все подчиненные ему узлы расположены по одиу сторону от него. Ш. 11. Показать, что высота дерева подчинения, согласованного с системой составляющих, не превосходит высоты этой системы. П1.12. Показать, что система составляющих С и дерево подчинения (X; -*-) тогда и только тогда согласованы, когда: а) группы зависимости всех узлов дерева (X; -*■) являются составляющими системы С; б) каждая составляющая системы С совпадает с множеством узлов некоторого поддерева дерева (X; -*•). П1.13. Показать, что объединение множества подформул (в обычном смысле) произвольной формулы F исчисления предикато\ (как в «скобочной», так и в бесскобочной записи) с множеством вхождений в F элементарных символов является системой составляющих для F. Ш. 14. Назовем системы составляющих С и С\ цепочек х и Xi подобными, если изображающие их скобочные последовательности совпадают. а) Сформулировать определение подобия, не упоминая о скобочных или иных изображениях. б) Показать, что если F — формула исчисления предикатов в «скобочной» записи и F\ — та же формула в бесскобочной записи, то описанные в упражнении П1. 13 системы составляющих цепочек F и F\ подобны. Ш. 15. Показать, что если дерево подчинения (X;-*) связано с иерархизованной системой составляющих (С, С) цепочки х, а — точка цепочки х и В0 :э В, :э ... гэ В, = {а}— все составляющие, для которых а служит главной точкой (так что Во — группа зависимости узла а), то ширина куста узла а в дереве (X; -*-) равна (la — 1)+ ... +(/(-i — 1), где h — ширина куста составляющей Bt. Замечание. Если s0 — степень составляющей В0, то s0 < t ^ (k—1)+...+(/(_! — 1), так что ширина куста а не может быть меньше So. Поэтому степень системы С не превосходит ширины дерева (Х;-+). Ш. 16. Построить «естественные» системы составляющих для предложений: а) Века пожирая, стояли шпалеры бессониц в горяченном гаме рубанков; б) По-прежнему, схлынувши с лиц очевидцев, безумствует быль, притворяясь незнающей; в) ...впивая впотьмах это благо, бежала на чашечку с чашечки грозой одуренная влага; г) Я креплюсь на пере у творца крупной каплей густого свинца. Для построенных систем вычислить значения у , уП, ф. Указать для них «естественные» иерархизации. П1.17. Построить «естественные» деревья подчинения для предложений из упражнения Ш. 16. Проверить эти дервья на связанность с построенными при выполнении упражнения Щ. 16 иерархизован- ными системами составляющих.
УПРАЖНЕНИЯ 313 Ш. 18. Иерархизовать каким-либо способом каждую из систем составляющих (1), (2) (стр. 283). Построить связанные с полученными иерархизациями деревья подчинения. Ш. 19. Для каждого из деревьев подчинения рис. 15, а), б), в) построить все связанные с ним иерархизованные системы составляющих. П1.20. Найти не менее 32 правильных анализов фразы: Назначение дежурным инструктором учителя Иванова вместо Петрова подтверждено Сидоренко. Каким из этих анализов отвечают различные деревья подчинения и каким — одинаковые? Показать, что с помощью размеченных деревьев подчинения могут быть различены все 32 анализа.
ПРИЛОЖЕНИЕ II ЗАМЕНЯЕМОСТЬ Наряду с формальными грамматиками, представляющими собой «собственно модели языка», или, по терминологии Г. С. Цейтина [Цейтин 1959], «синтезирующие модели», существуют так называемые «анализирующие модели языка», или «модели лингвистического исследования». В синтезирующих моделях задаются некоторые сведения о строении механизма языка (например, в виде правил преобразования), и работа модели состоит в выполнении преобразований языковых выражений или порождении некоторых «текстов». В анализирующих моделях, напротив, считаются заданными некоторые совокупности «текстов», и задача состоит в извлечении из них той или иной информации о строении языка; таким образом, мы можем говорить в этом случае о «моделировании деятельности лингвиста». (Подробнее см. [Гладкий — Мельчук 1969, стр. 162—164].) Наиболее разработанный класс анализирующих моделей составляют те, которые основаны на понятии замещае- мости цепочек; им и посвящено настоящее приложение. Предварительно необходимо сделать следующее замечание. При лингвистической интерпретации анализирующих моделей уже не безразлично, что понимать под элементарными символами — сегменты или словоформы (ср. введение, стр. 15—16). При втором понимании'в число исходных данных включаются грамматические значения, т. е. считаются заранее заданными такие понятия, как часть речи, падеж, род и т. п. Но это обесценивает модель — ведь именно построение формальных аналогов подобных понятий является ее целью, исходные же данные должны быть логически более простыми.
§ппл СВОБОДНЫЕ ПОЛУГРУППЫ 315 С другой стороны, опираясь лишь на понятие сегмента, относящееся целиком к внешней стороне языка, можно рассчитывать получить лишь довольно «бедные» модели (ср. ниже, стр. 327). Поэтому представляется целесообразным включить в число исходных данных лексические значения слов. Для этого мы введем понятие лексически значимого сегмента (ЛЗ-сег- мента), промежуточное между понятиями сегмента и словоформы; именно, ЛЗ-сегмент — это сегмент, снабженный лексически значением (но не грамматическими). Например, в предложении Он говорит только о физике, читает книги только по физике, и о нем говорят только как о физике первые два вхождения сегмента физике являются вхождениями одного и того же ЛЗ-сег- мента — но разных словоформ! — а третье отвечает другому ЛЗ-сегменту. В дальнейшем мы будем понимать элементарные символы как ЛЗ-сегменты. Впрочем, до некоторого момента будет допустимо также и понимание их как сегментов; место, начиная с которого введение лексических значений существенно, будет явно ука* зано (стр. 327—328). § ПИЛ. Свободные полугруппы Этот параграф вспомогательный; в нем излагаются некоторые простые алгебраические понятия, которые понадобятся нам в дальнейшем. Множество с определенной на нем ассоциативной бинарной операцией называется полугруппой. Для обозначения полугрупповой операции обычно используется мультипликативная запись: результат операции над элементами х и у (в этом порядке) обозначается ху. Элемент е полугруппы 5 называется единицей, если для любого х е 5 имеет место хе = ех = х. Легко видеть, что если полугруппа содержит единицу (что не обязательно), то только одну. Пусть 5 — полугруппа и MsS; если 5 обладает единицей е, обозначим через SA множество 5 — [е\; в противном случае положим SA = 5. Если замыкание множества М относительно полугрупповой операции совпадает с 5Л, говорят, что М есть система образующих для 5.
316 ЗАМЕЩАЕМОСТЬ [П. II Для произвольного алфавита (словаря) V множество V* является, очевидно, полугруппой относительно операции конкатенации с системой образующих V; цепоч» ка Л является единицей этой полугруппы. Такая полу* группа называется свободной. Отображение ф полугруппы 5 в полугруппу S' называется гомоморфным, если Vx, у <= 5 [ф (ху) = = ф(х)ф(г/)].(Для случая, когда 5 и Sr — свободные полу-< группы, понятие гомоморфного отображения фактически было уже определено в § 1.1.) Взаимно однозначное гомоморфное отображение называется изоморфным. Если ф — изоморфное отображение полугруппы 5 на полугруппу 5', то обратное отображение ф-1: S'-*S также является изоморфным. В этом случае говорят, что 5 и S' изоморфны между собой. Отношение эквивалентности R на полугруппе S называется конгруэнцией, если имеет место Vx, у, х', y'cESlxRx'&yRy'zixyRx'y']. Если R — конгруэнция на полугруппе S, то любым двум классам X, Y e S/R однозначно отвечает класс, который мы будем обозначать XY, состоящий из всевозможных произведений ху, где х е X, у е У. Легко убедиться, что определенная таким образом на S/R бинарная операция ассоциативна, т. е. S/R является относительно этой операции полугруппой; эта полугруппа называется фактор- полугруппой полугруппы 5 по конгруэнции R. Отображение полугруппы 5 на полугруппу S/R, сопоставляющее каждому элементу 5 содержащий его класс, является, очевидно, гомоморфным — это так называемый естественный гомоморфизм. Пусть V — алфавит и р — произвольное отношение эквивалентности на V. Определим отношение р* на свободной полугруппе V* следующим образом: хр*г/ означает, что либо х = у = Л, либо х = а{ ... ak, y = bt ... bk, где ait J|6Fh a^bi (i — \, ..., k). Ясно, что р* есть конгруэнция. Естественный гомоморфизм полугруппы V* на полугруппу V*/p* мы обозначим через ф. Пусть теперь X — произвольный класс по конгруэнции р* и х — произвольная цепочка, принадлежащая X. Если А.ф.Х, т. е. x = ax...ak, где ах ak^V, k^l, мы обозначим цепочку ф^) ... ф(ай) (не зависящую, в силу определения конгруэнции р*, от выбора
§ пи.п СВОБОДНЫЕ ПОЛУГРУППЫ 317 цепочки х е X) через г|э (X). Если же Л е X (тогда X = {Л}). положим ty(X) = A. Мы получили, таким образом, отображение полугруппы V*/p* в свободную полугруппу (V/p)* с системой образующих V/p. Из способа определения этого отображения ясно, что оно гомоморфно; очевидно также, что каждая цепочка из (V/p)* имеет при отображении г|э прообраз, и притом единственный. Таким образом, г|э есть изоморфное отображение V*/p* на (V/p)*; следовательно, отображение 0=ф'ф, сопоставляющее каждой непустой цепочке ах ... ak, где а,, ..., ak<^V, цепочку ср(а,) ... cp(afe) и единице полугруппы V* — единицу полугруппы (V/p)*, есть гомоморфное отображение V* на (V/р)*; мы будем называть его алфавитным гомоморфизмом. Если Жх и &2 — Два отношения эквивалентности на произвольном множестве М такие, что каждый ^,-класс содержится в некотором $!2-классе, мы будем называть $?2 укрупнением Жх. Пусть рх — отношение эквивалентности на словаре V и р2 — укрупнение pf, тогда, как легко убедиться, р* будет укрупнением р*. Определим на V/p{ отношение эквивалентности р12, полагая Apl2B тогда и только тогда, когда А и В—ррклассы, содержащиеся в одном и том же р2-классе. Обозначим через 9,, Э2 и Э12 алфавитные гомоморфизмы V* на (V/p{y, V* на (V/p2)* и (V/p:)* на ((VVpO/W соответственно. Определим далее гомоморфное отображение £12: ((V/Pi)/Pi2)*-*(VIP2Y, полагая £12(а) для каждого р12-класса а равным объединению всех pj-классов, принадлежащих а. Поскольку таким образом между (F/p,)/p2 и V/p12 устанавливается взаимно однозначное соответствие, 112- есть изоморфное отображение ((V/р{)/р12)* на (F/p2)*. Поэтому, полагая т]12 = Э12£12, получаем гомоморфное отображение (^/Pi)* на (V/p2)*; это отображение сопоставляет каждой цепочке а{ ... ak, где а,, ..., ak <= V/pu цепочку р!...рь где р, р4еК/р2> такую, что а,^^!, ..., aftspV Ясно также, что Э^^ = Э2. Отображение T)l2 мы также будем называть алфавитным гомоморфизмом. (Понятие, рассматривавшееся до сих пор под этим названием, становится частным случаем только что введенного, если заменить V на К/=, где =г — отношение тождества.)
318 ЗАМЕЩАЕМОСТЬ [П. I § Fill. 2. Замещаемость и взаимозамещаемость. Конфигурации Пусть V — произвольный словарь, L — язык в словаре V их, !/еГ. Будем говорить, что цепочка х замещаема на цепочку у относительно с л о- варяУиязыка/,, иписатьх=#«, если Vu, oeF*[uxoe V, L elD uyv e L] *). Если каждая из цепочек х, у замещаема на другую относительно V и L, говорим, что х и у взаимозамещаемы относительно V и L, и пишем хФФ«. (Буквы V и L будут опускаться, если недо- разумение невозможно.) Запись ФХ(У, L) будет означает {у\х=^у}> запись Ф(У, L) будет означать {(х, г/)|х=#«} V.L V,L аналогично, с заменой =Ф на фф, определим ЧХ<У, L) и ^(F, L). При невозможности недоразумения буква х в этих обозначениях будет опускаться. Легко убедиться, что для произвольного языка L в произвольном словаре V отношение Фф является кон- V,L груэнцией на свободной полугруппе V*. Будем говорить, что отношение эквивалентности 31 на свободной полугруппе V* согласовано с языком L Е V*, если для любых двух цепочек х, у е V* из х е L и х$г/ следует y^L. Лемма П11. 1. Отношение Ф^ согласовано с язы- ком L и является укрупнением любой конгруэнции на V, согласованной с L. Доказательство. Согласованность Ф^ с L не- посредственно вытекает из определений. Пусть Ш. — конгруэнция на V, согласованная с L, i, i/eF' и xdly. Тогда для любых г, иеУ будет гхиЖгуи, и поэтому 2x«eL влечет zyu&L; таким образом, х=^у. Анало- *) Ясно, что если L s V\, L s V"2, x, у <= V\, x, у i= V*2, то дг=ф(/ равносильно x=k>y. Однако обозначение =^> удобно в слу- V,, L V„ L V. L чаях, когда отношение рассматривается «в целом», как множество пар.
§ rtn.2] замещаёмость и взаимозамещаемость 319 гично имеем у=^х. Итак, всякий ^-класс содержится V, L в некотором £Ф -классе. V, L Лемма ПП. 1 позволяет утверждать, что среди всех конгруэнции на V*, согласованных с L, отношение Ф^ имеет наименьший индекс. V.L Лингвистический смысл понятия взаимозамещае- мости состоит приблизительно в следующем. Если интерпретировать V как множество ЛЗ-сегментов *) некоторого естественного языка и L — как множество грамматически правильных фраз этого языка, то взаимо- замещаемые цепочки будут представлять собой «синтаксически эквивалентные», т. е. выполняющие одни и те же синтаксические функции, словосочетания. Так, в русском языке цепочку высокому дому можно, видимо, считать взаимозамещаемой с цепочкой умному совету, стене — с доске, исключительно важными — с важными. Пусть теперь ueF, х <= VV+ (так что |х| > 1) и аф^х. Мы будем говорить в этом случае, что х есть L конфигурация 1-го ранга языка L с результирующим а. При указанной выше лингвистической интерпретации словаря V и языка L конфигурации 1-го ранга будут «потенциальными составляющими», т. е. цепочками, которые могут входить в лингвистически естественные системы составляющих грамматически правильных предложений данного языка. Так, в русском языке цепочка исключительно важными является, видимо, конфигурацией 1-го ранга с результирующим важными (а также с любым из результирующих ценными, вредными, скверными, ...); существуют, очевидно, правильные русские предложения, для которых эта цепочка входит в число «естественных» составляющих [например, (Эти работы) (являются (исключительно важными))]. Однако «потенциальные составляющие» заведомо не исчерпываются конфигурациями 1-го ранга. Например, словосочетание важными работами является «потенциальной составляющей» [ср. Я (((не был) знаком) ((с (важными работами)) Иванова ))]; в то же время *) Ср., впрочем, сноску *) на стр. 327.
320 ЗАМЕНЯЕМОСТЬ in. n ясно, что на это словосочетание могут быть замещаемы только такие цепочки, как работами, лекциями, шапками, докладами, собаками, ушами *) и т. п., и поэтому, если бы цепочка важными работами была конфигурацией 1-го ранга, то только с такими результирующими. Но, например, в фразе Я не был знаком с исключительно важными работами Иванова нельзя без нарушения грамматической правильности заменить важными работами ни на работами, ни на лекциями, ни на собаками- ушами и т. п. Такая замена возможна лишь в тех контекстах, где нет словосочетаний вроде исключительно важными или невероятно важными, перекрывающихся с заменяемым вхождением словосочетания важными работами. Эти соображения приводят к следующему определению. Пусть г > 1 — натуральное число, и для каждого i, 1 sg; £ < г, определено понятие конфигурации ранга i языка L. Тогда цепочка хе VV+ называется конфигу- рацией ранга г языка L с результирующим а, где aeF, если выполняются следующие два условия: 1) а => х; 2) если Zixz2 е1и цепочка ztxz2 не содержит вхождений конфигураций рангов, меньших г, перекрьь вающихся с выделенным вхождением х, но не содержащихся в нем целиком, то z^az2 е L. В русском языке словосочетание важными работами является, по-видимому, конфигурацией ранга 2 с результирующим работами, или шапками, или лекциями и т. п. Замечания. 1) Из определения ясно, что всякая конфигурация ранга г является и конфигурацией любого большего ранга с тем же результирующим. 2) Понятие конфигурации зависит, вообще говоря, от словаря, в котором рассматривается язык: при добавлении к словарю новых символов, не входящих в цепочки языка, могут возникать новые конфигурации (см. упражнение ПП.З). В дальнейшем мы всегда, если не оговорено противное, будем считать, что язык рассматривается в своем «наименьшем» словаре, состоящем в точности из тех символов, которые встречаются в его цепочках. Если рассматривается одновременно несколь- *) Впрочем, при достаточно широком охвате русских предложений последние три цепочки не будут замещаемы на важными работами (ср. ниже, § ПИ. 3, пример 2).
§ ПН.2] ЗЛМЕЩЛЕМОСТЬ И ВЗЛИМОЗЛМЕЩЛЕМОСТЬ 321 ко языков, то подразумевается словарь, являющийся объединением соответствующих «наименьших». Будем называть цепочку, принадлежащую языку L, неприводимой, если она не содержит вхождений конфигураций этого языка. Множество неприводимых цепочек языка L будет обозначаться b(L). Конфигурацию ранга г языка L назовем простой, если она не содержит вхождений конфигураций ранга г (или, что то же самое, рангов, меньших или равных г) этого языка, отличных от нее самой. Пусть Т — некоторое множество конфигураций языка L и Ti — множество всевозможных упорядоченных пар вида (х, а), где хеТ и а — результирующий конфигурации х. Если Т — множество всех конфигураций, соответственно всех простых конфигураций, языка L, то 7\ будет обозначаться K(L), соответственно П(Ь). Упорядоченную пару (B(L), K(L)), соответственно (B(L), ПЩ), мы будем называть полной, соответственно приведенной, конфигурационной характеристикой языка L. Лемма ПН.2. Пусть Lu L2^V*. Если fi(Lt) s <=£(L2) и Я (Li) = K(L2), то U<=L2. Доказательство. Пусть х е Lt. Индукцией по \х\ покажем, что х е L2. Если \х\= 1, то из j;eLi следует xe£(Li) ^B(L2) s L2. Допустим, что для цепочек длины, меньшей «(«> 1), утверждение доказано и |д:| = п. Если при этом х е Б{Ь\), то х е B(L2) = L2. Если же x^E(Li) и г — наименьший ранг конфигураций языка Lb содержащихся в х, то х содержит и простую конфигурацию w ранга г языка L; для некоторых ги z2^V* и b^V имеем х = Ziwz2 и (w, i)eff(Li). Поскольку х не содержит конфигураций языка L рангов, меньших г, получаем Zibz2^ Li; но \zibz2\< n, откуда по индуктивному предположению Zibz2 e L2 и, поскольку (w, Ь) ^П(и) <=K{L2), х = ZiWz2^L2. Из леммы ПН.2 непосредственно вытекает Теорема ПИ. 1. Пусть Lu L2eV*. Если B(Li) = = £(L2) ы либо /С (Lt) =K{L2), либо n(U) =П{Ь2), то Li = L2. Иначе говоря, язык в заданном словаре вполне определяется своей полной или приведенной конфигурацией* ной характеристикой. 11 А. В. Гладкий
322 ЗЛМЕЩАЕМОСТЬ [П. II Для лингвистических приложений особо интересным представляется класс языков, у которых Б и П конечны. Такие языки мы будем называть конечно характеризуемыми. Кажется в высшей степени правдоподобным, что в естественных языках при всяком разумном уточнении понятия грамматической правильности все правильные предложения и все конфигурации будут содержать вхождения некоторых словосочетаний стандартного вида («прилагательное + наречие», «существительное + прилагательное» и т. п.), являющихся простыми конфигурациями, и поэтому естественные языки (точнее — множества правильных предложений естественных языков) конечно характеризуемы. (В то же время множество всех конфигураций естественного языка, видимо, бесконечно. Так, в русском языке сочетание существительного с любым числом определяющих его прилагательных будет конфигурацией.) Проиллюстрируем нахождение конфигурационных характеристик на примерах. Пример 1. Пусть L= {ge, аае, abde, bdae, bdbde, cf, de), efe, fff). Заметим прежде всего, что для произвольного языка и произвольного символа а из его «наименьшего» словаря множество Фа содержит только такие цепочки, которые входят в цепочки данного языка в качестве подцепочек. Поэтому для конечного языка все Фа конечны, и, следовательно, К и П (равно как и Б) тоже конечны и могут быть найдены перебором. Положим Ф'а{Ь) = {х\х е Фа(1)&|х | > 1}. Из предшествующего замечания ясно, что если язык L конечен и символ а входит в какую-либо цепочку языка L, имеющую наибольшую возможную для цепочек из L длину, то Ф'а(Ь) пусто. Поэтому в нашем случае Ф& = Ф^ = Фе=0- Множество Ф\ также пусто, так как иначе язык L содержал бы цепочки вида dex, где \х\> 1. Непосредственно проверяется, что bd е Ф^; других цепочек ф£ не содержит, иначе язык L содержал бы цепочки вида xbde, где \х\ > 1 и х ф bd. Аналогичным образом легко убедиться, что <b'c = {de, ff), Ф'8 = {аа, abd, bda, bdbd, ef}. Непосредственно ясно, что цепочки аа, abd, bda и bdbd замещаемы на g и bd — на а, а также, что de и // не замещаемы на с и ef— на g. Итак, L имеет пять конфигураций 1-го ранга: bd, aa, abd, bda, bdbd. Далее, de
§ ПИ.21 ЗАМЕЩЛЕМОСТЬ И ВЗЛИМОЗАМЕЩАЕМОСТЬ 323 есть конфигурация 2-го ранга с результирующим с; действительно, из всех цепочек языка L только в def имеет» ся вхождение de, не перекрывающееся с вхождениями конфигураций 1-го ранга, и при этом cf e L. Цепочка ef не является конфигурацией 2-го ранга с результирующим g, поскольку def не содержит вхождений конфигураций 1-го ранга, и все же gf ф L. Аналогично устанавливается, что ff не есть конфигурация 2-го ранга с результирующим с. Следующий шаг будет состоять в проверке оставшихся цепочек ef и // на «конфигурацион- ность 3-го ранга»; поступая, как выше, убеждаемся, что ef является конфигурацией 3-го ранга (с результирующим g), а // — нет. Наконец, устанавливаем, что // не является и конфигурацией 4-го ранга. Итак, имеем B(L) = {ge, cf,fff), K(L) = {(bd, a)(aa, g), (abd, g), (bda, g), (bdbd, g), (de, c), {ef, g)}, n(L) = {(bd, a), (aa, g), (de, c)(ef, g)}. Пример2. Пусть L'={6"cfe"|tt = 0, 1, ...}, L=a+L'a+. Легко видеть, что Oa(L) = ¥a(L) = a+, ФЬ(Ь) = {Ь}, Oc(L) = 4'c(L) = L'. Поэтому Б(1)^{аса), КЩ = = {(am, a)|m = 2, 3, ...}U{(*. с)\х*=Ц), П(Ц = {(аа, а), (bob, c)}. Дальнейшие примеры см. в упражнениях ПП. 2, 3, 7; см. также ниже пример 3. Теорема ПП. 2. Всякий конечно характеризуемый язык является бесконтекстным. При этом по заданным конечным Б(Ь) и П(Ь) можно построить Б-грамматику, порождающую L. Доказательство. Пусть L — конечно характеризуемый язык в словаре V. Сопоставим каждому asF новый символ а и положим V — {а\а е V}. Для каждой цепочки х = а1 ... а^, где аь ..., а^еУ, k~^\, будем полагать х — а,\ ... ak; если у=х, будем писать х=у. Введем еще один символ /фУ \}V и рассмотрим грамматику T = (V, V{J{I}, I, /?, U /?2 U /?з>, где /?,={/-* -*z\z(=B(L)}, R2 = {a~+x\(x, а) е= П(L)}, R3 = {a^ ->a|aeV}. Покажем, что L(T) — L. I. Пусть w = L(T). Тогда найдется такой вывод (/ = соо, • • •, wa, ..., со„ = w) в Г, что на первом его И*
324 ЗАМЕЩАЕМОСТЬ [П. II шаге применяется правило из Ru на всех следующих шагах до &-го включительно (1 < k ^ п — 1) — правила из R2 и на всех остальных шагах — правила из Яз. Поскольку &ц^Б(Ь)<=Ь и для каждого i = 2, ...,k цепочка &, получается из 5>i-± подстановкой некоторой конфигурации вместо ее результирующего, имеем &k eL; ho (Oft = w. II. Чтобы показать, что L<=L{T), достаточно убедиться, что всякая цепочка w е £ выводима в Г из /. Но это легко сделать, применив индукцию по \w\ и воспользовавшись рассуждением, аналогичным примененному в доказательстве леммы ПН. 2. Теорема ПИ. 2 не может быть обращена. Более того, как показывает следующий пример, даже А-язык может не быть конечно характеризуемым. Пример 3. Пусть L = {bab}{j bcb+cb\j(a+ [}cb+c)+- Ясно, что ФаЩ = {а}[]сЬ+с, Фь(L) = {&}, Oe{L)={c} (например, в bcbcb первое вхождение b нельзя заменить ничем, а первое вхождение с можно заменить только цепочкой вида cbh, но такой цепочкой при k^. 1 нельзя заменить второе вхождение с). Поэтому K(L) = = {(cbmc,a) \m=\, 2, ...},откуда B{L) = {bab} U а+; все конфигурации здесь, очевидно, простые, так что П(Ь), как и Б{Ь), бесконечно. Один частный класс А-грамматик, приводящий к конечно характеризуемым языкам, указан в упражнении ПИ. 4. § ПП.З. Окрестности, классы и типы Рассмотренная в предыдущем параграфе система понятий может служить примером анализирующей лингвистической модели. Эта модель описывает некоторые отношения, возникающие между элементами языка в речи (более конкретно — в предложении), или, как говорят лингвисты, «синтагматические отношения»; модели, описывающие такие отношения, принято также называть синтагматическими в отличие от парадигматических моделей, описывающих отношения между элементами языка в его системе — «парадигматические отношения». В настоящем параграфе будет
« пп.з] ОКРЕСТНОСТИ, КЛАССЫ И ТИПЫ 325 рассмотрена одна из анализирующих моделей этого последнего типа, также основанная на понятии замещае- мости. Пусть L — язык в словаре V, р — отношение эквивалентности на И и 0 — алфавитный гомоморфизм V* на (V/p)*. Пусть, кроме того, р'—некоторое укрупнение р. Мы будем говорить, что р' есть L-p егулярное укрупнение р, если любые два р-класса, содержащиеся в одном р'-классе, взаимозамещаемы относительно 9(L). В частности, мы получим L-регулярное укрупнение р, если будем считать два элемента V эквивалентными тогда и только тогда, когда они содержатся в р-классах, взаимозамещаемых относительно 9(L). Такую эквивалентность мы будем называть L-n р о и з во д н о й для р; она является, очевидно, наибольшим /.-регулярным укрупнением р, т. е. служит укрупнением любого L-регулярного укрупнения р. В дальнейших утверждениях L будет означать язык в словаре V, pi и р2 — эквивалентности на V такие, что р2 — укрупнение pi, и 9i, 92, т^г — алфавитные гомоморфизмы V* на (Wpi)*, V* на (У/рг)* и (Wpi)* на (V/pz)* соответственно. Лемма ПН. 3. Если р2 — L-регулярное укрупнение рь то X^Qi(L) тогда и только тогда, когда t]i2(X) е 6=82(L). Доказательство. а) Поскольку 92(L) = = th2(9i(L)), из Xe9i(L) вытекает г)и(Х) (= 92(L). б) Из определения L-регулярного укрупнения следует — так как взаимозамещаемость является конгруэнцией, — что если X, Уе (V/pi)* и т]12(Х) = т)12(У), то X4=}Y. Поэтому, если t]i2(X) = Ze92(L) и z — про- е, {D извольная цепочка из L такая, что 92(z) =t]12(9i(z)) = = Z, имеем X £$ 9, (z), откуда X (= 9i(L). e,(i.) Теорема ПП.З. Если р2 — L-регулярное укрупнение Pi, ТО'. а) X =#> У тогда и только тогда, когда t]12(J) #> т]12(У); 6,(1.) е2(1.) б) X является конфигурацией ранга г языка 9i (L) с результирующим А тогда и только тогда, когда г\[2(Х) является конфигурацией ранга г языка 82(L) с результирующим т]12(Л).
326 ЗАМЕЩАЕМОСТЬ [П. II Доказательство, а) Пусть Х^фУ, и пусть Zb Z2 — произвольные цепочки из (V/p2) такие, что Z\4\2 (X) Z2 е 92(L). Если Гь Г2— произвольные т]12-про- образы цепочек Zx и Z2 соответственно, то iii2(7,i^2)== = Zit]a(X) Zz, откуда по лемме ПН.З TiXT2 e 94(L); отсюда следует 7,iy7,2e9i(L) и—снова по лемме ПН.З— 4\i2.{TiYT2) = Zi-r\i2(Y)Z2 e 92(L). Аналогично доказывается, что Т112(Х)=^>,П12(У) влечет X => У. e2(L) 6,(1.) б) При г = 1 утверждение справедливо в силу а). Пусть оно доказано для всех i < г, и пусть X — конфигурация ранга г языка 9, (L) с результирующим А. Пусть Zu Z2 — цепочки из (У/р2)*, Ть Т2 — произвольные их т]12-прообразы, и пусть при этом цепочка Z\t\X2 (X) Z2 принадлежит 92(L) и не содержит вхождений конфигураций рангов, меньших г, языка 92(L), перекрывающихся с выделенным вхождением т\12(Х), цо не содержащихся в нем целиком. Тогда в силу индуктивного предположения цепочка Т{ХТ2 не будет содержать вхождений конфигураций рангов, меньших г, языка 9, (L), перекрывающихся с выделенным вхождением X, но не содержащихся в нем целиком; следовательно, поскольку Г,ХТ2 е 9, (L), имеем T1AT2^Q\(L), откуда Z1r\i2(A)Z2^ е 92 (L). Кроме того, в силу а) будет т)12 (Л) =# т]12 (X). Итак, е. а) ■n12(J) есть конфигурация ранга г языка 92(L) с результирующим f]i2(A). Обратное доказывается аналогично. Лемма ПИ.4. Если р2 — L-регулярнсе укрупнение р1 и р3 — L-регулярное укрупнение р2, то р3 есг& L-регуляр- ное укрупнение р,. Доказательство. Пусть Л, Л'еУ/р,, СеУ/р3, Л, Л' Е С. Положим т]12(Л) = й, Т112(Л') = Й'. Поскольку Л S В и Л' Е В', пересечения В[\С и fi'flC не пусты и, следовательно, В ЕС, В' Е С; поэтому В Ф^> В', от- е„(£) куда по теореме ПН.З At=} A'. ели Из леммы ПП.4 немедленно вытекает Теорема ПП.4. Если р'— L-проиэводная эквивалентность для р и р" — L-производная эквивалентность для рг, то р" совпадает с р'. Рассмотрим теперь эквивалентность, L-производную для равенства. Эта эквивалентность есть, очевидно, не
§ ПИ.З] ОКРЕСТНОСТИ, КЛАССЫ II ТИПЫ 327 что иное, как взаимозамещаемость относительно L, ограниченная цепочками длины 1. Для этой эквивалентности мы будем, наряду с записью ФФ, пользоваться V.L также обозначением SL; соответствующие классы эквивалентности будем называть семействами. Разбиение на семейства, т. е. на классы «синтаксически эквивалентных» ЛЗ-сегментов, представляет собой, видимо, единственную содержательно интересную классификацию слов, точнее, ЛЗ-сегментов, которую можно получить, исходя лишь из языка L, т. е. пользуясь только понятием грамматической правильности и не принимая во внимание лексических значений, как мы до сих пор фактически поступали*). Чтобы получить другие классификации, в частности такие, которые могли бы служить в какой-то степени моделями понятий части речи, грамматического рода и т. п., нужно учитывать и лексические значения. А поскольку элементарный символ, т. е. ЛЗ- сегмент, является для нас неразложимой единицей, лексические значения тем более неразложимы, и поэтому их учет не может означать ничего другого, кроме включения в число исходных данных сведений о том, какие ЛЗ-сегменты отвечают одинаковым лексическим значениям и какие — разным. Иначе говоря, мы должны считать заданными множества ЛЗ-сегментов, имеющих одинаковые лексические значения, т. е. являющихся «формами одного слова». Эти множества мы назовем окрестностями. Примеры окрестностей для русского языка: {фиэик, физика, физику, физиком, физике, физики, физиков, физикам, физиками, физиках), {пальто}, {над}**). *) Это означает, что элементарные символы во всех предыдущих рассмотрениях можно было бы интерпретировать и как сегменты (ср. стр. 315). Конкретные результаты зависят, разумеется, от выбора интерпретации. Например, сегменту физику отвечают два ЛЗ-сег- мента, скажем а\ — с лексическим значением, включающим компонент «наука», •— и а2 — с лексическим значением, включающим компонент «специалист»; в то же время для сегментов химию и химику имеется по одному ЛЗ-сегменту — пусть это будут бис. Трактуя предложения как цепочки ЛЗ-сегментов, получим ai ф=^ Ъ, а2 ф=^ с, а при отказе от учета лексических значений сегменты физику, химию и химику распределятся по трем разным семействам. **) Здесь для простоты вместо ЛЗ-сегментов выписаны сегменты; необходимое уточнение очевидно — например, вместо сегмента физику следовало бы взять ЛЗ-сегмент а2 из предыдущей сноски.
328 ЗЛМЕЩЛЕМОСТЬ [П. II Ясно, что каждый ЛЗ-сегмент принадлежит одной и только одной окрестности. Таким образом, в число исходных данных наряду со словарем и языком должно быть включено некоторое отношение эквивалентности на словаре, интерпретируемое как совпадение лексических значений. Это приводит нас к рассмотрению в качестве исходного объекта упорядоченной тройки (V, L, Г), где V — конечное множество (словарь), L — язык в словаре V и Г — эквивалентность на V. Такую тройку мы назовем лексически размеченным языком; классы эквивалентности по Г будем называть окрестностями. Для произвольной эквивалентности р на V и произвольного йеУ мы будем обозначать через р(а) тот р-класс, который содержит а. Пусть (V, L, Г) —лексически размеченный язык. Эквивалентности Si, и Г индуцируют две системы подмножеств словаря V: систему семейств и систему окрестностей. Определим теперь с помощью тех же эквивалент- ностей еще две системы подмножеств V: систему классов и систему типов. 1) Для произвольного семейства а, соответственно для произвольной окрестности у, будем называть классом, порожденным семейством а (окрестностью у), объединение всех окрестностей (соответственно семейств), пересекающихся с а (с у). 2) Классы эквивалентности, L-производной для Г (эта эквивалентность будет обозначаться TLir), мы будем называть типами. Классы, в отличие от типов, не обязаны быть попарно непересекающимися множествами. Это, однако, имеет место в одном интересном частном случае, который мы сейчас рассмотрим. Лексически размеченный язык (V, L, Г) называется однородным, если, каковы бы ни были две окрестности, пересекающиеся с одним и тем же семейством, любое семейство, пересекающееся с одной из этих окрестностей, пересекается и с другой, или, другими словами, если из aSLb следует, что для любого а'еГ(й) найдется 6'еГ(1>) такое, что a'SLb' (содержательно— из взаимозамещаемости хотя бы одной формы
§ ПИ.З] ОКРЕСТНОСТИ, КЛАССЫ И ТИПЫ 329 слова*) А с некоторой формой слова В следует, что и любая форма слова А взаимозамещаема с какой-либо формой слова В). Замечание. Легко понять, что приведенное определение равносильно следующему: лексически размеченный язык однороден, если, каковы бы ни были два семейства, пересекающиеся с одной и той же окрестностью, любая окрестность, пересекающаяся с одним из этих семейств, пересекается и с другим. Таким образом, семейства и окрестности в определении однородности равноправны. Пример 1. Рассмотрим шесть предложений: Есть новый дом, Он боится нового дома, Он идет к новому дому, Он любит новый дом, Он знакомится с новым домом^ Он говорит о новом доме. Обозначим через L множество, состоящее из этих предложений и всех тех, которые можно получить из них, подставляя вместо форм слова дом соответствующие формы слов стол, лампа, грядка и изменяя, если нужно, прилагательные так, чтобы предложение осталось правильным. Через V обозначим множество всех ЛЗ-сегментов **), встречающихся в цепочках из L. Эквивалентность Г определим естественным образом (например, дом Г дому, ..., новый Г новым Г новую ... и т. п.). Легко убедиться, что SL {дом) = {дом, стол), SL(naM- пе) = {лампе, грядке) и т. д. Непосредственно проверяется, что лексически размеченный язык (V, L, Г) однороден. Имеем, например, дом Stj стол; для ЛЗ-сегмента дому взаимозамещаемой с ним формой слова стол будет столу, для домом — столом и т. п. (рис. 17, о)). Добавим теперь к V всевозможные ЛЗ-сегменты, являющиеся формами единственного числа слов ведро, дерево, и к L — предложения, полученные из шести исходных заменой форм слова дом формами слов вед- ро, дерево так же, как раньше. Эквивалентность Г доопределим естественным образом. Новый лексически *) Точнее — лексемы. (Лексема — это «слово как единица словаря» [Зализняк 1967, стр. 20]; разумеется, речь здесь идет об обычном словаре, а не о словаре в том смысле, в котором это слово постоянно употребляется в настоящей книге.) **) Фактически мы выписываем сегменты (ср. сноску *) на стр. 327).
330 ЗАМЕЩАЕМОСТЬ [П. II размеченный язык — обозначим его (V, U, Г') —уже не будет однородным. Действительно, легко проверить, что Sl' (дом) = {дом, стол} и Sl' (дому) = {дому, столу, ведру, дереву}. Поэтому SLr (ведру) Г) Г' (дом) = {дому} ф Ф0, но Г (ведру) П St' (дом)=0 (рис. 17,6)). Если, наконец, добавить к каждому предложению из U придаточное который (-ая, -ое) всем понравился дом дому домом стол столу столом ь. дом дому ■ бедро бедру а) 6) Рис. 17. (-ась, -ось) (с соблюдением согласования) и доопределить соответствующим образом V и Г', то полученный лексически размеченный язык (V", L", Г") снова будет однородным, так как в нем каждое семейство существительных содержит формы слов только одного рода; например, ведру нельзя заменить на дому в предложении Он идет к новому ведру, которое всем понравилось. Множества Г" (дом)\]Т" (стол), Г" (лампа) U Г" (грядка) и Г" (ведро) U Г" (дерево), т. е. множества всех форм существительных одного рода, будут, очевидно, в (V",L",Y") классами. Окрестность Г" (новый) образует отдельный класс. Обозначая через 9 алфавитный гомоморфизм (V")* на (V"IY")*, видим, что все окрестности существительных взаимозамещаемы относительно 9(L") (поскольку для каждого из слов, согласующихся с существительными, — новый, который, понравился, — формы всех трех родов входят в одну окрестность). Поэтому существительные образуют тип. Остальные классы и типы,
« пп.3] ОКРЕСТНОСТИ, КЛАССЫ И ТИПЫ 331 как легко убедиться, совпадают с окрестностями. В частности, особый тип образуют все формы слова новый; легко понять, что если бы мы добавили к V" еще какие- нибудь прилагательные, соответствующим образом расширив L" и доопределив Г", то все прилагательные составили бы один класс и один тип (а прочие классы и типы остались бы без изменения). Таким образом, классы в (V", L", Г") попарно не пересекаются, так что отношение «принадлежать одному классу» есть эквивалентность на V". Сразу видно, что эта эквивалентность является L''-регулярным укрупнением Г" и ее Z/'-производная эквивалентность совпадает с TV', г". Следующие рассмотрения показывают, что такая же ситуация имеет место для всякого однородного лексически размеченного языка. Теорема ПИ. 5. В однородном лексически размеченном лзыке всякий класс порождается любым семейством (любой окрестностью), пересекающимся (-ейся) с ним. Доказательство ввиду замечания, сделанного после определения однородности, достаточно провести для случая класса, порожденного семейством. Пусть (V, L, Г) —однородный лексически размеченный язык и х— класс, порожденный семейством а. Рассмотрим произвольное семейство а', пересекающееся с х, и порожденный им класс х'. Условие а'' Л х ^ 0 означает, что а' пересекается с некоторой окрестностью, пересекающейся с а; поэтому, по вышеупомянутому замечанию, любая окрестность, пересекающаяся с а, пересекается и с а', и обратно, что дает х = х'. Пусть теперь у — произвольная окрестность, пересекающаяся с х, и х"— порожденный ею класс. Окрестность у пересекается с некоторой окрестностью, пересекающейся с а, и, значит, совпадает с ней; таким образом, у П а ф 0. Если а е х, то Г (а) пересекается с а и, стало быть (пр определению однородности), SL(a) пересекается с у, что означает SL{a) ^ х", так что ое%". Следовательно, х s х". Если 6 б х", то SL(b) пересекается с у; поэтому, по использовавшемуся выше замечанию, Г(Ь) пересекается с а, т. е. Т{Ь) £яи&ех; итак, х" Е х.
332 ЗАМЕЩАЕМОСТЬ [П. II Замечание. Обращение этой теоремы также справедливо, и притом в усиленной форме (см. упражнение ПИ. Ю). Следствие. Если (V, L, Г)—однородный лексически размеченный язык, то любые два его класса либо совпадают, либо не пересекаются. Иначе говоря, существует эквивалентность Кь,т на V такая, что аКь.гЬ тогда и только тогда, когда а и Ь принадлежат одному классу. Ясно, что Кь,т является укрупнением для SL и для Г, Но сверх того имеет место Теорема ПП.б. Если (V, L, Г) — однородный лексически размеченный язык, то Кь,г является L-pe- гулярным укрупнением Г. Доказательство. Нам нужно показать, что в условиях теоремы любые две окрестности, содержащиеся в одном классе, взаимозамещаемы относительно языка 0r(L), где 0г — алфавитный гомоморфизм V* на (К/Г)*. Пусть х — класс, Yi и Y2 — окрестности, содержащиеся в х, и 1, Ti — цепочки окрестностей такие, что Iy^ е 0Г (L). Тогда найдутся такие цепочки х, jeT и такое oevi> что 0гМ = £> 0г(г/) = 11 И xay^L. Ввиду однородности (V, L, Г) класс х порождается некоторым семейством, а отсюда по той же причине следует, что в у2 найдется элемент Ь, взаимозамещаемый с а, так что xby<=L, и поэтому !y2i1 е 0г(£)• Итак, У\^>Уъ обратное доказывается так же. Пусть теперь Ki, г — L-производная эквивалентность для Kl, г- По теореме ПП.б и лемме ПИ.4 Ki,v есть L-регулярное укрупнение Г; поэтому TLi г является укрупнением Ki,v- В то же время по теореме ПП.З из взаимозамещаемости двух окрестностей относительно 0г(£) следует взаимозамещаемость содержащих эти окрестности классов относительно 0#L> г(L) (QKl г — алфавитный гомоморфизм V* на (V/Kl, г)*)> а это означает, что Ki, г есть укрупнение TLt г- Итак, Ki, г = TLt г. В русском языке однородность имеет место лишь для «малых» фрагментов, наподобие рассмотренного в примере 1; как мы сейчас увидим, при существенном расширении этого фрагмента однородность не сохраняется. Но для языков с более простой системой именного словоизменения (идеальный случай — эсперанто)
§ ПП.З] ОКРЕСТНОСТИ. КЛАССЫ И. ТИПЫ 333 можно, видимо, обеспечить однородность и в довольно представительных моделях. Понятие класса может, впрочем, служить основой содержательно интересных «категоризации» и при отсутствии однородности; что же касается понятия типа, то на его лингвистическую интерпретацию условие однородности, видимо, существенным образом не влияет. Проиллюстрируем это на примере, которым мы и завершим настоящее приложение. Пример 2. Расширим построенный в примере 1 лексически размеченный язык (V", L", Г"), добавляя к L" последовательно следующие предложения: 1) все предложения, получаемые из прежних заменой форм единственного числа существительных и прилагательных соответствующими формами множественного числа *) и одновременной заменой придаточного который (-ая, -ое) всем понравился (-ась, -ось) другим придаточным: один (одна, одно) из которых всем понравился (-ась, -ось), причем должна сохраняться грамматическая правильность **); 2) все предложения, получаемые из имеющихся после предыдущего шага заменой форм существительных и прилагательных формами любых других существительных, соответственно прилагательных, с сохранением грамматической правильности, а также выбрасыванием прилагательных ***); 3) все предложения, получаемые из имеющихся после шага 2) заменой форм глаголов, кроме есть и понравился (-ась, -ось), соответствующими формами любых других глаголов, для которых это возможно без нарушения грамматической правильности; *) При этом следовало бы перейти от орфографической записи к акцентуированной орфографической [Зализняк 1967, стр. 9], т. е. обозначать ударение, иначе такие формы, как окна и бкна, будут совпадать, что для наших целей нежелательно. Для простоты мы будем, однако, ставить знак ударения лишь там, где без него возможна путаница. **) Мы могли бы обойтись здесь без таких понятий, как существительное, прилагательное, число, падеж и т. п. (ср. стр. 314), но тогда пришлось бы задавать предложения списком. Поскольку наш пример носит чисто иллюстративный характер, мы ради удобства изложения разрешаем себе использование указанных понятий. ***) При этом мы считаем тождественными ЛЗ-сегменты о и об (фонетически обусловленные варианты предлога).
334 ЗАМЕЩАЕМОСТЬ [П. II 4) все предложения, получаемые из имеющихся после шага 3) заменой местоимения он на я, ты, мы, вы, они соответственно, с одновременным изменением форм глаголов, обеспечивающим сохранение грамматической правильности. Одновременно расширим словарь, добавляя к нему все слова, встречающиеся в новых предложениях; окрестности доопределим естественным образом, причем такие ЛЗ-сегменты, как стол и столы, новый и новые, идет и идут, будем относить каждый раз к одной окрестности*), в одну окрестность объединим также все личные местоимения. Мы построили, таким образом, еще один лексически размеченный язык — пусть это будет (Vo, L0, Г0). Посмотрим, как выглядят в нем семейства, классы и типы. ЛЗ-сегменты, входящие в Vo, можно разделить на «типовые» (формы существительных, прилагательных и глаголов, кроме есть и понравился, -ась, -ось) и «изолированные» (все прочие). Для каждого из «изолированных» ЛЗ-сегментов непосредственно ясно, что он не взаимозамещаем ни с каким другим, т. е. образует одноэлементное семейство. Ясно также, что форма существительного, прилагательного или глагола может быть замещаема только на форму существительного же, прилагательного и глагола соответственно. Учитывая это замечание, найдем семейства «типовых» ЛЗ-сегментов. Пусть S — некоторая окрестность существительного. Назовем «парадигмой» окрестности S упорядоченную систему двенадцати ЛЗ-сегментов из S: (sit ..., s12), в которой на первом месте стоит форма именительного падежа единственного числа данного существительного, на втором — форма родительного падежа единственного числа, . .., на двенадцатом — форма предложного падежа множественного числа. Если данное существительное не имеет каких-либо падежно-числовых форм, на соответствующих местах парадигмы будем ставить 0. Аналогично определим парадигму окрестности прилагательного (состоящую из 72 родо-падежно-число-«одушевленност- *) Для существительных это не единственный содержательно естественный способ выделения окрестностей — иногда такие формы, как стол и столы, относят к разным лексемам. См. об этом [Зализняк 1967, стр. 55—57].
§ ПП.З] ОКРЕСТНОСТИ, КЛАССЫ И ТИПЫ 335 ных» форм) и окрестности глагола (состоящую из 6 лично-числовых форм настоящего времени) *). Для краткости мы будем называть ЛЗ-сегменты, являющиеся формами существительных, прилагательных и глаголов, С-сегментами, П-сегментами и Г-сегментами соответственно. Будем говорить также о С-, П- и Г-се- мействах, С-, П- и Г-окрестностях и т. д. Теперь нетрудно проверить (это предоставляется читателю), что С-сегменты s и s', относящиеся к лексемам S и S' соответственно, тогда и только тогда взаимозамещаемы, когда выполняются следующие два условия: a) s занимает в своей парадигме все те и только те места, которые s' занимает в своей; б) для каждой па- дежно-числовой формы лексемы S, реализуемой ЛЗ-сег- ментом s, множество согласующихся с этой формой П- сегментов то же самое, что и для соответствующей формы лексемы S'. Например, С-сегменты окно и здание взаимозамещаемы. С-сегменты окно и поле не взаимозамещаемы, так как не выполнено условие а): С-сегмент поле занимает в своей парадигме, в частности, шестое место, тогда как окно в своей парадигме этого места не занимает (так что поле нельзя заменить на окно в предложении Он говорит о новом поле, которое всем понравилось). Для С-сегментов/поргье и кофе условие а) выполнено (оба они занимают в своих парадигмах все места), но не выполнено условие б): множества П-сегментов, согласующихся с формами винительного падежа единственного **) числа соответствующих лексем, различны (и поэтому портье нельзя заменить на кофе в Он любит нового портье, который всем понравился). Среди С-семейств будут, например, такие, как {дом, гвоздь, .. .}, {дома, гвоздя, ...}, {дома, гвозди, ...}, {тигр, конь, ...}, {тигра, коня, ...}, {тигры, кони, ...}, {дому, гвоздю, тигру, коню, ...}, {окна, ведра, ...}, {здания, решения,...}, {окно, ведро, здание, решение,...}. *) Для простоты мы считаем, что, например, для существительного каждая падежно-числовая форма реализуется единственным образом, хотя на самом деле это не всегда так (ср. лампой и лампою); если возможны разные (свободные) варианты, будем предполагать, что выбран «более регулярный» (лампой, а не лампою). **) Равно как и множественного.
336 ЗАМЕЩАЕМОСТЬ [П. II Легко заметить, что однородность для (V0, L0, Г0) не имеет места: например, окрестности С-сегментов дом и тигр пересекаются с семейством {дому, тигру, ...}, но семейство {дом, ...}, пересекающееся с первой из этих окрестностей, не пересекается со второй (т. е. С-сегмент дом не взаимозамещаем ни с одной формой лексемы тигр); аналогично ведут себя окрестности С-сегментов окно и поле *). Легко видеть, далее, что П-сегменты s и s' взаимо- замещаемы тогда и только тогда, когда s занимает в своей парадигме в точности те места, которые s' занимает в своей. Так, новый и синий, новых и больших взаи- мозамещаемы, а новый и синяя, новый и большой—нет. Чтобы описать Г-семейства, введем следующее понятие. Скажем, что два глагола (Г-лексемы) имеют одинаковые схемы управления, если среди тех пяти падежных и предложно-падежных конструкций, которые встречаются в наших предложениях ((1) род. пад. без предлога; (2) к + дат. пад.; (3) вин. пад. без предлога; (4) с + тв. пад.; (5) о + предл. пад.), эти глаголы могут управлять в точности одними и теми же**). Одинаковые схемы управления имеют, например, глаголы знакомиться и соглашаться (управляют конструкцией (4)), вспоминать и забывать (управляют конструкциями (3) и (5)). Легко убедиться теперь, что два Г-сегмента тог- *) Несколько расширив модель, можно устранить взаимозаме- щаемость С-сегментов дому и тигру и вообще форм неодушевленных существительных с формами одушевленных; достаточно добавить предложения типа Он идет к дому, который все видели (... к тигру, которого ..., ... к домам, один из которых ..., ... к тиграм, одного из которых ...). В то же время окну и полю останутся, видимо, взаимозамещаемыми при добавлении любых правильных предложений. (Аналогично мышь и мышка при отсутствии взаимозаменяемости мыши и мышки и т. п.) Поэтому действительным источником неоднородности можно считать наличие существительных, одинаково согласующихся (т. е. не различающихся родом и одушевленностью), но по-разному склоняющихся (т. е. имеющих разные схемы склонения— см. ниже), а также по-разному склоняющихся прилагательных (как новый и большой — см. ниже). **) Говоря, что глагол может управлять той или иной конструкцией, мы подразумеваем, что он может ею управлять при отсутствии других дополнений (так как в Ц нет предложений более чем с одним дополнением). Например, глагол направлять мы не считаем управляющим конструкцией (2), поскольку нельзя сказать * Он направляет к берегу, хотя и можно Он направляет лодку к берегу.
§ II11.3] ОКРЕСТНОСТИ, КЛАССЫ И .ТИПЫ 337 да и только тогда взаимозамещаемы, когда они занимают в своих парадигмах одинаковые места *) и соответствующие лексемы имеют одинаковые схемы управления. Переходя к классам, сразу видим, что С-семейства и С-окрестности порождают, вообще говоря, разные классы. Так, класс к, порождаемый окрестностью у = {дом, дома, ...}, не порождается никаким семейством. (В самом деле,- семейство, порождающее х, пересекалось бы с у, непосредственным перебором пересекающихся с у семейств— их имеется 10 — нетрудно убедиться, что ни одно из них не может порождать х. Например, класс, порождаемый семейством Оу={дом, гвоздь, ...}, не пере* секается с окрестностью у'= {тигр, тигра, ...}, тогда как класс х с ней пересекается, поскольку он содержит семейство аз={дому, гвоздю, тигру, ...}; в свою очередь, класс, порождаемый семейством аз, содержит окрестность у', но х ее не содержит, так как тигр ф. к. Для остальных семейств аналогично.) Нас будут интересовать С-классы, порождаемые семействами. Каждый из вышеприведенных примеров С-семейств сразу дает пример такого класса, нужно только собрать вместе все формы тех существительных, для которых одна какая- нибудь форма входит в данное семейство. Эти примеры показывают, в частности, что класс, порожденный С-се- мейством, м^окет быть собственной частью другого такого класса. Возможно и частичное пересечение (например, классы, порождаемые семействами {поле, чудовище, ...} и {окна, поля, ...}). Определим на V0 следующее отношение Р: sPs' тогда и только тогда, когда любой класс, порождаемый семейством, либо одновременно содержит, либо одновременно не содержит s и s'. Это отношение является, очевидно, эквивалентностью; подмножества (классы эквивалентности), на которые оно разбивает Vo, мы назовем приведенными классами. Ясно, что всякий приведенный класс есть объединение окрестностей. Приведенные С-классы имеют весьма простой содержательный смысл; чтобы выяснить его, введем два новых понятия. *) Г-сегмепт может занимать в парадигме только одно место* 12 А. В. Гладкий
338 ЗАМЕЩАЕМОСТЬ [П. 11 Будем говорить, что два существительных (С-лексе- мы) с парадигмами (si, ..., S12) и {s'\, ..., sb) имеют одинаковые схемы склонения, если: а) тогда и только тогда s, = 0, когда s'i = 0; б) тогда и только тогда St=Sj, когда s'i = si Например, существительные дом, гвоздь, ведро, дерево имеют одинаковые схемы склонения. Другая схема склонения представлена словами тигр, конь. Еще примеры схем склонения: {поле, море, ...}, {лампа, грядка, ...}, {вещь, соль, путь, ...}, {лань, дочь, ...}, {пальто, кофе, какаду, мадам, ...}, {сани, очки, ...}*). Скажем далее, что два существительных имеют одинаковые схемы согласования, если с одинаковыми падежно-числовыми формами этих существительных согласуются в точности одни и те же формы прилагательных. Одинаковые схемы согласования имеют, например, существительные дом, гвоздь, путь, кофе; тигр, конь, какаду дают другую схему согласования и т. д.**). Нетрудно убедиться теперь, что окрестности двух существительных тогда и только тогда содержатся в одном приведенном классе, когда эти существительные имеют одинаковые схемы склонения и одинаковые схе« мы согласования. Для прилагательных классы, порождаемые семействами и окрестностями, также не совпадают. Приведен* ные классы и здесь имеют простую интерпретацию; именно, определив для прилагательных схемы склонения так же, как для существительных, без труда убеждаемся, что две П-окрестности содержатся в одном приведенном классе тогда и только тогда, когда соответствующие лексемы имеют одинаковые схемы склонения***). *) В последнем примере на первых шести местах парадигмы стоят нули (при традиционной трактовке Pluralia tantum; о возможности другой трактовки см. [Зализняк 1967, стр. 57—61]). **) Схема согласования определяется, очевидно, родом и одушевленностью (неодушевленностью), так что существительные, имеющие все падежно-числовые формы, дают шесть схем согласования (при традиционной трехродовой системе — ср. [Зализняк 1967, стр. 78—80]). ***) Приведенных П-классов, кажется, только два: {новый, синий, ,..} и {большой, прямой, ...}.
§ ПП.З] ОКРЕСТНОСТИ, КЛАССЫ И ТИПЫ 339 Г-классы устроены проще. Здесь имеет место «локальная однородность»: если в формулировке условия однородности заменить слова «семейство» и «окрестность» на «Г-семейство» и «Г-окрестность» соответственно, то наша модель будет удовлетворять такому условию. Поэтому классы, порождаемые Г-семействами и Г-окрестностями, совпадают; два Г-сегмента принадлежат одному классу (или, безразлично, приведенному классу) тогда и только тогда, когда соответствующие лексемы имеют одинаковые схемы управления. Обратимся, наконец, к типам. Все существительные образуют один тип — это устанавливается точно так же, как для лексически размеченного языка {V", L", Г") в примере 1. Аналогичным образом легко видеть, что и все прилагательные принадлежат одному типу. Наконец, тип глагола зависит только от того, какими предлогами он может управлять; таким образом, отличие Г-типов от Г-классов сводится к следующему: если два Г-класса различаются только тем, что либо а) глаголы одного из этих классов могут управлять конструкцией (1), а глаголы другого класса не могут, но могут управлять конструкцией (3), либо б) то же с переменой местами конструкций (1) и (3), либо в) глаголы одного класса могут управлять каждой из конструкций (1) и (3), а другого — только одной определенной, то такие классы содержатся в одном типе (так, избегать, любить и ждать попадут в один тип); остальные Г-типы совпадают с Г-клгухами. Впрочем, *в отношении Г-типов наш пример не показателен, так как он охватывает слишком мало случаев употребления глаголов. Все приведенные рассмотрения останутся, однако, в силе, если расширить L0, включив туда предложения с другими падежными и предложно- падежными конструкциями (в любом количестве, ограниченном только реальным наличием таких конструкций в языке) и, в частности, предложения с несколькими дополнениями (среди них и такие, где разные дополнения выражены конструкциями с одним и тем же предлогом, ср. знакомится с делами с прошлого года), а также без дополнений; будем считать, что вместе с каждым предложением наш язык включает и все те, которые получаются из него перестановкой дополнений. При этом 12*
340 ЗАМЕЩАЕМОСТЬ [П. II принципы выделения семейств, классов и типов не изменятся; для существительных и прилагательных не изменятся и сами семейства, классы и типы. Для глаголов реальные семейства, классы и типы станут другими — не только потому, что добавятся новые глаголы, но и потому, что для многих старых глаголов изменятся схемы управления. Ограничимся описанием Г-типов; ему можно придать следующий вид. Перенумеруем как-нибудь все предлоги: ри ..., ps. Назовем шаблоном управления произвольную упорядоченную систему s + 1 целых неотрицательных чисел и скажем, что шаблон управления (/о, к, • • •. is) допускается некоторым глаголом, если хотя бы в одном предложении нашего языка, содержащем этот глагол, имеется точно £0 беспредложных дополнений, ii дополнений с предлогом pi, h с предлогом /72 и т. д. Нетрудно понять, что окрестности двух глаголов содержатся в одном типе тогда и только тогда, когда совпадают множества допускаемых этими глаголами шаблонов управления. Упражнения П11. I.» а) Указать пример бесконечного линейного языка, не имеющего нетривиальной замещаемости (определение см. в упражнении 8.6). б) Может ли бесконечный ОА-язык не иметь нетривиальной замещаемости? ПИ. 2. Найти полные и приведенные конфигурациочные характеристики следующих языков (в их «наименьших словарях»): а) {abode, а)е, bbcd, bf, gde, abc, g}; б) {bab}\]a+; в) {fg}U[c(d+-{d})eg]. ПИ. З. Показать, что язык а {ее, ccdd)* U {//, ccdd)* b является конечно характеризуемым в словаре {а, Ь, с, d, e, f) и не является таковым в словаре {а, Ь, с, d, e, f, g). ПИ. 4. Назовем А-грамматикой без омонимии такую А-грамматику, в диаграмме которой никакие две дуги, помеченные одним и тем же символом, не могут, исходить из разных узлов. а) Показать, что язык, порождаемый А-грамматикой без омонимии, конечно характеризуем. б) Указать' алгоритм, позволяющий для всякой А-грамматики без омонимии Г построить приведенную конфигурационную характеристику языка L(T). [Гладкий 1963(a)].
УПРАЖНЕНИЯ - 341 ПП. 5. Указать алгоритм, позволяющий для любой А-грамматики Г с основным словарем V и любых цепочек х, у е У* распознать, имеет ли место х ==> у. ЦТ) ПН. в. Показать, что для любого А-языка L в словаре V, любого deF и любого г=1, 2, ... множество Kr(b, L) конфигураций ранга г языка L с результирующим b также является А-язы- ком, и при этом по А-грамматике Г, символу Ь и числу г можно построить А-грамматику, порождающую Kr{b, L (Г)) [Гладкий 1984 (а)]. ПП.7. Показать, что в линейном языке {fg, ae, ad, ag}(]{dmaneg\ n = 0, 1, ...; т = 1 п + 1} каждая цепочка вида ' dk+l~!ake (£ = 0, 1, ...; / = 0, 1 k) является конфигурацией ранга / + 1 с результирующим f [Лучкин 1966]. ПП. 8. Указать пример лексически размеченного языка (V, L, Г), в котором TL г не является укрупнением SL [Успенский 1957]. ПП. 9. Пусть (V, L, Г) — лексически размеченный язык. Определим на V отношение эквивалентности RL г следующим образом: xRL Ту, если существуют xQ, ..., xk e V такие, что xQ = x, xk = у и для каждого / = 1 k либо xi_lS,xl, либо х^.Тх^ (Классы эквивалентности RL г называются разделами [Успенский 1957].) а) Всегда ли RL г является L-регулярным укрупнением KL г? б) Показать, что если ТL г является укрупнением Sj (ср. упражнение ПП. 8), то L-производная эквивалентность для RL г совпадает с TL г. ПН. 10. Показать, что каждое из следующих условий достаточно для однородности лексически размеченного языка: а) всякий кла«, порожденный семейством, порождается любым семейством, с ним пересекающимся; б) всякий класс, порожденный семейством, порождается любой окрестностью, с ним пересекающейся; в) всякий класс, порожденный окрестностью,, порождается любым семейством, с ним пересекающимся; г) всякий класс, порожденный окрестностью, порождается любой окрестностью, с ним пересекающейся. ПП. 11. Является ли достаточным условием однородности лексически размеченного языка попарное непересечение различных классов, порожденных семействами (или порожденных окрестностями, или любых)? ПП. 12. Пусть (V, L, Г)—лексически размеченный язык. Показать, что: а) символы х, у е V тогда и только тогда принадлежат одному приведенному классу, когда любой элемент Г(дг) взаимозамещаем
342 ЗАМЕЩАЕМОСТЬ с некоторым элементом Г (у), и обратно (определение И. И. Ревзина [Ревзин 1967, стр. 159]); б) непустое подмножество V тогда и только тогда является приведенным классом, когда оно может быть получено из классов, порожденных семействами, с помощью операций пересечения и вычитания, и никакое непустое множество, представимое таким образом, не является его собственной частью. ПИ. 13. Показать, что для любого лексически размеченного языка (V, L, Г): а) ^.-производная эквивалентность для отношения «принадлежать одному приведенному классу» совпадает с TL T [Ревзин 1967, стр. 159]); б) это отношение является укрупнением Sl тогда и только тогда, когда {V, L, Г) однороден [Ревзин 1967, стр. 160].
БИБЛИОГРАФИЧЕСКИЕ ЗАМЕЧАНИЯ К главе 1. Понятие порождающей грамматики введено Н. Хомским [Chomsky 1956, 1957, 1959(a) *), 1963]. (Родственное понятие «полу- туэвской системы» рассматривалось в теории алгоритмов и раньше — см., например, [Юеепе 19521**).) Им же введены понятия НС-грамматики, Б-грамматики и А-грамматики (см. указанные выше работы; Н. Хомский пользуется терминами «грамматики класса 1»для НС-грамматик, «грамматики класса 2» для Б-грамматик и «грамматики класса 3» для А-грамматик). Регулярные выражения введены С. Клини [Kleene 1956]. К главе 2. Сигнализирующие функции детерминированных вычислений введены в 50-х гг. Г. С. Цейтиным (не опубликовано; см. [Яновская 1959, стр. 44, Трахтенброт 1967, стр. 9]) и независимо Б. А. Трахтенбротом [Трахтеиброт 1956]. Общая теория сигнализирующих функций детерминированных вычислений — перенос ее идей на случай грамматик составляет основную часть содержания § 2.1 — построена М. Блюмом [Blum 1967]. Временная сложность и емкость для грамматик были введены — под влиянием идей Б. А. Трахтен- брота — в [Гладкий 1964(b), 1966]. Понятия левой и правой глубины восходят к работе В. Ингве [Yngve I960], понятие активной емкости— к работам Мэри Кэтрин Интемы [Yntema 1967] и Б. Брейнерда [Brainerd 1967]; в общем виде последнее понятие сформулировано Э. Д. Стоцким [Стоцккга 1969]. Понятие разброса введено в [Гладкий -г- Диковский 1970]. Лемма о сцеплении доказана для НС-грамматик в [Гладкий 1964(b)] и распространена на общий случай в [Book 1969]. Теорема 2.1 доказана для частного случая в [Гладкий 1963(b)]. Теорема 2.2 принадлежит Р. Буку [Book 1969]. Теоремы 2.4 и 2.5 — это известные теоремы Г. С. Цейтина (см. [Яновская 1959, стр. 45, Трахтенброт 1967, стр. 152]) и М. Рабина [Rabin 1959***), Трахтенброт 1967, стр. 194] из теории сложности вычислений, пере- *) Эта работа содержит неточности в определениях, впоследствии замеченные и исправленные К. Чуликом [Culik 1965]. **) В русском переводе этой книги — «полусистема Туэ» (стр. 340). ***) В этой работе нет доказательства.
344 БИБЛИОГРАФИЧЕСКИЕ ЗАМЕЧАНИЯ несенные на случай грамматик. Приводимые нами доказательства этих теорем по существу заимствованы из книги [Трахтенброт 1967]. Изучению временной сложности грамматик посвящена книга [Book 1969]. К главе 3. Понятие дерева вывода восходит к основополагающим работам Н. Хомского [Chomsky 1956, 1957, 1959(a), 1963]. Ему же принадлежат понятие неукорачивающей грамматики и теорема 3.1 [Chomsky 1959(a)]. Теорема 3.2, в несколько иной форме, доказана в [Kuroda 1964]. Другое доказательство существования для всякой грамматики без растяжения эквивалентной ей НС-грамматики (положенное в основу доказательства теоремы 3 5) было дано в [Гладкий 1963(b)]. Теорема 3.3 отмечена в [Гладкий 1966]. (Эффективная) замкнутость класса НС-языков относительно пересечения доказана независимо в трех работах [Landweber 1963, Гладкий 1963(b), Kuroda 1964]. Теорема 3.7 доказана в [Гладкий 1964(b)]. Использованная в ее доказательстве техника следов независимо разработана — применительно к детерминированным машинам Тьюринга — Б. А. Трахтен- бротом [Трахтенброт 1964], Я. М. Барздинем [Барздинь 1965], М. Ра- бином [Rabin 1963], ф. Хенни [Hennie 1965]. Лемма 3.2 принадлежит фактически Б. А. Трахтенброту [Трахтенброт 1964]. Пример, аналогичный примеру 1 из § 3.4, был впервые построен Р. Парикхом [Parikh 1961]. Примеры односторонних НС-грамматик, выводящих за пределы класса Б-языков, были указаны независимо Л. Хейнсом [Haines 1965]*), Л. Г. Самойленко [Самойленко 1968] и И. Гавелом [Havel 1969]. Теорема 3.8 доказана Л. Хейнсом [Haines 1969, 1970]. К главе 4. Основные факты теории Б-языков были впервые систематизированы— и многие из них впервые получены — в статье' [Ваг- Hillel — Perles—Sfiamir 1961]. В ней содержится практически все изложенное в §§ 4.1, 4.2, а также теорема 4.5 (и некоторые другие результаты, которые будут отмечены ниже). Большую роль в развитии теории Б-языков сыграла работа Р. Парикха [Parikh 1961]**), в которой введено понятие однозначности языка и указан первый пример неоднозначного бесконтекстного языка (пример 3 из § 4.4); там же доказана теорема 4.6. Теорема 4.7 доказана в [Гладкий 1965(6)]. Теорема 4.8 впервые опубликована, видимо, в [Schein- berg I960]; она имеется также в [Bar-Hillel — Perles — Shamir 1961]. Неоднозначность Б-языков изучалась в [Ginsburg — Ullian 1966], где для важного в приложениях случая ограниченных языков (см. упражнение 5.32) получено необходимое и достаточное условие неоднозначности (соответствующие результаты . изложены также в [Ginsburg 1966, гл. 6]). Понятие МП-машины введено Н. Хомским [Chomsky *) О существовании примера, построенного в диссертации [Haines 1965], автору стало известно из рукописи [Haines 1970], любезно присланной ему Л. Хейнсом в конце 1970 г. **) Препринт, впоследствии перепечатанный в [Parikh 1966].
БИБЛИОГРАФИЧЕСКИЕ -ЗАМЕЧАНИЯ 345 1962]*); им же доказана теорема 4.9 [Chomsky 1962, 1963]. Впоследствии эта теорема несколько раз передоказывалась, в частности Р. Эви [Evey 1963] и Г. С. Цейтиным (не опубликовано). Конструкции, используемые для ее доказательства в настоящей книге (леммы 4.12—4.14), навеяны идеями Ю. А. Шрейдера, В. Б. Борщева и М. В. Хомякова [Шрейдер 1969, Борщев — Хомяков 1970] и Л. С. Мо- диной [Модина 1970]. Детерминированные МП-машины впервые рассмотрел М. Шютценберже [Schiitzenberger 1963]; они изучались также С. Гинзбургом и Ш. Грейбах [Qinsburg — Qreibach 1966(6)] и А. Я • Диковским [Диковский 1969]. Теория Б-языков посвящена книга [Qinsburg 1966]. К главе 5. Конечные автоматы в явной форме подвергаются систематическому изучению с 50-х гг. (их называют также «последова- гельностными машинами», «автоматами Мура-Мили»); однако в неявном виде они рассматривались и раньше в теории алгоритмов (головка машины Тьюринга по суш(еству представляет собой конечный автомат; см. [Turing 1936—1937]) и в теории информации (см., например, [Shannon 1948]**)). Теорема 5.3 в неявном, виде установлена Ю. Т. Медведевым [Медведев 1956]; в явной форме впервые опубликована в [Rabin — Scott 1959]. Регулярные языки введены в [Kleene 1956]; там же отмечена (эффективная) замкнутость класса регулярных языков относительно основных операций и доказана теорема, по существу совпадающая с теоремой 5.6. Теорема 5.7 впервые появилась, по-видимому, в [Myhill 1957] и [Nerode 1958]. Изучению ОА- граммагик посвящена работа [Chomsky — Miller 1958]. Линейные грамматики введены в [Schiitzenberger 1961], металинейные — либо в той же работе ***), либо в [Chomsky 1963] и [Chomsky— Schiitzenberger 1963]. МП-машины с ограниченным числом поворотов и ОАЕВ- грамматики изучались в [Qinsburg — Spanier 1966]; в этой работе доказаны теоремы 5.11 и 5.12. К главе в. Категориальные грамматики появились значительно раньше всех других типов формальных грамматик; они были введены в работах С. Лесьневского [Lesniewski 1929] и К,- Айдукевича [Ajdu- kiewicz 1935] и предназначались для описания структуры формальных языков математики. Использовать категориальные грамматики для моделирования естественных языков предложил И. Бар-Хиллел [Bar-Hillel 1953]; он же поставил вопрос о взаимоотношении между категориальными грамматиками и Б-грамматиками, который был ре- *) Сходные конструкции использовались ранее, на неформальном уровне, в теории программирования — см., например, [Burks — Warren — Wright 1954, Samelson — Bauer 1960]. **) Стр. 313 русского перевода. ***) Автор не имел возможности с ней ознакомиться; приводимые здесь сведения о ней заимствованы из [Gross — Lentin 1967].
346 БИБЛИОГРАФИЧЕСКИЕ ЗАМЕЧАНИЯ шен X. Гайфманом [Bar-Hillel — Qaifman — Shamir I960]*). Позднее другое доказательство теоремы X. Гайфмана об эквивалентности категориальных грамматик и Б-грамматик было дано А. Я. Диков- ским и Л. С. Модиной [Диковский— Модина 1968]**). В настоящей книге излагается (с рядом модификаций) первоначальное доказательство X. Гайфмана***). Теорема о нормальной форме доказана Шейлой Грейбах ([Greibach 1965]; другое, более простое доказательство см. [Greibach 1967]). Простые домииационные грамматики (грамматики зависимостей) введены Д. Хейсом [Hays 1961]. Их связь с Б-грамматиками была изучена в работе X. Гайфмана [Gaifman 1961]****), где доказана теорема, близкая к теореме 6.5. В приводимой здесь форме эта теорема дана С. Я. Фитиаловым [Фитиалов 1968]; им же введено понятие степени грамматики (и степени системы составляющих). Домииационные грамматики общего вида введены М. И. Белецким [Белецкий 1967]. Задание Б-языков с помощью нормальных систем уравнений предложено С. Гинзбургом и Г. Рай- сом [Ginsburg —г Rice 1962], с помощью формальных степенных рядов— М. Шютценберже [Schutzenberger 1959, Chomsky — Schutzenberger 1963]. Теорема 6.7 впервые опубликована, кажется, в [Chomsky — Schutzenberger 1963]. К главе 7. Теоремы 7.1 и 7.2 в неявном виде фактически содержатся в [Yngve I960]; в явной форме теорема 7.1 впервые изложена, видимо, в [Шрейдер 1966]. Теорема 7.4 принадлежит Э. Д. Стоцкому Стоцкий 1969]. Теорема 7.5 доказана С. Гинзбургом и Э. Спеньером Ginsburg — Spanier 1968]; в этой же работе впервые указаны примеры Б-языков сколь угодно большой активной емкости и Б-языка, не являющегося ОАЕ-языком (при этом существенным образом использованы результаты работы [Yntema 1967], где, в частности, построен пример Б-языка, не принадлежащего замыканию класса линейных языков относительно подстановки). Те же результаты получены независимо в [Диковский 1972 (а, б)] другим способом — с помощью введенного в этих же работах понятия густоты (там же доказана лемма 7.2). Приводимое нами доказательство теоремы 7.5 воспроизводит во всех основных чертах рассуждения из работ А. Я. Диковского; оттуда же взят (с некоторым видоизменением) пример 1 в § 7.2. Понятие самовставления и лемма 7.3 имеются уже в [Chomsky 1959(a, б)]. Теорема 7.6 (доказанная автором в процессе работы над книгой) представляет собой ответ на вопрос, поставленный С. Я. Фитиаловым. *) В этой же работе, видимо, впервые появилось определение категориальной грамматики в принятой сейчас форме, а также самый термин «категориальная грамматика». **) В 1966 г. X. Гайфман в устной беседе сообщил автору, что эта теорема была доказана также Н. Хомским. Однако в литературе упоминаний о доказательстве Н. Хомского обнаружить не удалось. ***) Доказательство А. Я- Диковского и Л. С. Модиной существенно проще, но опирается на теорему о нормальной форме. Автор счел более естественным обратный порядок изложения. ****) Препринт, перепечатанный впоследствии в [Gaifman 1965].
БИБЛИОГРАФИЧЕСКИЕ ЗАМЕЧАНИЯ 347 К главе 8. Проблема распознавания самоприменимости машины Тьюринга явилась одной из первых алгоритмических проблем, для которых была доказана неразрешимость [Turing 1936—1937]. Теорема Раиса также представляет собой один из классических результатов теории алгоритмов [Rice 1953]. Доказательства нераспознаваемости п классе НС-грамматик пустоты и конечности языка, а также неразрешимости проблемы эквивалентности НС-грамматик приведены в [Chomsky 1963] (со ссылкой на неопубликованную заметку С. Шайн- берга). Нераспознаваемость бесконтекстности в классе НС-грамматик указана Э. Шамиром [Shamir 1962]. Теорема 8.3 доказана в [Гладкий 1964(6)]. Нераспознаваемость в классе 05-грамматик свойств языка иметь пустое и конечное дополнение и быть ОА-язы- ком, а также неразрешимость проблемы эквивалентности Б-грамма- тик установлены в [Bar-Hillel — Perles — Shamir 1961] с помощью теоремы Поста (см. упражнение 8.14). Техника протоколов (лемма 8.5) предложена в [Гладкий 1965(a)] (и независимо в [Hartmanis 1967]). Нераспознаваемость неоднозначности Б-языков доказана независимо в [Гладкий 1965(6)] и [Ginsburg — Ullian 1966]*). Теорема 8.5 установлена (в несколько иной форме) Ш. Грейбах [Qrei- bach 1968]. Неразрешимость для бесконтекстных и линейных языков проблем распознавания замещаемости, взаимозамещаемости и конфигураций доказана в [Гладкий 1965(a)]. К приложению I. Понятие системы составляющих восходит к грамматической традиции английского языка и американскому структурализму («анализ по непосредственным составляющим»; см. [Bloomfield 1933], [Harris 1961] и в особенности [Wells 1947]). Понятия степени левого и правого ветвления идут от работы В. Ингве [Yngve I960]; строго формально эти понятия впервые введены, видимо, в [Bar-Hillel—Kasher—Shamir 1963]. Понятие степени гнездования введено Н. Хомским [Chomsky 1961]; мы пользуемся этим понятием в видоизмененной форме, данной в [Bar-Hillel — Kasher — Shamir 1963] (эта форма не равносильна первоначальной). Понятие дерева синтаксического подчинения восходит к русской грамматической традиции; в явном виде оно впервые появилось (как часть некоторого более сложного понятия) у Л. Теньера [Tesniere 1959]. Идеи, приведшие к понятиям проективности и слабой проективности, впервые были — в неявной форме — высказаны Г. С. Цейтиным (см. [Цей- тин—Засорина 1961]) и независимо К. Харпером и Д. Хейсом [Harper — Hays 1960]. В явном виде эти, понятия ввели, независимо друг от друга, И. Лесерф [Lecerf 1960]г М. И. Белецкий [Белецкий 1961] и С. Я. Фитиалов [Фитиалов 1962]. (Общепринятые сейчас формулировки, приводимые и в настоящей книге, принадлежат С. Я. Фитиа- лову.) Проективность изучалась с формальной и лингвистической'точек зрения, в частности, в [Белецкий — Григорян — Заславский 1963], *) Содержание этой статьи изложено также в книге [Ginsburg 1966] (гл. 6).
348 БИБЛИОГРАФИЧЕСКИЕ ЗАМЕЧАНИЯ [Дрейзин 1963], [Иорданская 1967]. Описанный в § ГП.З способ установления соответствия между системами согтавляющих и деревьями подчинения указан в [Падучева 1964] (в неформальном виде; формализованное изложение — в [Гладкий 1966]). К приложению П. Начало теории замещаемости было положено работой [Кулагина 1958]. В этой работе было, в частности, введено понятие конфигурации. Определение конфигурации, изложенное в настоящей книге, — основанное на тех же идеях, что и первоначальное определение О. С. Кулагиной, но не равносильное ему, — дано в [Гладкий 1963(a)]; там же введены понятия конфигурационных характеристик и конечно характеризуемого языка и получены теоремы ПИ. 1 и ПП. 2*). Еще одно видоизменение понятия конфигурации было предложено М. Новотным [Novotny 1965(a, б, в)]. Лингвистическая критика конфигурационной модели имеется в [Падучева 1965], стимулированное в значительной степени этой критикой распространение понятия конфигурации на «языки деревьев» — в [Щербакова 1971]. Все основные понятия § ПП. 3 введены в [Кулагина 1958]; там же доказаны теоремы ПП.З—ПП.6. Алгебраическое изложение этих понятий и результатов было дано Д. Н. Ленским [Ленской 1962] **) и М. Новотным [Новотный 1965]. Приведенные классы были введены (под именем «подклассов») И. И. Ревзиным [Ревзин 1962, 1967]. Анализирующим моделям посвящена книга [Marcus 1967], их лингвистическим приложениям — [Ревзин 1967]. *) При понимании конфигураций в смысле первоначального определения эти теоремы не имеют места. **) На языке алгебры бинарных отношений (см. также [трейдер 1970]).
ЛИТЕРАТУРА Барздинь Я. М. Сложность распознавания симметрии на машинах Тьюринга. — Сб. «Проблемы кибернетики», вып. 15, «Наука», 1965, 245—248. Белецкий М. И. Модель языка алгоритма грамматического анализа. — Сб. «Тезисы Конференции по обработке информации, машинному переводу и автоматическому чтению текста», ВИНИТИ, 1961, 12. Белецкий М. И. Бесконтекстные и доминационные грамматики и связанные с ними алгоритмические проблемы. — Кибернетика, 1967, № 4, 90—97. Белецкий М. И., Григорян В. М., Заславский И. Д. Аксиоматическое описание порядка и управления слов в некоторых типах предложений. — Сб. «Математические вопросы кибернетики и вычислительной техники», № 1, Ереван, 1963, 71—85. Б о р щ е в В. Б., Хомяков М. В. Окрестностные грамматики и модели перевода. Часть I. Окрестностные грамматики. — Научно- техническая информация, сер. 2, 1970, № 3, 39—44. Гладкий А. В. Конфигурационные характеристики языков. — Сб. «Проблемы кибернетики», вып. 10, Физматгиз, 1963(a), 251—260. Гладкий А. В. О распознавании замещаемости в рекурсивных языках. — Алгебра и логика, 1963 (б), 2, № 3, 5—22. Гладкий А. В. Грамматики с линейной памятью. — Алгебра и логика, 1963(b), 2, № 5, 43—55. Гладкий А. В. Алгоритм распознавания конфигураций для класса автоматных языков. — Сб. «Проблемы кибернетики», вып. 12, «Наука», 1964(a), 243—245. . Гладкий А. В. Алгоритмическая природа инвариантных свойств грамматик непосредственно составляющих. — Алгебра и логика, 1964(6), 3, №2, 17—32. Гладкий А. В. О сложности вывода в грамматиках непосредственно составляющих. — Алгебра и логика, 1964(b), 3, № 5—6, 29—44. Гладкий А. В. Некоторые алгоритмические проблемы для КС- грамматик. — Алгебра и логика, 1965(a), 4, № 1, 3—13. Гладкий А. В. Алгоритмическая нераспознаваемость существенной неопределенности КС-языков. — Алгебра и логика, 1965(6), 4, № 4, 53—64. Гладкий А. В. Лекции по математической лингвистике для студентов НГУ, изд. Новосибирского гос. университета, 1966. Гладкий А. В. Об описании синтаксической структуры предложения. — Computational linguistics, VII. Budapest, 1969, 21—44.
350 ЛИТЕРАТУРА Гладкий А. В. Описание синтаксической структуры предложения с помощью систем синтаксических групп. 1. Формальный аппарат.— Научно-техническая информация, сер. 2, 1971, № 9, 35—38. Гладкий А. В., Диковский А. Я. Теория формальных грамматик. — Труды 2-й Всесоюзной конференции по программированию, Приглашенные доклады (1-й вып.), Новосибирск, 1970, 43—70. Гладкий А. В., Мельчук И. А. Элементы математической лингвистики, «Наука», 1969. Гладкий А. В., Мельчук И. А. Грамматики деревьев. 1. Опыт формализации преобразований синтаксических структур естественного языка. — Сб. «Информационные вопросы семиотики, лингвистики и автоматического перевода», вып. 1, 1971, 16—41. Диковский А. Я- О соотношении между классом всех контекстно-свободных языков и классом детерминированных контекстно- свободных языков. — Алгебра и логика, 1969, 8, № 1, 44—64. Диковский А. Я. Замечание о детерминированных линейных языках. — Сб. «Проблемы кибернетики», вып. 23, «Наука», 1970, 281— 286. Диковский А. Я- Густота — мера сложности вывода в контекстно-свободной грамматике. — Проблемы передачи информации, 1972(a), 8, вып. 2, 92—105. Диковский А. Я. Густота дерева вывода и активная емкость грамматики. — Проблемы передачи информации, 1972(6), 8, вып. 4. Диковский А. Я., Модина Л. С. Минимизация одной функции сложности в классе МП-автоматов и категориальные грамматики сложности 3. — Алгебра и логика, 1968, 7, № 3, 23—37. Д р е й з и и Ф. А. Некоторые свойства связей между словами в предложении. — Научные труды Ташкентского университета, вып. 228, 1963, 33—39. Жолковский А. К-, Мельчук И. А. О семантическом синтезе.— Сб. «Проблемы кибернетики», вып. 19, «Наука», 1967, 177— 238. Зализняк А. А. Русское именное словоизменение, «Наука», 1967. Иорданская Л. Н. Автоматический синтаксический анализ, II, «Наука», 1967. Кулагина О. С. Об одном способе определения грамматических понятий на базе теории множеств. — Сб. «Проблемы кибернетики», вып. 1, Физматгиз, 1958, 203—214. Ленской Д. Н. Об одном применении алгебры бинарных отношений в математической лингвистике. — Уч. зап. Кабардино-Балкарского гос. ун-та, вып. 16, сер. физ.-мат., 1962, 73—80. Лучкин В. Д. О рангах конфигураций контекстно-свободных языков. — Алгебра и логика, 1966, 5, № 3, 59—70. Марков А. А. Теория алгорифмов. — Труды Математического ин-та АН СССР им. В. А. Стеклова, XLII, Изд-во АН СССР, 1954. Мартыненко Г. Я. Статистическое исследование синтаксической сложности предложения (на материале болгарского языка).— Сб. «Информационные вопросы семиотики, лингвистики и автоматического перевода», вып. 1, 1971, 84—101.
ЛИТЕРАТУРА 351 Медведев Ю. Т. О классе событий, допускающих представление в конечном автомате. — Сб. «Автоматы», ИЛ, 1956, 385—401. М о д и н а Л. С. Свертки языков деревьев. — Сб. «Структурно- математические методы моделирования языка. Тезисы докладов и сообщений Всесоюзной научной конференции», ч. II, Киев, 1970, 91— 92. Новотный М. Об алгебраизации теоретико-множественной модели языка. — Сб. «Проблемы кибернетики», вып. 15, «Наука», 1965, 234—243. Падучева Е. В. О -способах представления синтаксической структуры предложения. — Вопросы языкознания, 1964, № 2, 99— 113. Падучева Е. В. О понятии конфигурации. — Вопросы языкознания, 1965, № 1, 56—68. Падучева Е. В. О связях глубины по Ингве со структурой дерева подчинения. — Научно-техническая информация, 1966, № 6, 38—43. Ревзин И. И. Модели языка, Изд-во АН СССР, 1962. Р е в з и н И. И. Метод моделирования и типология славянских языков, «Наука», 1967. Самойленко Л. Г. Об одном классе грамматик непосредственно составляющих. — Кибернетика, 1968, № 2, 102—103. С т о ц к и й Э. Д., О некоторых ограничениях на способ вывода в грамматиках непосредственных составляющих. — Научно-техническая информация, сер. 2, 1967, № 7, 35—38. Стоцкий Э. Д. Понятие индекса в обобщенных грамматиках.— Научно-техническая информация, сер. 2, 1969, № 5, 16—17. Трахтенброт Б. А. Сигнализирующие функции и табличные операторы. — Уч. зап. Пензенского гос. пед. ин-та, IV, 1956, 75—87. Трахтенброт Б. А. Тьюринговы вычисления с логарифмическим замедлением. — Алгебра и логика, 1964, 3, № 4, 33—48. Трахтенброт Б. А. Сложность алгоритмов и вычислений, изд. Новосибирского гос. университета, 1967. Успенский В. А. К определению части речи в теоретико-множественной системе языка. — Бюллетень Объединения по проблемам машинного перевода, 1957, № 5, 22—26. Фитиалов С. Я. О моделировании синтаксиса в структурной лингвистике. — Сб. «Проблемы структурной лингвистики», Изд-во АН СССР, 1962, 100—114. Фитиалов С. Я- Об эквивалентности грамматик НС и грамматик зависимостей. — Сб. «Проблемы структурной лингвистики, 1967», «Наука», 1968, 71—102. Цейтин Г. С. К вопросу о построении математических моделей языка. — Сб. «Тезисы совещания по математической лингвистике», Л., 1959, 45. Цейтин Г. С, Засорина Л. ,№. О выделении конфигураций в русском предложении. — Доклады конференции по обработке информации, машинному переводу и автоматическому чтению текста, ВИНИТИ, 1961, вып. 2. Шрейдер Ю. А. Характеристики сложности структуры текста. — Научно-техническая информация, 1966, N° 7, 34—39.
352 ЛИТЕРАТУРА Шрейдер Ю. А. Окрестностная модель языка. — Tartu Ulikoo- li toimetised, Уч. зап. Тартуского ун-та, вып. 226, 1969, 129—142. Шрейдер Ю. А. Алгебра бинарных отношений. — В кн- С. Маркус, Теоретико-множественные модели языков, «Наука», 1970, 300—330. Щербакова Н. Г. Конфигурации в языках деревьев. — Научно-техническая информация, сер. 2, 1971, № 6, 28—32. Яновская С. А. Математическая логика и основания математики. — Сб. «Математика в СССР за 40 лет», т. I, Физматгиз, 1959, 13—120. Ajdukiewicz К. Die syntaktische Konnexitat. — Studia Philo- sophica, 1935, № 1, 1—27. В a r - H i 1 1 e 1 Y. A. quasi-arithmetical notation for syntactic description. — Language, 1953, 29, № 1, 47—58 *). Bar-Hi 11 e 1 Y., G a i f m a n C, Shamir E. On categorial and phrase structure grammars. — Bull. Res. Council Israel, 1960, 9F, 155—166*). Bar-Hi II el Y., К a she r A., Shamir E. Measures of syntactic complexity. — The Hebrew University of Jerusalem, Applied Logic Branch, Technical Rept, 1963, № 13, August 1963. (Русский перевод: Б а р - X и л л е л И., К а ш е р А., Ш а м и р Е., Меры синтаксической сложности, Кибернетический сборник, нов. серия, вып. 4, «Мир», 1967, 219—227.) В а г - Н i 11 е 1 Y., P e r I e s M., Shamir E. On formal properties of simple phrase structure grammars. — Z. Phonetik, Sprach- wiss. Kommunikationsforsch., 1961, 14, № 2, 143—172*). В loom field L., Language, N. Y., 1933. (Русский перевод: Блумфилд Л., Язык, «Прогресс», 1968.) Blum M. A machine-independent theory of the complexity of recursive functions. — J. Assoc. Computing Machinery, 1967, 14, № 2, 322—337. (Русский перевод: Блюм М., Машинно-независимая теория сложности рекурсивных функций, Сб. «Проблемы математической логики», «Мир», 1970, 401—422.) Book R. V. Grammars with time functions. — Mathematical Linguistics and Automatic Translation, Harvard Univ. Computation Lab., Rept. NSF-23, February, 1969. Brainerd B. An analog of a theorem about context-free languages. — Information and Control, 1967, 11, № 5—6, 561—567. В ii. с h i J. Regular canonical systems. — Arch. math. Logik Grundlagenforsch., 1964, 6, 91—111. Burks A. W., Warren D. W., Wright J. B. An analysis of a logical machine using parenthesis-free notation. — Math. Tables and Other Aids of Computation, 1954, 8, 53—57. Chomsky N. Three models for the description of language. — IRE Trans, of Inform. Theory, 1956, 1T-2, 113—124. (Русский перевод: X о м с к и й Н., Три модели для описания языка, Кибернетический сборник, вып. 2, ИЛ, 1961, 237—266.) *) Работы Bar-Hillel 1953, Bar-Hillel — Gaifman — Shamir 1960, Bar-Hillel —Perles —Shamir 1961 перепечатаны в книге Bar-Hillel Y., Language and Information, Reading (Mass.), 1964.
ЛИТЕРАТУРА 353 Chomsky N. Syntactic structures. — s'Qravenhage, 1957. (Русский перевод: X о м с к и й Н., Синтаксические структуры, сб. «Новое в лингвистике» вып. II, ИЛ, 1962, 412—527.) Chomsky N. On the certain formal properties of grammars. — Information and Control, 1959 (a), 2, № 2, 137—167. (Русский перевод: X о м с к и й Н., О некоторых формальных свойствах грамматик, Кибернетический сборник, вып. 5, ИЛ, 1962, 279—311.) Chomsky N. A note on phrase structure grammars. — Information and Control, 1959 (6), 2, № 4, 393—395. (Русский перевод: X о м с к и й Н., Заметка о грамматиках непосредственно составляющих, Кибернетический сборник, вып. 5, ИЛ, 1962, 312—316.) Chomsky N. On the notion «rule of grammar». — In «Structure of language and its mathematical aspects», Providence (Rhode Island), 1961, 6—24. (Русский перевод: Хомский Н., О понятии «правило грамматики», сб. «Новое в лингвистике», вып. IV, «Прогресс», 1965, 34—65.) Chomsky N. Context-free grammars and pushdown storage. — M. I. T. Res. Lab. Electron. Quart. Progr. Rept., 1962, № 65. Chomsky N. Formal properties of grammars. — In: R. R. В u s h, E. H. Qalanter, R. D. Luce (eds.), Handbook of Math. Psychology, 2, N. Y., 1963, 323—418. (Русский перевод: Хомский Н., Формальные свойства грамматик, Кибернетический сборник, новая серия, вып. 2, «Мир», 1966, 121—230.) Chomsky N.. Miller Q. A. Finite state languages. — Information and Control, 1958,-1, № 2, 91 —112. (Русский перевод: Хомский H., Миллер Дж., Языки с конечным числом состояний, Кибернетический сборник, вып. 4, ИЛ, 1962, 233—255.) Chomsky N., Schutzenberger M. P. The algebraic theory of context-free languages. — In: P. Braffort, D. Hirschbefg (eds.), Computer programming and formal systems, Amsterdam, 1.963, 118—161. (Русский перевод: Хомский Н., ШютценбержеМ. П., Алгебраическая теория контекстно-свободных языков, Кибернетический сборник, новая серия, вып. 3, «Мир», 1966, 195—242.) С u I i k К- Axiomatic system for phrase structure grammars, 1. — Information and Control, 1965, 8, № 5, 493—502. E v e у R. J. The theory and applications of pushdown store machines. — Mathematical Linguistics and Automatic Translation, Harvard Univ. Computation Lab., Rept. NSF-10, May 1963. Fris I., On stop-conditions of constructive languages. — Z. Math, Logik Qrundl. Math., 1965, 11, № 1, 61—73. G a i f m a n H. Dependency systems and phrase structure systems. — Santa Monica (Calif.), RAND Corp., 1961 (P-2315). G a i f m a n H. Dependency systems and phrase structure systems. — Information and Control, 1965, 8, № 3, 304—337. G i n s b u r g S., The mathematical theory of context-free languages, — N. Y. — San Francisco— Toronto —London, 1966. (Русский перевод: Гинзбург С, Математическая теория контекстно- свободных языков, «Мир», 1970.) Ginsburg S., Greibach S. A. Mappings which preserve context-sensitive languages. — Information and Control, 1966 (a), 9, № 6, 563—583. (Русский перевод: Гинзбург С, Грейбах Ш., Об инвариантности класса - НС-языков относительнр некоторых
354 ЛИТЕРАТУРА отображений, Кибернетический сборник, новая серия, вып. 5, «Мир», 1968, 167—188.) Ginsburg S., Greibach S. A. Deterministic context-free languages. — Information and Control, 1966 (6), 9, № 6, 620—648. Ginsburg S., Rice H. G. Two families of languages related to ALGOL.—J. Assoc. Computing Machinery, 1962, 9, № 3, 350—371. (Русский перевод: Гинзбург С, Р а й с X., Два класса языков типа АЛГОЛ, Кибернетический сборник, новая серия, вып. 6, «Мир», 1969.) Ginsburg S., S p a n i e r E. H., Finite-turn pushdown automata.—J. SIAM Control, 1966, 4, № 3, 429—453. Ginsburg S„ Spanier E. H. Derivation-bounded languages.—J. of Computer and System Sciences, 1968, 2, № 3, 228—250. Ginsburg S., U 11 i a n J. S. Ambiguity in context-free languages.—J. Assoc. Computing Machinery, 1966, 13, № 3, 364—368. Greibach S. A. Undecidability of the ambiguity problem for minimal linear grammars. — Information and Control, 1963, 6, № 2, 119—125. Greibach S. A. A new normal-form theorem for context-free phrase structure grammars. — J. Assoc. Computing Machinery, 1965, 12, № 1, 42—52. Greibach S. A. The unsolvability of the recognition of linear context-free languages.— J. Assoc. Computing Machinery, 1966, 13, № 4, 582—587. Greibach S. A. A simple proof of the standard-form theorem for context-free grammars. — In: «Mathematical Linguistics and Automatic Translation», Harvard Univ. Computation Lab., Rept. NSF-18, August, 1967, II-I— II-4. Greibach S. A. A note on undecidable properties of formal languages. — Math. Systems Theory, 1968, 2, № 1, 1—6. Gross M., L e n t i n A. Notions sur les grammaires f ormel- les. — Paris, 1967. (Русский перевод: Гросс М., Лаитен А., Теория формальных грамматик, «Мир», 1971.) GruskaJ. On a classification of context-free languages. — Ky- bernetika, 1967, 3, № 1, 22—29. Haines L. H. Generation arid recognition of formal languages. — Ph. D. Thesis, Massachusets Institute of Technology, 1965. Haines L. H. Representation theorems for context-sensitive languages. — Notices Amer. Math. Soc. 1969, 16, № 3, 527. Haines L. H. Representation theorems for context-sensitive languages. — Univ. of California, Berkly, Calif., 1970. Harper K. E., Hays D. G. The use of machines in the construction of a grammar and computer program for structural analysis.— In «IFIP. Information processing 1959,'Proceedings...», Paris, 1960, 188—194. (Русский перевод: Харпер К- Е., X e й с Д. Г., Использование машин при построении грамматики и программа для структурного анализа, сб. «Автоматизация в лингвистике», «Наука» 1966, 132—143.) Harris Z.S. Structural linguistics.—Chicago, 1961. Hays D. G. Grouping and dependency theories. — In «Proceedings of the National Symposium on Machine Translation», Enele- wood Cliffs (N. J.), 1961, 258-266.
ЛИТЕРАТУРА 355 Н а г t m a n i s J. Context-free languages and Turing machine computations. — Proc. Symposium in Applied Mathematics of the Amer. Math. Soc, 1967, 42—51. Havel I. A note on one-sided context-sensitive grammars. — Kybernetika, 1969, 5, № 3, 186—189. H e n n i e F. С One-tape, off-line Turing machine computations. — Information and Control, 1965, 8, № 6, 553—578. (Русский перевод: Хенни Ф. К-, Вычисления на одноленточной машине Тьюринга с записью на ленте, сб. «Проблемы математической логики», «Мир», 1970, 223—248.) Hopcroft J. E., U 11 m a n J. D. Formal languages and their relations to automata. — Menlo Park, Calif., 1969. Kleene S. С Introduction to Metamathematics. — Princeton, N. J., 1952. (Русский перевод: Клин и С. К-, Введение в метаматематику, ИЛ, 1957.) Kleene S. С. Representation of events in nerve sets and finite automata.— In: С. Е. Shannon, J. McQarthy (eds.), Automata Studies, Princeton, N. J., 1956, 3—41. (Русский перевод: Кли- н и С. Кч Представление событий в нервных сетях и конечных автоматах, сб. «Автоматы», ИЛ, 1956v 15—67.) К и г о d a S.-Y. Classes of languages and linear-bounded automata. — Information and Control, 1964, 7, № 2, 207—223. Landweber P. S. Three theorems on pharse structure grammars of type 1. —Information and Control, 1963, 6, № 2, 131—136. Lecerf Y. Programme des conflits, modele des conflits.— Traduction automatique, 1960, 1, № 4, 11—18; № 5, 17—36. Lesniewski S. Grundziige eines neuen Systems der Qrund- Iagen der Mathematik. — Fundam. Math., 1929, 14, 1—81. Marcus S. Algebraic linguistics; analytical models. — N. Y. — L., 1967. (Русский перевод: Маркус С, Теоретико-множественные модели языков, «Наука», 1970.) М у h i U J. Finite automata and the representation of events. — WADC Technical Report 57—624, 1957, 112—137. N e г о d e A. Linear automaton transformations. — Proc. Amer. Math. Soc, 1958, 9, № 4, 541—544. Novotny M. Ober endlich characterisierbare Sprachen. — Spi- sy pfipodoved. fak. univ. v Brne, 1965 (a), № 10, 495—502. Novotny M. Bemerkung iiber ableitbare Sprachen. — Spisy pfirodoved. fak. univ. v Brne, 1965 (6), № 10, 503—507. Novotny M. Bemerkungen iiber Homorphismen von Spra^ chen. — Spisy pfirodoved. fak. univ. v Brne, 1965 (в), № 10, 509— 518. P a r i k h R. J. Language generating devices. — M. I. T. Res. Lab. Electron. Quart. Prog. Rept, 1961, № 60, 199—212. Parikh R. J. On context-free languages.—J. Assoc. Computing Machinery, 1966, 13, № 4, 570—580. Post E. L. A variant of a recursively unsolvable problem. — Bull. Amer. Math. Soc, 1946, 52, № 4, 264—268. Rabin M. O. Speed of computation of function and classification of recursive sets. — Bull. Res. Council Israel, 1959, 8F, 69—70. Rabin M. O. Real-time computation. -^"Israel Journal Math« 1963, 1, №4, 203—211.
356 ; ЛИТЕРАТУРА Rabin M. О., S с о 11 D. Finite automata and their decision problems,— IBM Journal Res. and Devel., 1959, 3, № 2, 114—125.-(Русский перевод: Рабин М., Скотт Д., Конечные автоматы и проблемы их разрешения, Кибернетический сборник, вып. 4, ИЛ, 1962, 56—91.) Rice H. Q. Classes of recursive enumerable sets and their decision problems. — Trans. Amer. Math. Soc, 1953, 74, № 2, 358—366. Ritchie R. W. Classes of predictible computable functions. — Trans. Amer. Math. Soc, 1963, 106, № 1, 139—173. (Русский перевод: P и ч и Р. В., Классы предсказуемо вычислимых функций, сб. «Проблемы математической логики», «Мир», 1970, 50—93.) Rosenberg A. L. A machine realisation of the linear context- free languages. — Information and Control, 1967, 10, № 2, 175—188. Samel son K-, Bauer F. L., Sequential formula translation. — Commun. Assoc. Computing Machinery, 1960, 3, № 2, 76—83. Scheinberg S. Note on the Boolean properties of context-free languages. — Information and Control, 1960, 3, № 4, 372—375. Schiitzenberger M. P. On context-free languages and pushdown automata. — Information and Control, 1963, 6, № 3, 246— 264. Schiitzenberger M. P. Une probleme de la theorie des automates. — Seminaire Dubreil—Pisot, Paris, 1959. Schiitzenberger M. P. Some remarks on Chomsky's context-free languages. — M. I. T. Res. Lab. Electron. Quart. Prog. Rept., 1961, № 63, 155—170. Shamir E. A remark of discovery algorithms for grammars. — Information and Control. 1962, 5, № 3, 246—251. Shannon К. Е. A mathematical theory of communication. — Bell System Techn. Journal, 1948, 27, № 3, 379—423; № 4, 623—656. (Русский перевод: Шеннон К., Математическая теория связи, сб. «Работы по теории информации и кибернетике», ИЛ, 1963, 249—332.) Tesniere L. Elements de syntaxe structurale. Paris, 1959. Turing A. M. On computable numbers, with an application to the Entscheidungsproblem. — Proc. London Math. Soc, ser. 2, 1936— 1937, 42, 230—265. A correction, ibid., 1937, 43, 544—546. U11 i a n J. S. Failure of a conjecture about context-free languages.— Information and Control, 1966, 9, № 1, 61—65. Wells R. S. Immediate constituents. — Language, 1947, 23, № 2, 81—117. Yngve V. H. A model and a hypothesis for language structure. Proc. Amer. Phil. Soc, 1960, 104, № 5, 444—466. Y n t e m a M. K. Inclusion relations among families of context- free languages. — Information and Control, 1967, 10, № 6, 572—597.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Автомат древообходящий ( = Д-автомат) 140 — конечный 159 двуленточный ( —ДК-авто- мат) 182 с выходом 180 А-грамматика, см. Грамматика автоматная 29 Алгоритм 252 — для распознавания конечности Б-языка 124 — пустоты Б-языка 122 Алфавит, см. Словарь 19, 27 Анализатор предсказуемостный 141 А-язык, см. Язык автоматный 30 База линейного множества векторов 129 — полулинейного множества векторов 130 Б-грамматика, см. Грамматика бесконтекстная 29 Биграф 19 — нагруженный 19 Б-ОАЕ-грамматика, см. Грамматика бесконтекстная ограниченной активной емкости 234 Б-правило, см. Правило бесконтекстное 29 Буква, см. Символ элементарный 19 Б-язык, см. Язык бесконтекстный 30 Вектор 129 Вершина (графа), см. Узел графа 18 Взаимозамещаемость 318 Вкладываться (Б-грамматика вкладывается в JX-граммати- ку) 201 Вложена непосредственно (составляющая В непосредственно вложена в составляющую А) 286 Время работы (Э-машины) 63 Вхождение отмеченное 200 — символа 21 — цепочки 21 Вывод 28 — бесповторный 31 — полный 28 —.приведенный налево 51 — размеченный 28 упорядоченный 31 — упорядочиваемый 31 Выводимость (цепочка х\ выводима из со) 28 — непосредственная 28 Выводы равносильные, см. Равносильность выводов 31 Выражение подстановочное 238 — регулярное 24 замкнутое 24 — центрально-подстановочное 177 Высота грозди 229 — Д-грамматики 207 — дерева 19 — системы составляющих 287 — составляющей 287 — узла (в дереве) 18 Вычисление (Э-машины) 43 Вычисляет (машина М вычисляет функцию f) 47 Вычитание (теоретико-множественное) 22
358 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Глубина левая 57 — правая 57 Гнездо 288 — однородное 242 Головка конечного автомата 160 — Э-машины входная 42 рабочая 42 Гомоморфизм, см. Отображение гомоморфное 23 —" алфавитный 317 — естественный 316 Грамматика,, см. Грамматика порождающая 27 — автоматная ( = А-граммати- ка) 29 без омонимии 340 ■ обобщенная (=ОА-грам- матика) 157 стандартная 158 ^-определенная 180 — без растяжения 85 — бесконтекстная ( = Б-грамма- тика) 29 ■ без самовставления 244 — — в нормальной форме, см. Грамматика бесконтекстная в нормальной форме Грейбах 197 Грейбах 197 — — обобщенная ( = ОБ-грам- матика) 125 итерационно-линейная 174 ■ линейная 168 ■ левосторонняя 169 — — правосторонняя 169 — симметричная 169 — — — металинейная 170 — — ограниченной активной емкости (Б-ОАЕ-грамматика) 234 однозначная 126 приведенная 123 слабо бинарная 235 стандартная бинарная 116 — — удлиняющая 200 — доминационная ( = Д-грамма- тика) 200 без циклов 202 — — ограниченной высоты 207 ширины 203 — — однозначная 219 Грамматика доминационная простая 202 — зависимостей, см. Грамматика доминационная простая 202 — категориальная ( = К-грамма- тика) 186 категориально однозначная 218 — — левосторонняя 195 правосторонняя 195 синтаксически однозначная 218 ' — конечно-автоматная, см. Грамматика автоматная 30 — контекстно-неукорачивающая 250 — контекстно-свободная, см. Грамматика бесконтекстная 29 — непосредственно (непосредственных) составляющих, см. Грамматика составляющих 29 — неукорачивающая 84 — окрестностная простая 179 — порождающая 27 — почти неукорачивающая 88 — с конечным числом состояний, см. Грамматика автоматная 29 ограниченной активной емкостью выводов (=ОАЕВ- грамматика) 174 ограниченным растяжением 87 — самопорождающая 279 — сильно сцепленная 95 — составляющих (^НС-грамматика) 29 левоконтекстная 105 обобщенная (=ОНС-грам- матика) 113 однозначная 83 правоконтекстная 105 с односторонним контекстом, см. Грамматика составляющих левоконтекстная. Грамматика составляющих правоконтекстная 105 — со стоп-правилами 51 — сцепленная 64
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 359 Грамматика универсальная 112 — формальная 10, 25 Граф 17 Гроздь (цепочки) 229 Группа зависимости 18 усеченная 294 Густота дерева 237 — узла 237 Д-автомат, см. Автомат древо- обходящий 140 Д-грамматика, см. Грамматика доминационная 200 Деление цепочек левое 20 — ■— правое 20 — языка на цепочку левое 23 ■ правое 23 Дерево 18 — бинарное 18 ■— вывода в грамматике составляющих 81 — — — обобщенной бесконтекстной грамматике 126 растянутое 79 сжатое 82 — вычисления 139 упрощенное 140 — единичное 19 ■— подчинения, см. Дерево синтаксического подчинения 294 — расположенное с помеченными узлами ( = Р1-дерево) 81 линейное 168 — — — и дугами ( =Р2- дерево) 82 — линейное 168 — синтаксического подчинения 294 — проективное 299 размеченное 298 — слабо проективное 299 — сокращения 189 — составляющих 287 Диаграмма конечного автомата 160 — линейной обобщенной бесконтекстной грамматики 182 — обобщенной автоматной грамматики 158 ДК-автомат, см. Автомат конечный двулентрчный 182 Длина вывода 28 — вычисления (Э-машины) 43 — пути 18 — цепочки 19 ДН-машина, см. Машина Тьюринга с неэластичной рабочей лентой детерминированная 53 ДОН-машина, см. Машина Тьюринга с неэластичной рабочей лентой одноленточная детерминированная 53 Дополнение 22 Допускать' (Э-машина допускает цепочку) 44 Допускать2 (JXK-автомат допускает пару цепочек) 182 Достижимость (ситуация S' достижима из ситуации S . в Э-машине) 43 — непосредственная 43 Дуга (в графе) 18 — (в мультиграфе) 19 ДЭ-машина, см. Машина Тьюринга с эластичной рабочей лентой детерминированная 44 Единица (полугруппы) 315 Емкость вывода активная 174 — грамматики 57 — — активная 57 — цепочки активная 174 — Э-машины 63 Зависимость (в графе) 18 — символов (в бесконтекстной грамматике) 121 Задаваться, см. Представляться 24 Заменяться (вхождение заменяется на 1-м шаге вывода) 28 Замещаемость 318 Замкнутость класса грамматик эффективная 32 Замыкание языка коммутативное 112 Запись правильной ситуации 268
360 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Запись простейшая (натурального числа) 34 Зацепленность (о шаге вывода) 31 — сильная 95 Значение грамматическое 16 — лексическое 16 Зона влияния (сечения) 96 Иерархизация 291 — допустимая 201 — обратная 190 — прямая 190 Изоморфизм (полугрупп) 316 Индекс ветвления (дерева вывода) приведенный 175 — грамматики, см. Емкость грамматики 57 — отношения эквивалентности 17 Инструкция 42 Интервал цепочки 21 несобственный 21 ■ подстрелочный 299 — правильный 299 Итерация языка 23 — — усеченная 23 — Э-машины 164 Категория 185 — главная 186 — элементарная 185—186 К-грамматика, см. Грамматика категориальная 186 Класс, порожденный окрестностью 328 —,— семейством 328 — приведенный 337 Код грамматики 73 — цепочки 73 — Э-машины 258 Композиция Э-машин параллельная 164 последовательная 164 Конгруэнция 316 Конец дуги (в графе) 18 (в мультиграфе) 19 — пути 18 — цепочки 20 Конкатенация цепочек 20 Конкатенация языков, см. Умножение языков, Произведение языков 22 Контекст в НС-правиле 29 — левый 29 — правый 29 Конфигурация 319—320 — простая 321 Корень (дерева) 18 Коэффициент 24 КС-грамматика, см. Грамматика бесконтекстная 29 КС-правило, см. Правило бесконтекстное 29 Куст узла 18 Левее (а лежит левее |5; а расположена левее р) 21 Лемма о замещении 96 — — сцеплении 64 сильном 95 Лента входная 41 — конечного автомата 160 — рабочая 41 ЛЗ-сегмент, см. Сегмент лексически значимый 315 Лингвистика математическая 13 Мажорирование (функция g(h) мажорируется функцией h (n)) 59 Маркер граничный в Э-машине левый 42 правый 42 Машина с магазинной памятью ( = МП-машина) 137 ■ — — нормальная 138 — — — — однодорожечная 168 — — — — однозначная 150 — — — — равномерная 169 — — с выходом 154 — — — — с ограниченным числом поворотов 171 / поворотами 171 — — — — счетчиковая 155 — чисто стирающая 170 — Тьюринга с неэластичной рабочей лентой ( = Н-машина) 52
Предмё-гный указатель 361 Машина Тьюринга с неэластичной рабочей лентой детерминированная (= ДН-машина) 53 — — одноленточная (=ОН-машина) 53 детерминированная ( = ДОН-машина) 53 эластичной рабочей лентой ( = Э-машина) 41 без растяжения 85 — — — — — — детерминированная ( = ДЭ-машина) 44 — —- — — — — несамоприме- нимая 259 с ограниченным растяжением 87 — — — — — — самопримени- t. мая 259 числовая 53 Между (Р лежит между а и у) 21 Меньше по порядку 97 Метаязык 11 Метка в дереве подчинения 298 системе составляющих 291 Многочлен 24 — замкнутый 24 Множество векторов линейное 129 полулинейное 130 — натуральных чисел периодическое 181 — нумерационно рекурсивно перечислимое ( = н. р. п. м.) 53 — опорное (формального ряда) 211 — рекурсивно перечислимое 49 числовое (=ч. р. п. м.) 53 Модель одноленточная прямая ( = п. о. м.) 45 — парадигматическая 324 — синтагматическая 324 МП-машина, см. Машина с магазинной памятью 137 Мультиграф 19 Находиться (головка находится в ячейке), см. Обозревать 42 Начало'дуги (в графе) 18 (в мультиграфе) 19 Начало пути 18 — цепочки 20 Неизвестная 207 Н-машина, см. Машина Тьюринга с неэластичной рабочей лентой 52 Номер цепочки стандартный 22 Н. р. п. м., см. Множество нумерационно рекурсивно перечислимое 53 НС-грамматика, см. Грамматика составляющих 29 НС-правило 29 . НС-язык 30 Н. ч. р. ф., см. Функция нумерационно частично рекурсивная 53 ОА-грамматика, см. Грамматика автоматная обобщенная 157 ОА-язык, см. Язык автоматный обобщенный 157 ОАЕ-язык, см. Язык ограниченной активной емкости 234 ОАЕВ-грамматика, см. Грамматика с ограниченной активной емкостью выводов 174 ОАЕВ-язык 174 ОБ-грамматика, см. Грамматика бесконтекстная обобщенная 125 Обозревать (головка обозревает ячейку) 42 Образ гомоморфный ОБ-языка 126 Обращение цепочки 35 — языка 156 Объединение 22 ОБ-язык 125 Окрестность (в простейшей окрестностной Д-грамматике с порядком) 142 Окрестность (в лексически размеченном языке) 328 Омонимия синтаксическая 285 ОН-машина, см. Машина Тьюринга с неэластичной рабочей лентой одноленточная 53 ОНС-грамматика, см. Грамматика составляющих обобщенная 113
362 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Оператор квазисигнализирующий для грамматик 56 — Э-машин 62 — НС-сигналнзирующий 84 — сигнализирующий для грам- • матик 56 Э-машин 63 относительный 57 Операции над цепочками, см. Конкатенация цепочек, Деление цепочек левое. Деление цепочек правое 20 языками, см. Объединение, Пересечение, Умножение языков, Итерация, Итерация усеченная, Деление языка на цепочку левое, Деление языка на цепочку правое, Подстановка, Проектирование, Отображение гомоморфное, Обращение 22—23, 156 Отношение бинарное 17 — инвариантное между грамматиками 254 — нераспознаваемое 254 — подчинения, см. Отношение синтаксического подчинения 294 — распознаваемое 254 — синтаксического подчинения 294 — проективное 299 слабо проективное 299 Отображение гомоморфное 23, 316 — изоморфное 316 Отрезок цепочки 21 ■ циклический 300 Парадигма 334 Пересечение 22 Перестройка вывода 30 ПО-грамматика, см. Д-граммати- ка окрестностная простейшая с порядком 142 Поддерево полное 120 Подстановка 23 — центральная 177 Подцепочка 21 Подчинение (узел А подчиняет узел В) 18 Полугнездо левое 289 . — правое 289 Полугруппа 315 — свободная 316 Получаться (цепочка г\ получается из са применением правила г) 28 П. о. м., см. Модель однолеиточ- ная прямая 45 Порядок стандартный 22 Построить 32 Потомок интервала в цепочке • 94 точный 94 — узла 80 непосредственный 79 Почти совпадать (языки почти совпадают) 264 Правее ((3 лежит правее ос, (5 расположена правее ос) 21 Правило (грамматики) 27 — бесконтекстное (-Б-правило) 29 — заключительное 30 — контекстно-свободное, см. Правило бесконтекстное 29 — неукорачивающее 84 Правильность грамматическая 16 Предел последовательности множеств 211 верхний 211 нижний 211 Предикат нераспознаваемый 254 — распознаваемый 254 Предок интервала в цепочке 94 точный 94 — узла 80 Представление каноническое 213 Представляться (язык представляется многочленом) 24 Применение правила 28 Приписывать (грамматика приписывает цепочке категорию) 186 Проблема алгоритмическая 252 неразрешимая 252 разрешимая 252 — массовая 252 Программа 42 Прогрессия арифметическая 34 Проектирование 23 Проекция цепочки 24 р- языка 24
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 363 Произведение прямое, см. Произведение языков 22 — цепочек, см. Конкатенация цепочек 20 — языков 22 Производить (путь производит цепочку) 159 Происходить левее (о шаге вывода) 31 — правее (о шаге вывода) 31 Протокол 269 Путь (в графе) 18 — (в мультиграфе) 19 — без ветвления 219 — замкнутый 18 — левый 196 — полный (в диаграмме) 159 — правый 196 — старший 237 Пучок языков 265 Равенство многочленов тождественное, см. Тождественность многочленов 25 Равносильность выводов 31 Разброс 57 Раздел 341 Разделять (пары точек разделяют друг друга) 21 Ранг составляющей 287 — узла (в дереве) 18 Распознавание языка ДЭ-маши- ной 45 Pi-дерево, см. Дерево расположенное с помеченными узлами 81 Рг-дерево, см. Дерево расположенное с помеченными узлами и дугами 82 Результирующий 319—320 Решение нормальной системы уравнений 208 наименьшее 209 Ряд степенной формальный некоммутативный 211 Сводимость алгоритмических проблем 256 Свойство булево 261 — инвариантнре 254 Свойство нераспознаваемое 254 — нетривиальное 255 — распознаваемое 254 Связанность (иерархизованной системы составляющих и дерева подчинения) 305 Сегмент 16 — лексически значимый ( = ЛЗ- сегмент) 315 Семейство 327 Сечение (цепочки) 96 Сигнализирующая грамматики, см. Функция сигнализирующая грамматики 56 — — относительно класса грамматик, см. Функция сигнализирующая грамматики относительно класса грамматик 57 — Э-машины, см. Функция сигнализирующая Э-машины 63 Символ, см. Символ элементарный 19 — бесплодный 122 — вспомогательный 27 неустранимый 123 устранимый 123 циклический 123 — начальный 27 — нетерминальный, см. Символ вспомогательный 27 — основной в категориальной грамматике 186 порождающей грамматике 27 — самовставляющийся 244 — терминальный, см. Символ основной 27 — элементарный 19 — 2-бесплодный 122 Система категориальная 185 — образующих полугруппы 315 — составляющих 282 бинарная 287 иерархизованная 291 размеченная 291 — уравнений нормальная 208 Ситуация 43 — заключительная 43 — начальная 43 — правильная 268 След вывода 96 Словарь 19
364 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Словарь вспомогательный 27 — категорий 185—186 — нетерминальный, см. Словарь вспомогательный 27 — основной категориальной грамматики 186 порождающей грамматики 27 — полный (грамматики) 27 — терминальный, см. Словарь основной 27 Слово (в лингвистическом смысле) 16 — (в математическом смысле), см. Цепочка 19 Словосочетание 283 Словоформа 16 Сложение формальных рядов 220 Сложность временная 57 — категориальной грамматики 195 — категории 195 Совместимость отношения эквивалентности с конкатенацией справа 181 Согласованность отношения эквивалентности с языком 318 — системы составляющих и дерева подчинения 304 Сокращение (§ сокращается до ц) 186 — непосредственное (| непосредственно сокращается до г\) 186 Соответствие (между грамматиками) каноническое 189 Сопоставление дерева подчинения цепочке Д-грамматикой 201 — цепочки категорий цепочке в основном словаре 186 Составляющая 282 — главная 291 — левая 289 — неуглубляющая 289 — полная 282 — правая 289 — средняя 289 — точечная 282 — тривиальная 282 — углубляющая 289 Состояние внутреннее 42 Состояние заключительное 42 — начальное 42 Степень Б-грамматики 205 — гнездования грамматики 242 системы составляющих 289 составляющей 288 — дерева 19 — левого ветвления системы составляющих 289 — составляющей 288 — правого ветвления системы составляющих 289 — — — составляющей 288 — самовставления грамматики 242 — символа 205 — системы составляющих 287 — составляющей 287 — узла (в дереве) 18 Схема грамматики 27 — склонения 338 — согласования 338 — управления 336 Тезис Черча 49 Теорема Клини 165 — о нормальной форме 196 сжатии выводов 67 вычислений 70 — об ускорении выводов 69 вычислений 70 — Раиса 257 Тип 328 Тождественность многочленов Точка главная (составляющего 306 — цепочки 21 Узел висячий 18 — графа 18 — диаграммы конечного автома та заключительный 160 — начальный 160 ОА-грамыатики заключи тельный 158 начальный 158 — изолированный 18 — левый 191 — мультиграфа 19 — отмеченный 200 — правый 191
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 365 Укрупнение отношения эквивалентности 317 — L-регулярное 325 Умножение прямое, см. Умножение языков 22 — формальных рядов 220 — адамарово 220 — цепочек, см. Конкатенация цепочек 20 — языков 22 Фактор-биграф 80 Фактор-множество 17 Фактор-полугруппа 316 Форма нормальная Грейбах, см. Грамматика бесконтекстная в нормальной форме Грейбах 197 Формула регулярная 165 Функция квазисигнализирующая грамматики 56 Э-машины 62 — множеств неубывающая 208 — НС-сигнализирующая грамматики 84 — нумерационно частично рекурсивная (н. ч. р. ф.) 53 — приписывающая 186 — сигнализирующая грамматики 56 — относительно класса грамматик 57 Э-машины 63 — частично рекурсивная 49 числовая ( = ч. ч. р. ф.) 53 Характеристика вывода '51 — языка конфигурационная полная 321 приведенная 321 Цепочка 19 — вывода, см. Характеристика вывода 51 — неприводимая 321 — пустая 19 Цикл (в диаграмме) 159 Частное от деления цепочек левое 20 Частное от деления цепочек правое 20 Часть категории 189 — правила левая 27 правая 27 Числа допустимые 98 Член многочлена 209 свободный 209 Ч. р. п. м., см. Множество рекурсивно перечислимое числовое 53 Ч. ч. р. ф., см. Функция частично рекурсивная числовая 53 Шаг вывода 28 — работы Э-машины 43 элементарный, см. Шаг работы Э-машины 43 Ширина дерева 18 — доминационной грамматики 203 — куста 18 — системы составляющих 287 Шифр вычисления 44 Эквивалентность грамматик 31 — грамматики и Э-машины 48 — ДК-автомата и грамматики 182 — категориальной грамматики и Б-грамматики 189 — категориальных грамматик 187 — сильная Б-грамматик 206 Д-грамматик, Д-граммати- ки и Б-грамматики 201 — слабая Б-грамматики и Д- грамматики 201 — Э-машин 48 — L-производная 325 Э-машина, см. Машина Тьюринга с эластичной рабочей лентой 41 Язык (множество цепочек) 22 — автоматный (=А-язык) 30 — — обобщенный ( = ОА-язык) 157 — — стандартный 213 — бесконтекстный ( = Б-язык)30 неоднозначный 135
366 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Язык бесконтекстный однозначный 134 существенно неоднозначный, см. Язык бесконтекстный неоднозначный 135 — Дика 213 —, допускаемый ДК-автоматом 182 —,— Э-машиной 44 — естественный (в лингвистическом смысле) 15 — итерационно-линейный 173 — конечно характеризуемый 322 — лексически размеченный 328 — однородный 328 — линейный 168 — металинейный 170 — ограниченный 183 — ограниченной активной емкости (ОАЕ-язык) 234 —, определяемый категориальной грамматикой 186 —,— простой окрестностной грамматикой 180 — периодический 181 —, порождаемый грамматикой 28 Язык пустой 22 — регулярный 165 — рекурсивно перечислимый 49 — с нетривиальной замещае- мостыо 279 — скобочный 213 — формальный 10 Ячейка ленты 41 , обозреваемая головкой (Э-машины) 42 (В, а) -дерево 117 — квазипростое 120 — простое 119 х-вычисление (Э-машины) 44 — полное 44 х-ситуация заключительная 43 — начальная 43 [х, ^-вычисление (Э-машины) 44 Г-образ языка 107 Д-грамматика 13 Д-грамматика окрестностная простейшая с порядком ( = ПО- грамматика) 142 ограниченная 142 6-поддерево полное 120
УКАЗАТЕЛЬ ОБОЗНАЧЕНИЙ А 30 К (W), К (W 186 Б 30 L*. L+ 23 Б (L) 321 I 156 ^V 256 Zw 208 НС 30 *W. 1<») 263 П 42 L (°) 186 П (L) 321 L М 44 Пр^, ПруШ 24 L (г) 28 ф(Л)288 V (V. IV, V. р) 213 ф (С) 289 Li (Д), L2 (Д) 51 Ц (Т) 82 Ljl (Г) 51 [Л, «, Л. И, '. Л 214 1С (Г), Lc (Af) 149 Тс С) 2m LM(LbLi)m CL, С L. C'L, C'v (L) 22 LA ^ LA (G)- LA W 142. 143 {c/tfcM 4(Г)61 Д. 0Г(")67 i£,z|(;r). z.f(<r)60 D(V). ^(V) 213 ^(M)273 ^f F*(T, n), Ff(»)B7 L/(u23 fr (я) 56 M2 17 F„(n)62 Af'(D 1Б4 H (AI) 273 (M; Pi Pn) 17 Г , I 4 S7 <M: ^> 17 '■Уг w (Af; *i. Rt) 19 МП 174 (MiRt, R2, U, g) 19 Kb, Г 332 (Af; #, ф> 19 . /C(i) (множество векторов) 130 Af/p 17 /C(i) (в конфигурационной ха- О (х) 167 рактеристике) 321 До, Л (X) 271
368 УКАЗАТЕЛЬ ОБОЗНАЧЕНИЙ R (М), Я, (М), R2 (M) 272 S, Sr («) 57 ^327 S(L; а, ал|/-1 Ln) 23 Sft (L, Z/) 176 Su (n) 63 Sub(r, Tu Тг) 121 Г, Гг (я) 57 Г£ г 328 Тм (я) 63 V*. F+ 20 Ул, <¥$ (я), <Уп, Vr («) 57 Y^ (я), Y^ (я) 84 УЛ (Л), УП (А) 288 УЛ (С), УП (С) 289 (щь ..., щА), (я, а*) 17 [а, В], (а, В), (а, -), (-, а) 21 Г 30 Т)| *ф * Т]2 21 и(А1) 258 х (Г) 131 Л 19 \i(M) 17 ц (Т), ц (Г, а) 237 v(ca) 22 II(Af) (число поворотов) 171 П (М) (множество протоколов) 269 П' (М) 269 я(С) 269 Фг (я) 84 Фл (я), Ф£ (я) 84 [Ф/ЧГ], [Ф\ЧЧ 185 ф\ w 20 Хг(я) 242 ш*. ©+ 24 6> 35 1 се ( 19 |ю|а 21 G>L 24 ш\Л 23 Юф 20 ш/ф 20 S, с 17 0 17, 22 2м 17 U, П. - 22 &, V, =з, s, И, V, Э <, > 21 -> 27, 42 Иг, [=, Нг> Н 28 >=«■ >=- >-«• >" 43 |== '24 Г #. Ф 42 <, -» 79 ее, dd 286 1 34 1 1 143 =Ф. ФФ 318 +, X, ® 220