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

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
{{В разработке}}
 
{{В разработке}}
 +
==Теоремы==
 
{{Теорема
 
{{Теорема
 
|statement=Если L=N(P) для некоторого ДМП автомата P, то L имеет однозначную КС-грамматику
 
|statement=Если L=N(P) для некоторого ДМП автомата P, то L имеет однозначную КС-грамматику
Строка 14: Строка 15:
 
Утверждаем, что <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>ε</tex>. Таким образом, если бы терминальная цепочка <tex>w</tex> имела два левых порождения в <tex>G</tex>, то <tex>w\$</tex> имела бы два порождения в <tex>G′</tex>. Поскольку <tex>G′</tex> однозначна, <tex>G</tex> также однозначна.
 
}}
 
}}
 +
==Источники информации==

Версия 22:56, 4 января 2015

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

Теоремы

Теорема:
Если L=N(P) для некоторого ДМП автомата P, то L имеет однозначную КС-грамматику
Теорема:
Если [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] имеет префиксное свойство, и по теореме 6.19 [math]L′ = N(P′)[/math] для некоторого ДМП-автомата [math]P′[/math]. По теореме 6.20 существует однозначная грамматика [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]\$ → ε[/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]ε[/math]. Таким образом, если бы терминальная цепочка [math]w[/math] имела два левых порождения в [math]G[/math], то [math]w\$[/math] имела бы два порождения в [math]G′[/math]. Поскольку [math]G′[/math] однозначна, [math]G[/math] также однозначна.
[math]\triangleleft[/math]

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