Правоконтекстные грамматики, эквивалентность автоматам — различия между версиями
Строка 8: | Строка 8: | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
− | Множество языков, задаваемых праволинейными грамматиками совпадает со множеством языков, задаваемых конечными автоматами. | + | Множество языков, задаваемых праволинейными грамматиками, совпадает со множеством языков, задаваемых конечными автоматами. |
|proof= | |proof= | ||
− | Пусть имеется конечный автомат. Построим для него праволинейную грамматику. Множеством нетерминалов нашей грамматики будет множество состояний автомата. Для каждой пары состояний автомата <tex>A</tex> и <tex>B</tex> | + | Пусть имеется конечный автомат. Построим для него праволинейную грамматику. Множеством нетерминалов нашей грамматики будет множество состояний автомата. Для каждой пары состояний автомата <tex>A</tex> и <tex>B</tex> такой, что имеется переход из <tex>A</tex> в <tex>B</tex> по символу <tex>c</tex>, добавим в грамматику правило <tex> A \to cB </tex>. Затем для каждой пары состояний автомата <tex>A</tex> и <tex>B</tex> такой, что имеется переход из <tex>A</tex> в <tex>B</tex> по символу <tex>c</tex>, и <tex> B </tex> является допускающим состоянием в автомате, добавим в грамматику правило <tex> A \to c </tex>. |
Докажем, что если для автомата верно <tex>\langle S, \alpha \rangle \vdash^* \langle U, \varepsilon \rangle </tex>, то для построенной грамматики верно <tex> S \Rightarrow^* \alpha U </tex>. Будем доказывать индукцией по переходам в автомате. | Докажем, что если для автомата верно <tex>\langle S, \alpha \rangle \vdash^* \langle U, \varepsilon \rangle </tex>, то для построенной грамматики верно <tex> S \Rightarrow^* \alpha U </tex>. Будем доказывать индукцией по переходам в автомате. |
Версия 10:39, 22 октября 2011
Определение: |
Праволинейной грамматикой | называется грамматика, в которой все правила имеют вид , .
Аналогично можно определить леволинейные грамматики.
Теорема: |
Множество языков, задаваемых праволинейными грамматиками, совпадает со множеством языков, задаваемых конечными автоматами. |
Доказательство: |
Пусть имеется конечный автомат. Построим для него праволинейную грамматику. Множеством нетерминалов нашей грамматики будет множество состояний автомата. Для каждой пары состояний автомата и такой, что имеется переход из в по символу , добавим в грамматику правило . Затем для каждой пары состояний автомата и такой, что имеется переход из в по символу , и является допускающим состоянием в автомате, добавим в грамматику правило .Докажем, что если для автомата верно , то для построенной грамматики верно . Будем доказывать индукцией по переходам в автомате.Базой индукции будут переходы за 0 шагов. Индукционный переход: пусть данное свойство выполняется для переходов длины . Докажем что верно и для переходов за шагов.Рассмотрим переход , а именно его последний шаг: Так как для шагов верно, то но по построению грамматики имеется правило , значит . Таким образом доказали для шагов.Докажем в обратную сторону, а именно из следует . Доказательство так же проведем по индукции. Индукция будет идти по количеству примененных подряд правил.Базой индукции будут строки, выводимые в грамматике из начального нетерминала за 0 применений правил.Индукционный переход: пусть верно для применения правил. Рассмотрим произвольную строку, полученную за применений правил. Рассмотрим последнее применение правила. Если оно имело вид , значит в автомате возможен переход , а если , то является допускающим в автомате. Таким образом свойство выполняется для последовательно примененных правил. Эквивалентность языков автомата и грамматики доказана.
Докажем, что если слово выводится в грамматике, то оно допускается автоматом. Рассмотрим последовательность применений правил, дающую слово длины . Для каждого правила вида в автомате существует переход из состояния в состояние по символу . Таким образом, если после применения правил мы можем получить строку вида , то в автомате имеется соответствующая последовательность переходов , а поскольку можно вывести , то хотя бы для одной строки такого вида существует правило , а значит в автомате есть переход . Таким образом автомат допускает слово .Докажем, что если слово допускается автоматом, то его можно вывести в грамматике. Рассмотрим слово Теорема доказана. длины . Рассмотрим какую-либо последовательность переходов автомата, допускающую данное слово . Для каждого одношагового перехода в автомате существует соответствующее правило в грамматике. Значит для подпоследовательности переходов из шага существует соответствующая последовательность применений правил . Для последнего перехода в автомате существует правило . Таким образом, существует последовательность применений правил грамматики, выводящая слово . |
Литература
- Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.