Доказательство нерегулярности языков: лемма о разрастании — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 23: Строка 23:
  
 
Пусть дан какой-то <tex>n</tex> для него предъявляем слово <tex>\omega=0^n1^n</tex>. После этого слово <tex>\omega</tex> как-то разбили на <tex>x, y, z</tex>. Так как <tex>|xy|\leqslant n</tex>, то из-за выбранного слова <tex>y=0^b</tex>, где <tex>b</tex> больше нуля. Для любого такого разбиения берём <tex>k=2</tex> и получаем <tex>xy^kz=0^{n+b}1^n</tex>, что не является элементом множества слов языка <tex>\{0^a1^a\}_{a\geqslant 0}</tex>, значит этот язык не регулярен.
 
Пусть дан какой-то <tex>n</tex> для него предъявляем слово <tex>\omega=0^n1^n</tex>. После этого слово <tex>\omega</tex> как-то разбили на <tex>x, y, z</tex>. Так как <tex>|xy|\leqslant n</tex>, то из-за выбранного слова <tex>y=0^b</tex>, где <tex>b</tex> больше нуля. Для любого такого разбиения берём <tex>k=2</tex> и получаем <tex>xy^kz=0^{n+b}1^n</tex>, что не является элементом множества слов языка <tex>\{0^a1^a\}_{a\geqslant 0}</tex>, значит этот язык не регулярен.
 
 
'''Интерпретация булевых формул с кванторами как игр для двух игроков'''
 
 
Рассмотрим формулу <tex>\exists x_1 \forall x_2 \exists x_3 \dots Q x_n = \Psi(x_1,\dots ,x_n)</tex>, где <tex>Q</tex> - квантор зависящий от чётности <tex>n</tex>. Теперь возьмём двух игроков и первый будет ставить <tex>x</tex> с нечётными номерами, а второй с чётными. Если в итоге получается истина, то побеждает первый игрок, если получается ложь, то выигрывает второй. Если <tex>\Psi</tex> истинна, то побеждает второй игрок, в противном случае побеждает первый (при правильных ходах). Пусть <tex>\Psi</tex> истинно, тогда отделим первый квантор. <tex>\exists x_1\Phi(x1)</tex>, тогда по предположению есть такой <tex>x_1</tex>, что <tex>\Phi(x_1)</tex> будет истинно. Верно и для любого с предположением для лжи. В итоге получаем, верное утверждение.
 

Версия 03:58, 8 октября 2010

Лемма (О разрастании):
Пусть [math]L[/math] - регулярный язык над алфавитом [math]\Sigma[/math], тогда существует [math]n[/math], такой что для любого слова [math] \omega \in L[/math], длины не меньше [math] n [/math] найдутся слова [math] x,y,z \in \Sigma^*[/math], для которых верно [math]xyz=\omega, y\neq \varepsilon, |xy|\leqslant n[/math] и [math]xy^{k}z\in L[/math] для всех [math] k \geqslant 0[/math].
Доказательство:
[math]\triangleright[/math]

Пусть [math]L[/math] - регулярный язык над алфавитом [math]\Sigma[/math], тогда найдётся автомат [math]A[/math], допускающий язык [math]L[/math]. Обозначим размер автомата [math]A[/math], как [math]n[/math]. В языке [math]L[/math] найдётся слово [math]\omega[/math] длины не меньше [math]n[/math]. Рассмотрим переходы в автомате [math]\langle s,\omega\rangle \vdash\langle u_1, \omega[0]^{-1}\omega\rangle\vdash\dots\vdash\langle u_{l},\epsilon\rangle, \: l\geqslant n[/math]. Так как [math]l[/math] не меньше количества состояний в автомате [math]n[/math], то в переходах будет совпадение. Пусть [math]u_i[/math] и [math]u_j[/math] - первое совпадение. Тогда в нашем слове [math]\omega[/math] можно размножить кусок, который отвечает за переход, от состояния [math]u_i[/math] к состоянию [math]u_j[/math]. То есть если верно [math]\langle s, xyz\rangle \vdash^*\langle u_i, yz\rangle\vdash^*\langle u_j, z\rangle\vdash^*\langle u_l, \varepsilon\rangle[/math], то тогда верно [math]\langle s, xy^kz\rangle \vdash^*\langle u_i, y^kz\rangle\vdash^*\langle u_j, y^{k-1}z\rangle\vdash^*\langle u_j, z\rangle\vdash^*\langle u_l, \varepsilon\rangle[/math]. Тогда автомат [math]A[/math] допускает слово [math]xy^kz[/math], следовательно [math]xy^kz[/math] принадлежит регулярному языку [math]L[/math].

"Картинка"
[math]\triangleleft[/math]


Доказательство нерегулярности языка

Чаще используется отрицание леммы для доказательства нерегулярности языка. Пусть [math]L[/math] - язык над алфавитом [math]\Sigma[/math]. Если для любого натурального [math]n[/math] найдётся такое слово [math]\omega[/math] из данного языка, что его длина будет не меньше [math] n[/math] и при любом разбиении на три слова [math]x,y,z[/math] такие, что [math] : y[/math] не пустое слово, длина [math]xy[/math] не больше [math]n[/math], есть [math]k[/math] такое, что [math]xy^kz \overline\in L[/math], то язык [math]L[/math] - не регулярный.


Пример 1 Язык правильных скобочных последовательностей не регулярен.

Пусть дан какой-то [math]n[/math] для него предъявляем слово [math]\omega=(^n)^n[/math]. После этого слово [math]\omega[/math] как-то разбили на [math]x, y, z[/math]. Так как [math]|xy|\leqslant n[/math], то из-за выбранного слова [math]y=(^b[/math], где [math]b[/math] больше нуля. Для любого такого разбиения берём [math]k=2[/math] и получаем [math]xy^kz=(^{n+b})^n[/math], что не является правильной скобочной последовательностью. Значит язык правильных скобочных последовательностей не регулярный язык.

Пример 2 Язык [math]\{0^a1^a\}_{a\geqslant 0}[/math]

Пусть дан какой-то [math]n[/math] для него предъявляем слово [math]\omega=0^n1^n[/math]. После этого слово [math]\omega[/math] как-то разбили на [math]x, y, z[/math]. Так как [math]|xy|\leqslant n[/math], то из-за выбранного слова [math]y=0^b[/math], где [math]b[/math] больше нуля. Для любого такого разбиения берём [math]k=2[/math] и получаем [math]xy^kz=0^{n+b}1^n[/math], что не является элементом множества слов языка [math]\{0^a1^a\}_{a\geqslant 0}[/math], значит этот язык не регулярен.