Совпадение множества языков МП-автоматов и контекстно-свободных языков — различия между версиями
Gromak (обсуждение | вклад) |
Gromak (обсуждение | вклад) |
||
Строка 101: | Строка 101: | ||
*<tex> \delta(q,e,Z)=\{(q,\varepsilon)\}</tex>. | *<tex> \delta(q,e,Z)=\{(q,\varepsilon)\}</tex>. | ||
Так как <tex> P </tex> имеет один магазинный символ и одно состояние, то грамматика строится просто. У нас будет всего две переменные: | Так как <tex> P </tex> имеет один магазинный символ и одно состояние, то грамматика строится просто. У нас будет всего две переменные: | ||
− | + | ||
− | + | a) <tex> S </tex> — стартовый символ. | |
+ | |||
+ | b) <tex> [qZq] </tex> — единственная тройка, которую можно собрать из наших состояний и магазинных символов. | ||
+ | |||
Также грамматика имеет следующие продукции: | Также грамматика имеет следующие продукции: | ||
− | * | + | * Единственной продукцией для <tex> S </tex> является <tex> S \rightarrow [qZq] </tex>. Но если бы у автомата было <tex> n </tex> состояний, то тут бы имелось и <tex> n </tex> продукций. |
− | * | + | * Из того факта, что <tex> \delta(q,i,Z) </tex> содержит <tex> (q,ZZ)</tex>, получаем продукцию <tex> [qZq] \rightarrow i[qZq][qZq] </tex>. Если бы у автомата было '''n''' состояний, то такое правило порождало бы <tex> n^2 </tex> продукций. |
− | * | + | * Из <tex> \delta(q,e,Z)=\{(q,\varepsilon)\} </tex> получаем продукцию <tex> [qZq] \rightarrow \varepsilon </tex> |
Для удобства тройку <tex> [qZq] </tex> можно заменить символом <tex> A </tex>, в таком случае грамматика состоит из следующих продукций: | Для удобства тройку <tex> [qZq] </tex> можно заменить символом <tex> A </tex>, в таком случае грамматика состоит из следующих продукций: | ||
* <tex> S \rightarrow A</tex> | * <tex> S \rightarrow A</tex> |
Версия 20:08, 30 ноября 2013
Содержание
Построение МП-автомата по заданной КС-грамматике
Теорема: |
Класс контекстно-свободных языков ( ) является подмножеством класса языков, задаваемых автоматами с магазинной памятью ( ), то есть по любой КС-грамматике можно построить МП-автомат, задающий тот же язык, что и исходная грамматика. |
Доказательство: |
Пусть дана КС-грамматика совпадают, достаточно построить автомат с допуском по пустому стеку. . Поскольку классы языков, допускаемых МП-автоматами по допускающему состоянию и по пустому стеку,Построим автомат из одного состояния с входным алфавитом , стековым алфавитом , маркером дна и функцией перехода , определённой ниже. Формально , где задаётся следующим образом:1) для каждого правила вывода определим ;2) для каждого терминала определим .Покажем, что язык, допускаемый автоматом , совпадает с языком грамматики , то есть что :
|
Пример
Преобразуем грамматику выражений в МП-автомат. Пусть дана грамматика:
- ,
- .
Множеством входных символов является
. Эти символы вместе с переменными образуют магазинный алфавит. Функция переходов определена следующим образом:a)
b)
c)
; ; ; .Пункты a,b образованы по первому правилу построения функции переходов, а пункт c по второму.
Построение КС-грамматики по МП-автомату
Теорема: |
Класс языков, задаваемых автоматами с магазинной памятью ( ), является подмножеством класса контекстно-свободных языков ( ), то есть по любому МП-автомату можно построить КС-грамматику, задающую тот же язык, что и допускаемый автоматом. |
Доказательство: |
Пусть дан МП-автомат с допуском по пустому стеку . Как отмечалось ранее, предположение о допуске по пустому стеку не умаляет общности. Построим эквивалентную ему КС-грамматику . В качестве нетерминалов будем использовать конструкции вида (где , ), которая неформально означает, что в процессе изменения состояния автомата от до символ окончательно удаляется из стека. Также введём стартовый нетерминал . Таким образом, .Правила вывода построим следующим образом:1) для каждого состояния добавим правило ;2) для каждого перехода сделаем следующее: для всех упорядоченных списков состояний добавим правило , если , и , если .Нетерминал , должен выводить только те строки , которые переводят автомат из состояния в . Формально это можно записать следующим образом: . Докажем это утверждение:
|
Пример
Пусть у нас имеется
, функция задана следующим образом:- ,
- .
Так как
имеет один магазинный символ и одно состояние, то грамматика строится просто. У нас будет всего две переменные:a)
— стартовый символ.b)
— единственная тройка, которую можно собрать из наших состояний и магазинных символов.Также грамматика имеет следующие продукции:
- Единственной продукцией для является . Но если бы у автомата было состояний, то тут бы имелось и продукций.
- Из того факта, что содержит , получаем продукцию . Если бы у автомата было n состояний, то такое правило порождало бы продукций.
- Из получаем продукцию
Для удобства тройку
можно заменить символом , в таком случае грамматика состоит из следующих продукций:В действительности можно заметить, что
и порождают одни и те же цепочки, поэтому их можно обозначить одинаково, итого:
Эквивалентность языков МП-автоматов и КС-языков
Теорема (об эквивалентности языков МП-автоматов и КС-языков): |
Множество языков, допускаемых МП-автоматами, совпадает с множеством контекстно-свободных языков. |
Доказательство: |
Первая теорема гласит, что , а вторая — что . Таким образом, . |
Замечания
Утверждение: |
Для любого МП-автомата с допуском по пустому стеку существует эквивалентный МП-автомат с одним состоянием. |
Построим КС-грамматику по данному автомату, затем по полученной грамматике построим МП-автомат, как указано выше. Заметим, что этот автомат будет иметь одно состояние, что и требовалось доказать. |
Утверждение: |
Для любого МП-автомата с допуском по пустому стеку существует эквивалентный МП-автомат, в любом переходе которого на стек кладётся не больше двух символов. |
Построим КС-грамматику по данному автомату и приведём её к нормальной форме Хомского. Затем по полученной грамматике построим МП-автомат, как указано выше. Заметим, что в нормальной форме Хомского правые части всех правил имеют длину не больше двух, поэтому в любом переходе в полученном автомате на стек кладётся не больше двух символов. |
Утверждение: |
Для любого МП-автомата существует эквивалентный МП-автомат с допуском по пустому стеку без -переходов. |
Построим КС-грамматику по данному автомату, затем по полученной грамматике построим МП-автомат, как указано выше. Заметим, что этот автомат не будет иметь | -переходов, что и требовалось доказать.
Литература
- Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2002. — С. 251.