Алгоритм построения МП-автомата по КС-грамматике
МП-автомат называют эквивалентным К С-грамматике , если язык, допускаемый , совпадает с языком, порождаемым грамматикой , т.е. если .
Опишем алгоритм построения по заданной КС-грамматике эквивалентного ей МП-автомата, а также алгоритм построения по заданному МП-автомату КС-грамматики, которой он эквивалентен.
Для исходной КС-грамматики определим МП-автомат (с единственным состоянием ), система команд которого строится следующим образом: для каждого правила , принадлежащего , в записывается команда и для каждого — команда . Никаких других команд в системе команд нет.
Пример 8.16. Пусть дана грамматика , множество правил вывода которой есть .
Тогда эквивалентный ей МП-автомат задается следующей системой команд:
(мы использовали сокращенную запись нескольких команд с одинаковыми левыми частями по аналогии с тем, как мы это делаем при записи множества правил вывода грамматики).
В системе команд МП-автомата, который строится по заданной КС-грамматике так, как это описано выше, мы видим два "сорта" команд:
1) команды, "моделирующие" применение правил, исходной грамматики (в данном примере это команды первой строки); при выполнении каждой такой команды МП-автомат делает λ-такт, т.е. не продвигает головку по входной ленте; 2) команды "сравнения", согласно которым МП-автомат должен убирать верхний символ магазина всякий раз, когда он совпадает с обозреваемым символом на ленте.
Тогда, читая входную цепочку, такой МП-автомат "моделирует" левый вывод этой цепочки в исходной грамматике, применяя каждый раз, когда верхним символом магазина оказывается нетерминал, команду "первого сорта" и всякий раз, когда верхним символом магазина оказывается терминал исходной грамматики, "команду сравнения".
Прочитаем цепочку 
Нетрудно видеть, что этот вывод "моделирует" левый вывод в грамматике:
т.е. МП-автомат, строя допускающую последовательность конфигураций для входной цепочки, на каждом шаге, когда верхний символ магазина не совпадает с очередным символом входной цепочки, должен "угадать" применяемое правило (выбрать в данном примере одну из трех первых команд). Неправильный выбор приведет к тупику, например:
Докажем, что рассмотренный алгоритм дает МП-автомат, эквивалентный исходной КС-грамматике.
Теорема 8.6. МП-автомат эквивалентен КС-грамматике .
Индукцией по длине вывода терминальной цепочки из нетерминала докажем, что если , то
Пусть , то есть ; тогда в есть правило и, следовательно, в есть команда . В таком случае при имеет место выводимость и требуемый вывод на множестве конфигураций МП-автомата построен. Если же цепочка непустая, то тогда, расписывая ее по символам, т.е. полагая , получим
Из последней конфигурации за шагов посредством применения команд вида , где , выводится конфигурация , и, таким образом, .
Пусть теперь доказываемое верно для любого , не превосходящего некоторого для , пусть и первый шаг вывода длины цепочки из нетерминала имеет вид , где и для каждого символ есть символ объединенного алфавита грамматики*. Далее, из цепочки должна быть выведена терминальная цепочка . Это значит, что для каждого из символа выводится какая-то подцепочка цепочки (в частности, если этот символ является терминалом, он будет одним из символов цепочки ). Таким образом, для каждого выполняется , и .
*Цепочка не может быть пустой, так как тоща она окажется последней цепочкой рассматриваемого вывода и его длина будет равна 1, а мы предположили, что его длина равна .
Для длина вывода га» подцепочки не может превышать . Следовательно, согласно предположению индукции, имеем
а для ( и, следовательно, ), согласно построению МП-автомата , . Тогда в силу теоремы 8.5
Кроме того, так как , то в есть правило вывода откуда, согласно построению МП-автомата , в есть команда
Следовательно, если , то и , то есть .
Итак, мы доказали, что .
Чтобы доказать обратное включение, сначала индукцией по длине п вывода на множестве конфигураций МП-автомата докажем, что влечет (для произвольных и ).
Пусть , то есть . Согласно построению МП-автомата , это может быть тогда и только тогда, когда и , то есть .
Пусть доказываемое верно для любого , где , и
 (8.14)
причем первый шаг соответствующего вывода имеет вид
 (8.15)
Это значит, что в системе команд есть команда и, следовательно, правило в множестве правил вывода грамматики есть правило , по которому указанная команда построена. Из (8.14) и (8.15) следует, что имеет место выводимость
 (8.16)
Используя индукцию по длине магазинной цепочки , можно доказать, что из (8.16) следует существование таких входных цепочек , что и имеет место выводимость
 (8.17)
для некоторых , таких, что .
Вывод (8.17) можно прокомментировать так: чтобы достичь заключительной конфигурации, должен выбросить все символы из магазина. Предположим, что к тому моменту, когда покинет магазин (чтобы уже больше туда не вернуться!), будет прочитано некоторое начало входной цепочки — цепочка , когда покинет магазин, будет прочитана следующая подцепочка и так до тех, пока наконец, автомат не прочитает цепочку — конец цепочки .
Из теоремы 8.5 следует, что существуют также выводы
 (8.18)
Все числа при не больше . Тогда согласно предположению индукции, из (8.18) следует, что для каждого в грамматике имеет место , и в силу того, что в есть правило вывода , имеем
то есть , что и требовалось доказать.
Отсюда, если , то , то есть , и в силу доказанного выше языки и совпадают.
Если заметили ошибку, опечатку или есть предложения, напишите в комментариях.
|