Совпадение множества языков МП-автоматов и контекстно-свободных языков — различия между версиями
Bochkarev (обсуждение | вклад) (→Эквивалентность МП-автоматов и КС-языков) |
Bochkarev (обсуждение | вклад) (→Построение МП-автомата по заданной КС-грамматике) |
||
Строка 3: | Строка 3: | ||
Далее будут приведены конструкции для построения МП-автомата по заданной КС-грамматике, и наоборот. Также будут приведены теоремы об эквивалентности языков. | Далее будут приведены конструкции для построения МП-автомата по заданной КС-грамматике, и наоборот. Также будут приведены теоремы об эквивалентности языков. | ||
=== Построение МП-автомата по заданной КС-грамматике === | === Построение МП-автомата по заданной КС-грамматике === | ||
− | + | Пусть <tex> G=(V,T,Q,S) </tex> — КС-грамматика. Построим МП-автомат <tex> P=(\{q\},T,V \cup T, \delta ,q,S) </tex>, который допускает <tex> L(G) </tex> по пустому магазину. Функция переходов <tex> \delta </tex> будет определена по следующим правилам: | |
− | |||
*1. <tex> \delta(q,\epsilon,A)=\{(q,\beta )| A \rightarrow \beta</tex> — продукция <tex> G \} </tex> — для каждой переменной <tex> A </tex>. | *1. <tex> \delta(q,\epsilon,A)=\{(q,\beta )| A \rightarrow \beta</tex> — продукция <tex> G \} </tex> — для каждой переменной <tex> A </tex>. | ||
*2. <tex> \delta(q,a,a)=\{(q,\epsilon)\} </tex> для каждого терминала <tex> a </tex>. | *2. <tex> \delta(q,a,a)=\{(q,\epsilon)\} </tex> для каждого терминала <tex> a </tex>. | ||
− | + | ||
− | ==== Пример | + | ==== Пример ==== |
Преобразуем грамматику выражений в МП-автомат. Пусть дана грамматика: | Преобразуем грамматику выражений в МП-автомат. Пусть дана грамматика: | ||
*<tex> I \rightarrow a|b|I1|I0|Ia|Ib </tex> | *<tex> I \rightarrow a|b|I1|I0|Ia|Ib </tex> | ||
Строка 15: | Строка 14: | ||
*a) <tex> \delta(q,\epsilon,I)={(q,a), (q,b), (q,Ia), (q,Ib), (q,I0), (q,I1)};</tex> | *a) <tex> \delta(q,\epsilon,I)={(q,a), (q,b), (q,Ia), (q,Ib), (q,I0), (q,I1)};</tex> | ||
*b) <tex> \delta(q,\epsilon,E)={(q,I), (q,E+E), (q,E*E), (q,(E))};</tex> | *b) <tex> \delta(q,\epsilon,E)={(q,I), (q,E+E), (q,E*E), (q,(E))};</tex> | ||
− | *c) <tex> \delta(q,a,a)=\{(q,\epsilon)\}</tex>;<tex> \delta(q,b,b)=\{(q,\epsilon)\}</tex>; | + | *c) <tex> \delta(q,a,a)=\{(q,\epsilon)\}</tex>; <tex> \delta(q,b,b)=\{(q,\epsilon)\}</tex>;...<tex> \delta(q,*,*)=\{(q,\epsilon)\}</tex>; если входной символ совпадает с вершиной стека, то вершина удаляется. |
Пункты a,b образованы по первому правилу построения функции переходов, пункт c по второму правилу. | Пункты a,b образованы по первому правилу построения функции переходов, пункт c по второму правилу. | ||
+ | ==== Корректность построения ==== | ||
+ | Пусть <tex> w\in L(G)</tex>, тогда <tex> w </tex> имеет следующее левое порождение: | ||
+ | <tex> S = \gamma_1 \Rightarrow \gamma_2 \Rightarrow ... \Rightarrow \gamma_n=w</tex>. | ||
+ | Покажем индукцией по <tex> i </tex>, что <tex> (q,w,S)\vdash^*(q,y_i,\alpha_i)</tex>: | ||
+ | *База. Очевидно, что <tex> (q,w,S)\vdash^*(q,w,S) </tex> | ||
+ | *Переход. Предположим, что <tex> (q,w,S)\vdash^*(q,w_i,\alpha_i) </tex>. Заметим, что шаг порождения <tex> y_i \Rightarrow y_{i+1}</tex> включает замену некоторой переменной <tex> A </tex> ее продукцией <tex> \beta </tex>. Правило 1 построения МП-автомата позволяет на заменить <tex> A </tex> на вершине стека на цепочку <tex> \beta </tex>, а правило 2 позволяет затем сравнить любые терминалы на вершине со входными символами. В результате достигается МО <tex> (q,y_{i+1},\alpha_{i+1}) </tex>. | ||
+ | *Также заметим, что <tex> \alpha_n = \epsilon</tex>. Таким образом <tex> (q,w,S)\vdash^*(q,\epsilon,\epsilon) </tex>, т.е допускает <tex> P </tex> по пустому стеку. | ||
{{Теорема | {{Теорема | ||
|about= О совпадении КС-языков и множества языков МП-автомата | |about= О совпадении КС-языков и множества языков МП-автомата | ||
− | |statement= Если МП-автомат <tex> P </tex> построен по грамматике <tex> G </tex> по указанной выше конструкции, то <tex> N(P) | + | |statement= Если МП-автомат <tex> P </tex> построен по грамматике <tex> G </tex> по указанной выше конструкции, то <tex> N(P) \geq L(G) </tex> |
+ | |proof= Очевидно из того, что мы доказали корректность построения. | ||
}} | }} |
Версия 02:49, 15 января 2011
Эта статья находится в разработке!
Содержание
Эквивалентность МП-автоматов и КС-языков
Далее будут приведены конструкции для построения МП-автомата по заданной КС-грамматике, и наоборот. Также будут приведены теоремы об эквивалентности языков.
Построение МП-автомата по заданной КС-грамматике
Пусть
— КС-грамматика. Построим МП-автомат , который допускает по пустому магазину. Функция переходов будет определена по следующим правилам:- 1. — продукция — для каждой переменной .
- 2. для каждого терминала .
Пример
Преобразуем грамматику выражений в МП-автомат. Пусть дана грамматика:
Множеством входных символов является
. Эти символы, вместе с переменными , образуют магазинный алфавит. Функция переходов определена следующим образом:- a)
- b)
- c) ; ;... ; если входной символ совпадает с вершиной стека, то вершина удаляется.
Пункты a,b образованы по первому правилу построения функции переходов, пункт c по второму правилу.
Корректность построения
Пусть
, тогда имеет следующее левое порождение: . Покажем индукцией по , что :- База. Очевидно, что
- Переход. Предположим, что . Заметим, что шаг порождения включает замену некоторой переменной ее продукцией . Правило 1 построения МП-автомата позволяет на заменить на вершине стека на цепочку , а правило 2 позволяет затем сравнить любые терминалы на вершине со входными символами. В результате достигается МО .
- Также заметим, что . Таким образом , т.е допускает по пустому стеку.
Теорема (О совпадении КС-языков и множества языков МП-автомата): |
Если МП-автомат построен по грамматике по указанной выше конструкции, то |
Доказательство: |
Очевидно из того, что мы доказали корректность построения. |