Замкнутость КС-языков относительно различных операций — различия между версиями
| м (rollbackEdits.php mass rollback) | |||
| Строка 1: | Строка 1: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| В отличие от [[Замкнутость регулярных языков относительно различных операций|регулярных языков]], [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|КС-языки]] не замкнуты относительно всех теоретико-множественных операций. К примеру, дополнение и пересечение КС-языков не обязательно являются КС-языками. | В отличие от [[Замкнутость регулярных языков относительно различных операций|регулярных языков]], [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|КС-языки]] не замкнуты относительно всех теоретико-множественных операций. К примеру, дополнение и пересечение КС-языков не обязательно являются КС-языками. | ||
Текущая версия на 19:29, 4 сентября 2022
В отличие от регулярных языков, КС-языки не замкнуты относительно всех теоретико-множественных операций. К примеру, дополнение и пересечение КС-языков не обязательно являются КС-языками.
Здесь и далее считаем, что и — КС-языки.
Содержание
Операции с КС-языками
Объединение
| Утверждение: | 
|  является КС-языком. | 
| Построим КС-грамматику для языка . Для этого рассмотрим соответствующие КС-грамматики для языков и . Пусть стартовые символы в них имеют имена и соответственно. Тогда стартовый символ для обозначим за и добавим правило . Покажем, что . 
 
 
 
 | 
Конкатенация
| Утверждение: | 
|  — КС-язык. | 
| Аналогично предыдущему случаю построим КС-грамматику для языка . Для этого добавим правило , где и — стартовые символы языков и соответственно. | 
Замыкание Клини
| Утверждение: | 
|  — КС-язык. | 
| Если — стартовый символ КС-грамматики для языка , то добавим в КС-грамматику для языка новый стартовый символ и правила . | 
Гомоморфизмы
Прямой гомоморфизм
| Утверждение: | 
| КС-языки замкнуты относительно прямого гомоморфизма. | 
| Построим КС-грамматику, в которой каждый символ заменим на . | 
Обратный гомоморфизм
| Утверждение: | 
| КС-языки замкнуты относительно обратного гомоморфизма. | 
| Докажем аналогично соответствующему утверждению для регулярных языков. Построим МП-автомат для на основе МП-автомата для языка (назовем его ). Новый автомат будет действовать следующим образом: 
 Если рассмотреть более формально, пусть , тогда . 
 | 
Разворот
| Утверждение: | 
|  контекстно-свободен. | 
| Для того, чтобы построить , необходимо развернуть все правые части правил грамматики для . Покажем, что . 
 
 
 
 
 
 
 | 
Пример разворота:
Пусть задана КС-грамматика для языка со следующими правилами:
В таком случае КС-грамматика для языка выглядит следующим образом:
Дополнение к языку тандемных повторов
| Утверждение: | 
| Язык тандемных повторов  не является КС-языком. | 
| Это доказывается с помощью леммы о разрастании. | 
| Утверждение: | 
| Дополнение к языку тандемных повторов  является КС-языком. | 
| Для упрощения рассмотрим этот язык на бинарном алфавите . Для можно составить следующую КС-грамматику : Докажем этот факт. Сначала заметим, что нетерминал порождает слова нечётной длины с центральным символом . В свою очередь нетерминал порождает слова нечётной длины с центральным символом . Таким образом, правило порождает все возможные слова нечётной длины. Докажем, что все слова, порождённые , есть в . , а также все слова нечётной длины не являются тандемными повторами. Рассмотрим произвольное слово чётной длины, сгенерированное при помощи правила . Пусть его часть, соответствующая , имеет длину , а часть, соответствующая , — длину . Таким образом, мы получили слово длины . Если оно является тандемным повтором, то символ, стоящий на позиции , должен быть равен символу на позиции . Но по построению это не так. Для правила доказательство аналогично. Докажем, что все слова из порождаются . С помощью можно вывести , а также любое слово нечётной длины. Далее рассмотрим произвольное слово чётной длины из . Докажем, что его можно разбить на два слова нечётной длины, имеющие различные центральные символы. Предположим, что это не так, то есть такого разбиения нет. Пусть это слово имеет длину . Тогда рассмотрим все его префиксы нечётной длины. Их центры находятся на позициях , а центры соответствующих им суффиксов — на позициях . Поскольку искомого разбиения не существует, то получается, что символ на позиции равен символу на позиции , символ на позиции равен символу на позиции , и так далее. Следовательно, первая половина слова равна его второй половине, т.е. оно является тандемных повтором.Получили противоречие, следовательно любое слово чётной длины из можно разделить на два слова нечётной длины с различными центральными символами. В свою очередь, такие слова могут быть сгенерированы при помощи грамматики и соединены при помощи правила . | 
Пересечение
| Утверждение: | 
| Если , то  не является КС-языком. | 
| 
 По замкнутости КС-языков относительно конкатенации получаем, что и являются КС-языками.Но , который по лемме о разрастании для КС-языков не является КС-языком. | 
Разность
| Утверждение: | 
| КС-языки не замкнуты относительно разности. | 
Более того, задачи определения того, является ли дополнение КС-языка КС-языком и проверки непустоты пересечения КС-языков являются алгоритмически неразрешимыми.
Половины тандемных повторов
| Определение: | 
| Утверждение: | 
| Операция  не сохраняет КС-язык таковым. | 
| Покажем это на примере. Рассмотрим язык . Заметим, что он может быть сгенерирован при помощи следующей КС-грамматики: Докажем, что не является КС-языком. Пусть . Отсюда следует, что: | 
Операции над КС-языком и регулярным языком
Пересечение
| Утверждение: | 
| Пересечение КС-языка и регулярного языка — КС-язык. | 
| Построим МП-автомат для пересечения регулярного языка и КС-языка. Пусть регулярный язык задан своим ДКА, а КС-язык — своим МП-автоматом c допуском по допускающему состоянию. Построим прямое произведение этих автоматов так же, как строилось прямое произведение для двух ДКА. Более формально, пусть — регулярный язык, заданный своим ДКА , и — КС-язык, заданный своим МП-автоматом: . Тогда прямым произведением назовем следующий автомат: 
 видя на ленте символ и символ на вершине стека.Этот автомат использует в качестве состояний пары из двух состояний каждого автомата, а за операции со стеком отвечает только МП-автомат. Слово допускается этим автоматом слово допускается и ДКА и МП-автоматом, то есть язык данного автомата совпадает с . | 
Разность
| Утверждение: | 
| Разность КС-языка и регулярного языка — КС-язык. | 
| Регулярные языки замкнуты относительно дополнения, следовательно разность можно выразить через пересечение. | 
См. также
- Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора
- Замкнутость регулярных языков относительно различных операций
- Основные определения, связанные со строками
Источники информации
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — C. 302-304 : ISBN 5-8459-0261-4 (рус.)


