
Связь автоматных грамматик и конечных автоматов
Грамматика
называется праволинейной, если правая
часть любого правила содержит не более
одного нетерминального символа. При
этом этот нетерминальный символ может
быть только последним символом цепочки
в правой части:
Модифицированной
автоматной грамматикой называется
такая грамматика, у которой все правила
имеют вид:
и
имеется правило с пустой цепочкой
.
Любая автоматная грамматика может быть преобразована в модифицированную.
Пример преобразования праволинейной грамматики в модифицированную:
1. S→cA
2. S→bc 2.1 S→bF
2.2 F→cG
2.3 G→ε
3. S→A 3.1 S→aD Преобразование правила 3 основано на том, что вместо А
3.2 S→cA надо подставить правые части тех правил, у которых в левой
3.3 S→ε части стоит символ А.
4. A→abbS 4.1 A→aD
4.2 D→bE
4.3 E→bS
5. A→cA
6. A→ε
Теорема: Класс языков, распознаваемых конечными автоматами, совпадает с классом языков, порождаемых модифицированными автоматными грамматиками.
При доказательстве теоремы необходимо установить взаимнооднозначное соответствие между модифицированными грамматиками и конечными автоматами. Соответствие строится следующим образом: если задан конечный автомат, то определено множество состояний S, алфавит входных символов T, множество конечных состояний S2, функция перехода δ и начальное состояние s0.
Для грамматики необходимо определить множество нетерминальных символов N, терминальных – Tг , начальный символ Sг и правила вывода P. Будем считать, что множество состояний S определяет множество нетерминальных символов N с точностью до переобозначения. По алфавиту входных символов автомата Т строится алфавит грамматики Тг. В качестве аксиомы грамматики Sг возьмём начальное состояние s0. Правила вывода Р будем строить следующим образом: функция перехода может быть определена набором значений и аргументов функций δ(q,a)=p. Каждой такой записи сопоставим правило: q → ap.
Для грамматики множество конечных состояний S2 описывать не следует.
При сопоставлении
грамматике автомата аналогичным образом
сопоставим
,
если имеется правило
и состояниеq
при входном символе a
переходит в состояние р.
Множество S2
конечных состояний определяется правилом
вида:
.
Каждой цепочке, допускаемой конечным
автоматом, соответствует путь по графу
из начальной вершиныSГ
в конечную вершину К. По данной цепочке
путь можно определить однозначно.
Используя
преобразование грамматик, мы можем
получить правила вида:
.
Подобные правила можно исключить. Кроме
того, возможно наличие нетерминалов,
которые не участвуют в выводе терминальных
цепочек. Такие нетерминалы оказываются
бесполезными, и их также желательно
исключить. Могут оказаться нетерминалы,
которых невозможно достичь из начального
символа. Они называются недостижимыми.
Их также исключают из рассмотрения.
Таким образом, мы можем уменьшить
грамматику.