ДМП-автоматы и неоднознчность — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 7: Строка 7:
 
|proof=
 
|proof=
 
Утверждаем, что конструкция теоремы 6.14 порождает однозначную КС-грамматику <tex>G</tex>, когда МП-автомат, к которому она применяется, детерминирован. Вначале вспомним (см. теорему 5.29), что для однозначности грамматики <tex>G</tex> достаточно показать, что она имеет уникальные левые порождения.
 
Утверждаем, что конструкция теоремы 6.14 порождает однозначную КС-грамматику <tex>G</tex>, когда МП-автомат, к которому она применяется, детерминирован. Вначале вспомним (см. теорему 5.29), что для однозначности грамматики <tex>G</tex> достаточно показать, что она имеет уникальные левые порождения.
Предположим, <tex>P</tex> допускает <tex>w</tex> по пустому магазину. Тогда он делает это с помощью одной-единственной последовательности переходов, поскольку он детерминирован и не может работать после опустошения магазина. Зная эту последовательность переходов, мы можем однозначно определить выбор каждой продукции в левом порождении <tex>w</tex> в <tex>G</tex>. Правило автомата <tex>P</tex>, на основании которого применяется продукция, всегда одно. Но правило, скажем, <tex>δ(q, a, X) = {(r, Y1Y2...Yk)}</tex>, может порождать много продукций грамматики <tex>G</tex>, с различными состояниями в позициях, отражающих состояния <tex>P</tex> после удаления каждого из <tex>Y1</tex>, <tex>Y2</tex>, ..., <tex>Yk</tex>. Однако, поскольку <tex>P</tex> детерминирован, осуществляется только одна из этих последовательностей переходов, поэтому только одна из этих продукций в действительности ведет к порождению <tex>w</tex>.
+
 
 +
Предположим, <tex>P</tex> допускает <tex>w</tex> по пустому магазину. Тогда он делает это с помощью одной-единственной последовательности переходов, поскольку он детерминирован и не может работать после опустошения магазина. Зная эту последовательность переходов, мы можем однозначно определить выбор каждой продукции в левом порождении <tex>w</tex> в <tex>G</tex>. Правило автомата <tex>P</tex>, на основании которого применяется продукция, всегда одно. Но правило, скажем, <tex>\delta(q, a, X) = \{(r, Y_1Y_2...Y_k)\}</tex>, может порождать много продукций грамматики <tex>G</tex>, с различными состояниями в позициях, отражающих состояния <tex>P</tex> после удаления каждого из <tex>Y_1</tex>, <tex>Y_2</tex>, ..., <tex>Y_k</tex>. Однако, поскольку <tex>P</tex> детерминирован, осуществляется только одна из этих последовательностей переходов, поэтому только одна из этих продукций в действительности ведет к порождению <tex>w</tex>.
 
}}
 
}}
  
Строка 15: Строка 16:
 
|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>L′ = N(P′)</tex> для некоторого ДМП-автомата <tex>P′</tex>. По [[#t1|теореме 1]] существует однозначная грамматика <tex>G′</tex>, порождающая язык <tex>N(P′)</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>\$ \rightarrow \epsilon</tex>; остальные продукции <tex>G</tex> и <tex>G`</tex> одинаковы. Поскольку <tex>L(G`) = L`</tex>, получаем, что <tex>L(G) = L</tex>.
  
Утверждаем, что <tex>G</tex> однозначна. Действительно, левые порождения в <tex>G</tex> совпадают с левыми порождениями в <tex>G′</tex>, за исключением последнего шага в <tex>G</tex> — изменения <tex>\$</tex> на <tex>ε</tex>. Таким образом, если бы терминальная цепочка <tex>w</tex> имела два левых порождения в <tex>G</tex>, то <tex>w\$</tex> имела бы два порождения в <tex>G′</tex>. Поскольку <tex>G′</tex> однозначна, <tex>G</tex> также однозначна.
+
Утверждаем, что <tex>G</tex> однозначна. Действительно, левые порождения в <tex>G</tex> совпадают с левыми порождениями в <tex>G`</tex>, за исключением последнего шага в <tex>G</tex> — изменения <tex>\$</tex> на <tex>\epsilon</tex>. Таким образом, если бы терминальная цепочка <tex>w</tex> имела два левых порождения в <tex>G</tex>, то <tex>w\$</tex> имела бы два порождения в <tex>G`</tex>. Поскольку <tex>G`</tex> однозначна, <tex>G</tex> также однозначна.
 
}}
 
}}
  
 
==Источники информации==
 
==Источники информации==

Версия 23:14, 4 января 2015

Эта статья находится в разработке!

Теоремы

Теорема (1):
Если [math]L=N(P)[/math] для некоторого ДМП автомата [math]P[/math], то [math]L[/math] имеет однозначную КС-грамматику
Доказательство:
[math]\triangleright[/math]

Утверждаем, что конструкция теоремы 6.14 порождает однозначную КС-грамматику [math]G[/math], когда МП-автомат, к которому она применяется, детерминирован. Вначале вспомним (см. теорему 5.29), что для однозначности грамматики [math]G[/math] достаточно показать, что она имеет уникальные левые порождения.

Предположим, [math]P[/math] допускает [math]w[/math] по пустому магазину. Тогда он делает это с помощью одной-единственной последовательности переходов, поскольку он детерминирован и не может работать после опустошения магазина. Зная эту последовательность переходов, мы можем однозначно определить выбор каждой продукции в левом порождении [math]w[/math] в [math]G[/math]. Правило автомата [math]P[/math], на основании которого применяется продукция, всегда одно. Но правило, скажем, [math]\delta(q, a, X) = \{(r, Y_1Y_2...Y_k)\}[/math], может порождать много продукций грамматики [math]G[/math], с различными состояниями в позициях, отражающих состояния [math]P[/math] после удаления каждого из [math]Y_1[/math], [math]Y_2[/math], ..., [math]Y_k[/math]. Однако, поскольку [math]P[/math] детерминирован, осуществляется только одна из этих последовательностей переходов, поэтому только одна из этих продукций в действительности ведет к порождению [math]w[/math].
[math]\triangleleft[/math]
Теорема (2):
Если [math]L=L(P)[/math] для некоторого ДМП-автомата [math]P[/math], то [math]L[/math] имеет однозначную КС-грамматику
Доказательство:
[math]\triangleright[/math]

Пусть [math]\$[/math] будет “концевым маркером”, отсутствующим в цепочках языка [math]L[/math], и пусть [math]L` = L\$[/math]. Таким образом, цепочки языка [math]L`[/math] представляют собой цепочки из [math]L[/math], к которым дописан символ [math]\$[/math]. Тогда [math]L`[/math] имеет префиксное свойство, и [math]L` = N(P`)[/math] для некоторого ДМП-автомата [math]P`[/math]. По теореме 1 существует однозначная грамматика [math]G`[/math], порождающая язык [math]N(P`)[/math], т.е. [math]L`[/math].

Теперь по грамматике [math]G`[/math] построим [math]G[/math], для которой [math]L(G) = L[/math]. Для этого нужно лишь избавиться от маркера [math]\$[/math] в цепочках. Будем рассматривать [math]\$[/math] как переменную грамматики [math]G[/math] и введем продукцию [math]\$ \rightarrow \epsilon[/math]; остальные продукции [math]G[/math] и [math]G`[/math] одинаковы. Поскольку [math]L(G`) = L`[/math], получаем, что [math]L(G) = L[/math].

Утверждаем, что [math]G[/math] однозначна. Действительно, левые порождения в [math]G[/math] совпадают с левыми порождениями в [math]G`[/math], за исключением последнего шага в [math]G[/math] — изменения [math]\$[/math] на [math]\epsilon[/math]. Таким образом, если бы терминальная цепочка [math]w[/math] имела два левых порождения в [math]G[/math], то [math]w\$[/math] имела бы два порождения в [math]G`[/math]. Поскольку [math]G`[/math] однозначна, [math]G[/math] также однозначна.
[math]\triangleleft[/math]

Источники информации