Основное свойство суперпозиции КС-языков
Основное свойство суперпозиции применительно к КС-языкам выражает следующая важная теорема.
Теорема 8.9. Если языки , контекстно-свободные, язык также контекстно-свободный, то суперпозиция есть КС-язык.
Пусть и каждый язык , задается КС-грамматикой , а язык задается КС-грамматикой . Без ограничения общности можно предполагать, что нетерминальные алфавиты всех указанных грамматик попарно не пересекаются (так как всегда можно провести процедуру переименования нетерминалов любой грамматики).
Построим следующую грамматику: , где
Здесь цепочка получается из цепочки следующим образом: все нетерминалы в остаются без изменений, а каждое вхождение каждого терминала , то есть для некоторого , заменяется аксиомой грамматики (заметим, что, согласно этим правилам замены, для любых цепочек в объединенном алфавите грамматики имеем и ).
Неформально система правил получается объединением всех множеств правил грамматик и добавлением "перекрашенных" правил грамматики . "Перекрашивание" выражается в том, что каждый терминал грамматики заменяется аксиомой грамматики , а, нетерминалы остаются в неприкосновенности. В частности, для любой цепочки имеет место .
Докажем теперь, что грамматика , контекстно-свободная по построению, является искомой, т.е. она порождает суперпозицию .
Прежде всего докажем, что для произвольных нетерминала и цепочки из следует , т.е. если в грамматике из нетерминала выводится цепочка в объединенном алфавите, то в грамматике из того же нетерминала выводится "двойник" цепочки получаемый из последней заменой каждого ее терминального символа аксиомой соответствующей грамматики для некоторого .
Доказательство проведем индукцией по длине вывода цепочки из нетерминала . Для вывода нулевой длины утверждение тривиально, так как . Пусть утверждение доказано при всех , и пусть . Тогда существует цепочка , такая, что . Согласно предположению индукции, отсюда следует, что , а так как , то существует такое правило вывода в множестве , что (для некоторых ) и . Следовательно, , а так как в множестве правил вывода есть правило , то . Итак, окончательно получаем .
Из доказанного следует, что для любой цепочки , т.е. такой цепочки , что , выполняется . Если , то тогда из следует, что . Если , тогда для некоторого имеем и , а так как для каждого выполняется , какова бы ни была цепочка , то . Но последняя цепочка есть произвольная цепочка суперпозиции (не считая пустой цепочки, непосредственно выводимой из аксиомы ), так как она получена из произвольной непустой цепочки языка путем замены в ней каждого символа произвольной цепочкой языка . Поскольку из следует любая цепочка суперпозиции порождается грамматикой .
Докажем теперь, что если цепочка в алфавите (терминальном алфавите грамматики ) выводится из аксиомы в грамматике , то она принадлежит суперпозиции . Для этого сначала докажем, что для любых нетерминала и цепочки из следует .
Опять воспользуемся индукцией по длине вывода, но на этот раз вывода цепочки из нетерминала в грамматике . Случай вывода нулевой длины, как и выше, тривиален. Пусть для некоторого выполняется . Тогда существует такая цепочка , что . Каждый символ цепочки есть либо одна из аксиом , либо нетерминал из . Так как КС-грамматики и , в силу результатов, полученных в 8.2, можно считать заданными в приведенной форме, то правые части правил вывода каждой из рассматриваемых грамматик не содержат аксиомы. Кроме того, нетерминальные алфавиты и всех этих грамматик попарно не пересекаются.
Отсюда следует, что цепочка не может быть непосредственно выведена из цепочки применением какого-либо правила из множества , т.е. какого-либо правила вывода грамматики , а выводится из применением некоторого правила вида , построенного, как указано в определении грамматики , по правилу системы правил грамматики . Тогда мы можем написать: (для некоторых цепочек и в алфавите ), . Это значит, что при , то есть . Согласно предположению индукции, отсюда следует, что , а так как и в множестве правил вывода грамматики содержится правило , то и окончательно . В частности, отсюда следует, что для произвольной цепочки , такой, что , имеет место , то есть .
Теперь докажем, что произвольная цепочка , выводимая в грамматике из аксиомы , имеет вид , где для каждого цепочка либо пуста, либо для некоторого символа выводится из аксиомы . грамматики , то есть , либо является некоторой цепочкой нетерминалов из . Действительно, сама аксиома удовлетворяет этому требованию. Далее, пусть доказываемое справедливо для любой цепочки, выводимой в за любое число шагов, не превышающее для некоторого .
Предположим, что . Тогда, как это мы уже делали в аналогичных ситуациях, рассмотрим последний шаг этого вывода, т.е. для некоторой цепочки будем иметь
Согласно предположению индукции, цепочка j представима в виде , где , или для некоторого , или . Так как к цепочке применяется некоторое правило грамматики (на последнем шаге вывода цепочки из аксиомы ), то в входит по крайней мере один нетерминал грамматики . Если это есть некоторый символ , то он может входить только в одну из таких подцепочек , которая состоит из нетерминалов алфавита . После замены посредством некоторого правила вида , соответствующего правилу грамматики , получится цепочка, в которую могут входить только нетерминалы множества и аксиомы грамматик для каких-либо .
Следовательно, если цепочка на последнем шаге ее вывода из аксиомы получена применением некоторого правила , то она также может быть представлена соединением цепочек такого же вида, что и цепочки .
Если же для некоторого и на указанном шаге применяется правило из множества , то оно, ввиду того что все множества и (для различных ) попарно не пересекаются, может быть применено только к такой подцепочке , которая выводится из аксиомы , и тогда в цепочке а получим подцепочку, опять-таки выводимую из , т.е. и в этом случае* цепочка образуется соединением подцепочек того же вида, что и цепочки .
*Заметим, что в приведенном выше доказательстве существенно используется тот факт, что нетерминальные алфавиты  попарно не пересекаются. Бели бы это было не так, то в некоторой подцепочке  , выводимой из аксиомы  для некоторого  , мы могли бы заменить вхождение нетерминала из  применив правило вывода "чужой" грамматики  и получить в составе цепочки а подцепочку, не выводимую ни из одной "дочерней" аксиомы  .
Пусть теперь цепочка такова, что . Если и , то это означает наличие правила вывода в множестве и, следовательно, в множестве , то есть и . Таким образом в этом случае пустая цепочка, порождаемая грамматикой , действительно принадлежит указанной суперпозиции. Иначе в силу доказанного выше свойства любой цепочки, выводимой в грамматике из аксиомы, цепочка , не содержащая по условию вхождений нетерминалов из , допускает представление в виде , где для каждого имеет место выводимость (возможно для некоторых , что ; в частности, может оказаться, что и ). Таким образом,
где для каждого цепочка принадлежит языку . Так как при этом , то есть , то .
Итак, доказав, что любая цепочка в терминальном алфавите грамматики , выводимая из аксиомы, есть элемент суперпозиции , мы тем самым завершили доказательство теоремы.
Следствие 8.3. Семейство КС-языков замкнуто относительно операций объединения, соединения, итерации и позитивной итерации.
Доказательство получается немедленно из приведенных выше определений операций объединения, соединения, итерации и позитивной итерации как частных случаев суперпозиции.
 Заметим, что объединение бесконечного семейства КС-языков не является, вообще говоря, КС-языком. Так, язык , не являющийся КС-языком, может быть представлен в виде объединения счетного семейства, каждый элемент которого есть язык для фиксированного натурального , т.е. язык, состоящий из одной цепочки, а следовательно, регулярный и контекстно-свободный.
Замечание 8.12. Вывод цепочки w из суперпозиции (если она не является пустой цепочкой, непосредственно выводимой из аксиомы ) в грамматике , построенной в доказательстве теоремы 8.9, можно провести по "двухуровневой" схеме, приведенной на рис. 8.34. Сначала порождаем, используя "перекрашенные" правила грамматики , т.е. правила вида для и , "двойника" произвольной цепочки , т.е. цепочку . Из нее затем, используя правила "дочерних" грамматик, порождаем саму цепочку w, из каждой аксиомы выводя некоторую цепочку так, что .
Пример 8.20. Рассмотрим конструкцию из доказательства теоремы 8.9 на конкретном примере. Язык определим как язык, порождаемый грамматикой со следующим множеством правил вывода: . Языки и определим так:
(т.е. есть язык палиндромов в алфавите ). Запишем множества правил вывода грамматик и , порождающих языки и соответственно:
 (грамматика  ) и  (грамматика  ).
Преобразуя грамматики и к приведенной форме (убирая аксиому из правых частей правил вывода) и переименовывая нетерминалы так, чтобы множества и попарно не пересекались, построим, как описано в доказательстве теоремы 8.9, множество правил вывода грамматики
порождающей суперпозицию 
 (8.19)
 Рассмотрим дерево вывода цепочки , изображенное на рис. 8.35. Если при порождении этой цепочки использовать "двухуровневую" схему, описанную в замечании 8.12, то получим такой вывод:
Сначала порождается "двойник" цепочки , а затем на место первого символа (замененного аксиомой "дочерней" грамматики ) подставляется цепочка 01, на место второго символа — цепочка 0011, на место третьего — , на место четвертого — цепочка .
Заметим, что в общем случае построения вывода в грамматике (если не обязательно придерживаться "двухуровневой" стратегии) "дочерняя" грамматика может начать "работать", как только в выводе появляется ее аксиома. Так, по изображенному на рис. 8.35 дереву вывода может быть построен следующий левый вывод:
Но если мы пренебрежем требованием, чтобы нетерминальные алфавиты грамматик и попарно не пересекались, и отождествим, скажем, нетерминалы и , положив , то сможем вывести цепочку, не принадлежащую суперпозиции . Например,
В самом деле, цепочка 01 может быть получена применением либо правила , либо правила ; цепочка — применением правила или , цепочка — применением правила или . Можно легко убедиться в том, что в этом случае единственная цепочка, состоящая из аксиом "дочерних" грамматик, т.е. символов , из которой может быть выведена цепочка , равна . Но эта цепочка не выводима из аксиомы . Если же мы, анализируя цепочку , стали бы рассматривать в качестве правой части правила вывода не цепочку , а цепочку , то получили бы подцепочку , не являющуюся правой частью ни одного правила вывода, и тогда имели бы — цепочку, не выводимую из аксиомы .
Мы вывели "плохую" цепочку здесь потому, что "перепутав" нетерминалы грамматик, позволили "вклиниться" "дочерней" грамматике в работу грамматики "верхнего уровня". Аналогично можно построить пример, когда разные "дочерние" грамматики "мешают" друг другу.
Итак, требование, согласно которому нетерминальные алфавиты грамматик и всех попарно не пересекаются, является существенным.
Если заметили ошибку, опечатку или есть предложения, напишите в комментариях.
|