Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ТА.docx
Скачиваний:
11
Добавлен:
24.09.2019
Размер:
355.83 Кб
Скачать

14. Свойства регулярных языков. Лемма о накачке. Замкнутость регулярных языков

1) Лемма о накачке: Пусть L - регулярный язык. Существует константа такая что каждую цепочку , длины этого языка можно разбить на 3 подцепочки так что

1)

2)

3)

Пример:

1) Докажем, что язык с цепочками вида не регулярный. (МОП).

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

2) Грамматика палиндромов.

– такая цепочка называется палиндромом.

, .

Язык палиндромов: Доказать, что он не регулярный.

Рассмотрим . Цепочку разобьем на три части, тогда

, значит, язык не регулярный

2) Свойство замкнутости регулярного языка:

Теорема. Регулярные языки замкнуты относительно , разности, обращения, итерации, конкатенации, гомоморфизма и обратного гомоморфизма.

Обращение

А) Обращение цепочки.

Пусть дана цепочка

- обращение цепочки

Б) Обращение языка - это язык цепочки которого являются обращениями цепочек языка

Гомоморфизм

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

= - алфавит

( символу поставим в соответствие цепочку

………….

- цепочки языка L

- цепочка, гомоморфная цепочке

Пример:

Есть два алфавита , ,

. Цепочка ab гомоморфна 1011

Опр. Гомоморфизмом языка называется язык , цепочки которого гомомморфны цепочкам языка L.

Пусть есть гомоморфизм из одного алфавита в другой.

Есть язык

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

3). Разрешимость регулярного языка

Предполагает ответы на следующие три вопроса:

1. Является ли данный язык пустым?

2. Принадлежит ли данная цепочка этому языку?

3. Действительно ли 2 разных описания языка представляют один и тот же язык?

Ответим на 1 вопрос: Если язык дан и дан не НКА, то можно построить для него ДКА, то есть он все равно задан ДКА. Если у этого ДКА есть путь из начального состояния в одно из заключительных, то язык не пуст (если есть хотя бы 1 путь). Если заключительные состояния автомата изолированы, тогда язык этого автомата пуст.

Ответим на 2 вопрос: Строится автомат, который имеет этот язык, пропускаем через него цепочку. Если цепочка пропускается через автомат, то принадлежит этому языку, если нет, то не принадлежит.

Ответим на 3 вопрос: Надо написать алгоритм и заполнить эту таблицу.

Опр. 2 состояния автомата и называются эквивалентными, если для всех входящих цепочек w, состояние будет допускающим когда допускающим будет состояние .

Разбиваем состояния на классы, составляем фактор-множество. Если автомат имеет 2 эквивалентных состояния, то одно из них можно исключить.

Алгоритм заполнения таблицы состоит в рекурсивном обнаружении пар в различных состояниях. Обнаруживаются эти пары, находя эквивалентные состояния.

15. Контекстно-свободные грамматики, порождения цепочек, язык грамматики

Это более широкий способ задания языка.

Для того, чтобы описать КСГ нужно 4 комплекта:

1). Σ – некоторое конечное множество символов, из которого составляются цепочки определённого языка. Элементы этого множества – терминалы.

2). Конечное множество переменных V элементы которого – не терминалы или синтаксические категории.

3). Некоторая выделенная переменная – стартовый символ, представляющая определённый язык.

4). Задаёт способ представления языка: конечное множество правил вывода (продукции), представляющие рекурсивные определения языка. Каждое правило вывода состоит из:

- голова продукции – переменные определяемые продукцией;

- символ продукции;

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

Это способ образования языка с определённой переменной в голове. Мы оставляем терминалы неизменными, вместо любой переменной подставляем любую цепочку, про которую заведомо известно, что она принадлежит языку переменных.

Опр. КС-грамматика G = (V, T, P, S), где:

V – множество переменных;

Т – множество терминалов;

Р – множество правил вывода;

S – стартовый символ.

Пример:

G = (V, T, P, S), T = {0, 1}, V = {p}, S = p

p → ε, p → 0, p →1, p → 0p0, p → 1p1, p → ε| 0 | 1 | 0p0 | 1p1

Gpol = {{p}, {0, 1}, p → ε| 0 | 1 | 0p0 | 1p1, p} – грамматика палиндромов.

Грамматика определяет любой язык. Грамматика – множество цепочек, построенных в данном множестве.

Существует 2 способа проверки, принадлежит ли цепочка данному языку грамматики:

1). Рекурсивный вывод. Берутся цепочки, заведомо известно, что они принадлежат языку каждой переменной в теле. Берутся и записываются в соответствующем порядке вместе с терминалами тела. И проверяется, что полученная цепочка принадлежит языку в голове.

2). Выведение или порождение (от головы к телу). Используя одну из продукций стартового символа, разворачивают стартовый символ, затем разворачивают полученную цепочку, заменяя одну из переменных телом её репродукции, до тех пор, пока все переменные не исчезнут. Получим цепочку, состоящую из одних терминалов.

Язык грамматики – все цепочки, получающиеся таким образом.

Процесс порождения цепочек от головы к телу заставляет ввести новое отношение “=>”.

Пусть G – контекстно-свободная грамматика. αАβ – некоторая цепочка из переменных и терминалов, где А – терминал, α и β – терминальные цепочки.

αАβ (TUV)*, A → j из G. Тогда говорят, что αАβ .

Записываем вместо переменной А некоторые символы. Порождать продукции можно заменяя на каждом шаге крайнюю слева переменную на одну из её продукций.

Из переменной получается w (левое, правое порождение продукции).

Теорема. Любое порождение цепочек имеет эквивалентные левое и правое порождения.

Опр. Язык грамматики – множество всех цепочек, которые порождаются этой грамматикой из стартового символа. L(G) = {w T* | S* w}

Опр. Язык, который задаётся некоторой контекстно-свободной грамматикой, называется контекстно-свободным языком.

Контекстно-свободный язык может быть регулярным.

Те цепочки, которые порождаются из стартового символа, называются выводимыми цепочками.

Опр. Цепочка α называется выводимой, если она порождается из стартового символа. α (T V)*, S* α

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

Язык грамматики – выводимые цепочки, состоящие только из терминалов.