Доказательство нерегулярности языков: лемма о разрастании — различия между версиями
Zarubkin (обсуждение | вклад) |
Zarubkin (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
|about=О разрастании | |about=О разрастании | ||
|statement=<tex>L</tex> - регулярный <tex>\Rightarrow</tex> <tex>\exists n \:\forall \omega : |\omega| \geqslant n, \omega \in L \: \exists x,y,z : \omega=xyz, y\neq \epsilon, |xy|\leqslant n, \forall k \geqslant 0\: xy^{k}z\in L</tex> | |statement=<tex>L</tex> - регулярный <tex>\Rightarrow</tex> <tex>\exists n \:\forall \omega : |\omega| \geqslant n, \omega \in L \: \exists x,y,z : \omega=xyz, y\neq \epsilon, |xy|\leqslant n, \forall k \geqslant 0\: xy^{k}z\in L</tex> | ||
− | |proof=L - регулярный <tex>\Rightarrow</tex> <tex>\exists</tex> автомат <tex>A : \: n=|Q|</tex> | + | |proof=L - регулярный <tex>\Rightarrow</tex> <tex>\exists</tex> автомат <tex>A : \: n=|Q|</tex> допускающий этот язык. Возьмём <tex>\omega\in L : |\omega|\geqslant n</tex> тогда рассмотрим переходы в автомате <tex>\langle s,\omega\rangle \vdash\langle u_1, \omega[0]^{-1}\omega\dots\vdash\langle u_{l},\epsilon\rangle, \: l\geqslant n</tex>. Так как <tex>l\geqslant n</tex>, то возьмём первое совпадение состояний в автомате <tex>u_i, u_j</tex>. В нашем автомате для <tex>\omega : \: \langle s, xyz\rangle \vdash^*\langle u_i, yz\rangle\vdash^*\langle u_j, z\rangle\vdash^*\langle u_l, \epsilon\rangle</tex>. Тогда <tex>xy^kz</tex> подходит. |
}} | }} | ||
+ | |||
+ | |||
+ | Чаще используется отрицание леммы для доказательства нерегулярности языка. | ||
+ | |||
+ | |||
+ | Пример 1. Правильная скобочная последовательность. | ||
+ | Для <tex>\forall n</tex> мы берём <tex>\omega=(^n)^n</tex>. Так как <tex>|xy|\leqslant n</tex>, то <tex>y=(^b</tex>. Берём <tex>k=2</tex> и получаем <tex>xy^kz=(^{n+b})^n</tex>, что не является правильной скобочной последовательностью. Значит правильная скобочная последовательность не регулярный язык. | ||
+ | |||
+ | Пример 2. Язык <tex>0^a1^a</tex> | ||
+ | Для <tex>\forall n</tex> мы берём <tex>\omega=0^n1^n</tex>. Так как <tex>|xy|\leqslant n</tex>, то <tex>y=0^b</tex>. Берём <tex>k=2</tex> и получаем <tex>xy^kz=0^{n+b}1^n</tex>, что не является элементом нашего языка, значит наш язык не регулярен. |
Версия 04:23, 5 октября 2010
Лемма (О разрастании): |
- регулярный |
Доказательство: |
L - регулярный | автомат допускающий этот язык. Возьмём тогда рассмотрим переходы в автомате . Так как , то возьмём первое совпадение состояний в автомате . В нашем автомате для . Тогда подходит.
Чаще используется отрицание леммы для доказательства нерегулярности языка.
Пример 1. Правильная скобочная последовательность.
Для мы берём . Так как , то . Берём и получаем , что не является правильной скобочной последовательностью. Значит правильная скобочная последовательность не регулярный язык.
Пример 2. Язык
Для мы берём . Так как , то . Берём и получаем , что не является элементом нашего языка, значит наш язык не регулярен.