Совпадение множества языков МП-автоматов и контекстно-свободных языков
Сделать список очень просто:
- каждая строка начинается со звёздочки;
- чем больше звёздочек — тем глубже уровень;
- отступ внутри можно делать и с помощью двоеточия.
- чем больше звёздочек — тем глубже уровень;
Содержание
Построение МП-автомата по заданной КС-грамматике
Пусть дана КС-грамматика . Поскольку МП-автоматы с допуском по пустому стеку и по допускающему состоянию эквивалентны, достаточно построить автомат с допуском по пустому стеку.
Построим автомат из одного состояния с входным алфавитом , стековым алфавитом , маркером дна и функцией перехода , определённой ниже. Формально , где задаётся следующим образом:
- для каждого правила вывода определим ;
- для каждого терминала определим .
Пример
Преобразуем грамматику выражений в МП-автомат. Пусть дана грамматика:
- ,
- .
Множеством входных символов является . Эти символы вместе с переменными образуют магазинный алфавит. Функция переходов определена следующим образом:
- a)
- b)
- c) ; ;.... Если входной символ совпадает с вершиной стека, то вершина удаляется.
Пункты a,b образованы по первому правилу построения функции переходов, а пункт c по второму.
Корректность построения
Покажем, что язык, допускаемый автоматом , совпадает с языком грамматики , то есть что :
- Пусть . Рассмотрим левосторонний вывод . Обозначим как наибольший префикс , состоящий только из терминалов, а — остаток , то есть , причём , а начинается с нетерминала (либо пустая). С помощью индукции по докажем, что для , где — то, что остаётся после чтения , то есть . Иными словами, переходя по автомату по символам , можно оставить на стеке .
- База ():
В этом случае , поэтому . Очевидно, . - Индукционный переход:
Пусть для . по определению начинается с какого-то нетерминала (если , то получена , а мы предположили, что ), то есть Поскольку мы рассматриваем левосторонний вывод, то переход включает замену нетерминала на какую-то цепочку по правилу . Так как , то . В автомате по построению присутствует правило перехода , поэтому на стеке можно заменить на . Заметим, что представляет собой конкатенацию нескольких терминалов из и . Считывая очередные символы строки , будем переходить по автомату, убирая терминалы со стека, пока не встретим нетерминал. Таким образом, на стеке окажется . Получили, что , а значит, . Индукционный переход доказан.
- База ():
- Заметим, что , поэтому .
- Докажем в обратную сторону. Пусть . Воспользуемся индукцией по числу переходов в автомате и докажем для любой строки и маркера дна , что если , то
- База (1 переход):
Если , то и в грамматике присутствует правило , по которому выводится . - Индукционный переход:
Предположим, что автомат совершает шагов (). Изначально на вершине стеке находится , поэтому первый переход совершается по одному из правил первого типа, и на стеке оказывается последовательность из терминалов и нетерминалов . В процессе следующих переходов автомат прочитает строку и поочерёдно вытолкнет со стека . Разобьём на подстроки , где — порция входа, прочитанная до выталкивания со стека, — следующая порция входа, прочитанная до выталкивания со стека и так далее. Формально можно заключить, что , причём менее чем за шагов. Если — нетерминал, то по индукционному предположению имеем, что . Если же — терминал, то должен совершаться только один переход, в котором проверяется совпадение и <texY_i</tex>. Значит, за 0 шагов.
Таким образом, получаем, что .
- База (1 переход):
- Подставляя вместо и вместо , получаем, что
| Теорема: |
Класс контекстно-свободных языков () является подмножеством класса языков, задаваемых автоматами с магазинной памятью (). |
| Доказательство: |
| Выше показано, что по любой КС-грамматике можно построить МП-автомат, задающий тот же язык, что и исходная грамматика. Утверждение теоремы непосредственно следует из данного факта. |
Построение КС-грамматики по МП-автомату
Наша конструкция эквивалентной грамматики использует переменные вида: — которая означает, что в процессе изменения состояния автомата от до , удалилось из стека.
Следует отметить, что удаление может являться результатом множества переходов.
Пусть — МП-автомат. Построим , где состоит из:
- 1 Специальный стартовый символ ,
- 2 Все символы вида , где и — состояния из , а — магазинный символ из .
Грамматика имеет следующие продукции:
- a) продукции для всех , таким образом
- b) пусть содержит . Тогда для всех списков состояний в грамматике есть продукция .
Пример
Пусть у нас имеется , функция задана следующим образом:
- ,
- .
Так как имеет один магазинный символ и одно состояние, то грамматика строится просто. У нас будет всего две переменные:
- a) — стартовый символ.
- b) — единственная тройка, которую можно собрать из наших состояний и магазинных символов.
Также грамматика имеет следующие продукции:
- 1. Единственной продукцией для является . Но если бы у автомата было состояний, то тут бы имелось и продукций.
- 2. Из того факта, что содержит , получаем продукцию . Если бы у автомата было n состояний, то такое правило порождало бы продукций.
- 3. Из получаем продукцию
Для удобства тройку можно заменить символом , в таком случае грамматика состоит из следующих продукций:
В действительности можно заметить, что и порождают одни и те же цепочки, поэтому их можно обозначить одинаково, итого:
Корректность построения
Докажем, что если , то .
- База. Пара должна быть в и есть одиночный символ, или . Из построения следует, что является продукцией, поэтому .
- Переход. Предположим, что последовательность состоит из переходов, и . Первый переход должен иметь вид:
, где для некоторого , которое является либо символом из , либо . По построению существует продукция , где — состояния из , и . Пусть , где — входная цепочка, которая прочитывается до удаления из стека, тогда . По скольку ни одна из этих последовательностей переходов не содержит более, чем переходов, к ним можно применить предположение индукции . Соберем эти порождения вместе:
.
| Теорема: |
Класс языков, задаваемых автоматами с магазинной памятью (), является подмножеством класса контекстно-свободных языков (). |
| Доказательство: |
| Выше показано, что по любму МП-автомату можно построить КС-грамматику, задающую тот же язык, что и допускаемый автоматом. Утверждение теоремы непосредственно следует из данного факта. |
Эквивалентность языков МП-автоматов и КС-языков
| Теорема (об эквивалентности языков МП-автоматов и КС-языков): |
Множество языков, допускаемых МП-автоматами, совпадает с множеством контекстно-свободных языков. |
| Доказательство: |
| Первая теорема гласит, что , а вторая — что . Таким образом, . |
Замечания
| Утверждение: |
Для любого МП-автомата с допуском по пустому стеку существует эквивалентный МП-автомат с одним состоянием. |
| Построим КС-грамматику по данному автомату, затем по полученной грамматике построим МП-автомат, как указано выше. Заметим, что этот автомат будет иметь одно состояние, что и требовалось доказать. |
| Утверждение: |
Для любого МП-автомата с допуском по пустому стеку существует эквивалентный МП-автомат, в любом переходе которого на стек кладётся не больше двух символов. |
| Построим КС-грамматику по данному автомату и приведём её к нормальной форме Хомского. Затем по полученной грамматике построим МП-автомат, как указано выше. Заметим, что в нормальной форме Хомского правые части всех правил имеют длину не больше двух, поэтому в любом переходе в полученном автомате на стек кладётся не больше двух символов. |
| Утверждение: |
Для любого МП-автомата с допуском по пустому стеку существует эквивалентный МП-автомат без -переходов. |
| Построим КС-грамматику по данному автомату, затем по полученной грамматике построим МП-автомат, как указано выше. Заметим, что этот автомат не будет иметь -переходов, что и требовалось доказать. |
Литература
- Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2002. — С. 251.