Совпадение множества языков МП-автоматов и контекстно-свободных языков — различия между версиями
Gromak (обсуждение | вклад) |
Gromak (обсуждение | вклад) м (Упс) |
||
Строка 1: | Строка 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Построение МП-автомата по заданной КС-грамматике === | === Построение МП-автомата по заданной КС-грамматике === | ||
<!-- | <!-- |
Версия 21:24, 20 ноября 2013
Содержание
Построение МП-автомата по заданной КС-грамматике
Пусть дана КС-грамматика эквивалентны, достаточно построить автомат с допуском по пустому стеку.
. Поскольку МП-автоматы с допуском по пустому стеку и по допускающему состояниюПостроим автомат из одного состояния
с входным алфавитом , стековым алфавитом , маркером дна и функцией перехода , определённой ниже. Формально , где задаётся следующим образом:- для каждого правила вывода определим ;
- для каждого терминала определим .
Пример
Преобразуем грамматику выражений в МП-автомат. Пусть дана грамматика:
- ,
- .
Множеством входных символов является
. Эти символы вместе с переменными образуют магазинный алфавит. Функция переходов определена следующим образом:- 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.