ДМП-автоматы и неоднознчность — различия между версиями
Строка 2: | Строка 2: | ||
==Теоремы== | ==Теоремы== | ||
{{Теорема | {{Теорема | ||
+ | |id=t1 | ||
+ | |about=1 | ||
|statement=Если <tex>L=N(P)</tex> для некоторого ДМП автомата <tex>P</tex>, то <tex>L</tex> имеет однозначную КС-грамматику | |statement=Если <tex>L=N(P)</tex> для некоторого ДМП автомата <tex>P</tex>, то <tex>L</tex> имеет однозначную КС-грамматику | ||
|proof= | |proof= | ||
Строка 9: | Строка 11: | ||
{{Теорема | {{Теорема | ||
+ | |id=t2 | ||
+ | |about=2 | ||
|statement=Если <tex>L=L(P)</tex> для некоторого ДМП-автомата <tex>P</tex>, то <tex>L</tex> имеет однозначную КС-грамматику | |statement=Если <tex>L=L(P)</tex> для некоторого ДМП-автомата <tex>P</tex>, то <tex>L</tex> имеет однозначную КС-грамматику | ||
|proof= | |proof= | ||
− | Пусть <tex>\$</tex> будет “концевым маркером”, отсутствующим в цепочках языка <tex>L</tex>, и пусть <tex>L′ = L\$</tex>. Таким образом, цепочки языка <tex>L′</tex> представляют собой цепочки из <tex>L</tex>, к которым дописан символ <tex>\$</tex>. Тогда <tex>L′</tex> имеет префиксное свойство, и | + | Пусть <tex>\$</tex> будет “концевым маркером”, отсутствующим в цепочках языка <tex>L</tex>, и пусть <tex>L′ = L\$</tex>. Таким образом, цепочки языка <tex>L′</tex> представляют собой цепочки из <tex>L</tex>, к которым дописан символ <tex>\$</tex>. Тогда <tex>L′</tex> имеет префиксное свойство, и <tex>L′ = N(P′)</tex> для некоторого ДМП-автомата <tex>P′</tex>. По [[#t1|теореме 1]] существует однозначная грамматика <tex>G′</tex>, порождающая язык <tex>N(P′)</tex>, т.е. <tex>L′</tex>. |
Теперь по грамматике <tex>G′</tex> построим <tex>G</tex>, для которой <tex>L(G) = L</tex>. Для этого нужно лишь избавиться от маркера <tex>\$</tex> в цепочках. Будем рассматривать <tex>\$</tex> как переменную грамматики <tex>G</tex> и введем продукцию <tex>\$ → ε</tex>; остальные продукции <tex>G</tex> и <tex>G′</tex> одинаковы. Поскольку <tex>L(G′) = L′</tex>, получаем, что <tex>L(G) = L</tex>. | Теперь по грамматике <tex>G′</tex> построим <tex>G</tex>, для которой <tex>L(G) = L</tex>. Для этого нужно лишь избавиться от маркера <tex>\$</tex> в цепочках. Будем рассматривать <tex>\$</tex> как переменную грамматики <tex>G</tex> и введем продукцию <tex>\$ → ε</tex>; остальные продукции <tex>G</tex> и <tex>G′</tex> одинаковы. Поскольку <tex>L(G′) = L′</tex>, получаем, что <tex>L(G) = L</tex>. |
Версия 23:05, 4 января 2015
Эта статья находится в разработке!
Теоремы
Теорема (1): |
Если для некоторого ДМП автомата , то имеет однозначную КС-грамматику |
Доказательство: |
Утверждаем, что конструкция теоремы 6.14 порождает однозначную КС-грамматику Предположим, , когда МП-автомат, к которому она применяется, детерминирован. Вначале вспомним (см. теорему 5.29), что для однозначности грамматики достаточно показать, что она имеет уникальные левые порождения. допускает по пустому магазину. Тогда он делает это с помощью одной-единственной последовательности переходов, поскольку он детерминирован и не может работать после опустошения магазина. Зная эту последовательность переходов, мы можем однозначно определить выбор каждой продукции в левом порождении в . Правило автомата , на основании которого применяется продукция, всегда одно. Но правило, скажем, , может порождать много продукций грамматики , с различными состояниями в позициях, отражающих состояния после удаления каждого из , , ..., . Однако, поскольку детерминирован, осуществляется только одна из этих последовательностей переходов, поэтому только одна из этих продукций в действительности ведет к порождению . |
Теорема (2): |
Если для некоторого ДМП-автомата , то имеет однозначную КС-грамматику |
Доказательство: |
Пусть теореме 1 существует однозначная грамматика , порождающая язык , т.е. . будет “концевым маркером”, отсутствующим в цепочках языка , и пусть . Таким образом, цепочки языка представляют собой цепочки из , к которым дописан символ . Тогда имеет префиксное свойство, и для некоторого ДМП-автомата . ПоТеперь по грамматике Утверждаем, что построим , для которой . Для этого нужно лишь избавиться от маркера в цепочках. Будем рассматривать как переменную грамматики и введем продукцию ; остальные продукции и одинаковы. Поскольку , получаем, что . однозначна. Действительно, левые порождения в совпадают с левыми порождениями в , за исключением последнего шага в — изменения на . Таким образом, если бы терминальная цепочка имела два левых порождения в , то имела бы два порождения в . Поскольку однозначна, также однозначна. |