ДМП-автоматы и неоднознчность
Эта статья находится в разработке!
Теоремы
Теорема: |
Если для некоторого ДМП автомата , то имеет однозначную КС-грамматику |
Доказательство: |
Утверждаем, что конструкция теоремы 6.14 порождает однознач- ную КС-грамматику G, когда МП-автомат, к которому она применяется, детерминиро- ван. Вначале вспомним (см. теорему 5.29), что для однозначности грамматики G доста- точно показать, что она имеет уникальные левые порождения. Предположим, P допускает w по пустому магазину. Тогда он делает это с помощью одной-единственной последовательности переходов, поскольку он детерминирован и не может работать после опустошения магазина. Зная эту последовательность переходов, мы можем однозначно определить выбор каждой продукции в левом порождении w в G. Правило автомата P, на основании которого применяется продукция, всегда одно. Но правило, скажем, δ(q, a, X) = {(r, Y1Y2...Yk)}, может порождать много продукций грамма- тики G, с различными состояниями в позициях, отражающих состояния P после удаления каждого из Y1, Y2, ..., Yk. Однако, поскольку P детерминирован, осуществляется только одна из этих последовательностей переходов, поэтому только одна из этих продукций в действительности ведет к порождению w. |
Теорема: |
Если для некоторого ДМП-автомата , то имеет однозначную КС-грамматику |
Доказательство: |
Пусть будет “концевым маркером”, отсутствующим в цепочках языка , и пусть . Таким образом, цепочки языка представляют собой цепочки из , к которым дописан символ . Тогда имеет префиксное свойство, и по теореме 6.19 для некоторого ДМП-автомата . По теореме 6.20 существует однозначная грамматика , порождающая язык , т.е. .Теперь по грамматике Утверждаем, что построим , для которой . Для этого нужно лишь избавиться от маркера в цепочках. Будем рассматривать как переменную грамматики и введем продукцию ; остальные продукции и одинаковы. Поскольку , получаем, что . однозначна. Действительно, левые порождения в совпадают с левыми порождениями в , за исключением последнего шага в — изменения на . Таким образом, если бы терминальная цепочка имела два левых порождения в , то имела бы два порождения в . Поскольку однозначна, также однозначна. |