Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Автоматы и формальные языки

Автор RawonaM, декабря 8, 2011, 20:57

0 Пользователи и 1 гость просматривают эту тему.

RawonaM


Тайльнемер

Предположим, что [tex]L[/tex] регулярен.
Среди свойств регулярных языков есть такое: если [tex]L_1, L_2[/tex] регулярны, то [tex]L_1\cap L_2,\; L_1^R[/tex] регулярны.   ([tex]L_1^R[/tex] — язык, состоящий из всех слов языка [tex]L_1[/tex], записанных в обратном порядке.)
Язык [tex]\{b^*a^*\}[/tex] регулярен, следовательно, по свойству, язык [tex]N:=L^R\cap\{b^*a^*\}[/tex] регулярен.
[tex]N=\{b^ja^i\mid j\geqslant 1,\; i\geqslant 2j-2\}.[/tex]
Пусть [tex]p[/tex] — длина накачки языка [tex]N[/tex].
[tex]b^pa^{2p-2}\in N[/tex], следовательно по лемме о накачке [tex]\exists\, \alpha,\gamma\in\mathbb Z^+\;\exists\,\beta\in\mathbb N\;\left[\alpha+\beta+\gamma=p \quad \wedge \quad \forall k\in\mathbb N\;[b^\alpha(b^\beta)^kb^\gamma a^{2p-2}\in N]\right][/tex].
Однако, при [tex]k=2[/tex]  имеем  [tex]b^\alpha(b^\beta)^kb^\gamma a^{2p-2}=b^{p+\beta}a^{2p-2}\notin N[/tex], т. к.  [tex]2p-2 < 2(p+\beta)-2[/tex]. Следовательно, изначальное предположение неверно, и язык [tex]L[/tex] нерегулярен.

RawonaM

Спасибо, Тайльнемер! Сегодня по дороге на работу как раз меня осенила мысль, что если перевернуть, то по лемме о накачке легко доказывается. А вчера я крутил-крутил, пытаясь напрямую доказать по той же лемме, но ничего не получалось. Возможно ли это вообще?

Тайльнемер

Цитата: RawonaM от декабря  9, 2011, 08:13
Возможно ли это вообще?
Вряд ли. Лемму, конечно, можно переформулировать для такого случая: w=xyz, |yz|≤p.

RawonaM

Дан регулярный язык L. Нужно доказать, что [tex]L'=\{w\in \Sigma*|ww^R \in L\}[/tex] тоже регулярен.

Доказательство: построим недетерминированный автомат принимающий L'. Пусть [tex]A=(\Sigma,Q,q_0,F,\delta)[/tex] детерминированный автомат, принимающий L.
Определим [tex]B=(\Sigma,Q\times Q \cup \{p_0\},p_0,F_B,\mu)[/tex].

[tex]\mu(p_0,\epsilon)=\{q_0\}\times F[/tex]

Для каждых [tex]q,r\in Q , \sigma \in \Sigma[/tex]
[tex]\mu((q,r),\sigma)=\{\delta(q,\sigma)\}\times \{s\in Q|\delta(s,\sigma)=r\}[/tex]

Вот только что-то я не догоняю какие состояния будут принимающими.
[tex]\{(q,q)|q\in Q\}[/tex] или [tex]F\times \{q_0\}[/tex] ?

RawonaM

Цитата: RawonaM от декабря 20, 2011, 19:56
Вот только что-то я не догоняю какие состояния будут принимающими.
[tex]\{(q,q)|q\in Q\}[/tex] или [tex]F\times \{q_0\}[/tex] ?
А все, дошло, первый вариант правилен. Я все язык путал.

RawonaM

Дан язык [tex]L=\{a^{i_1}ba^{i_2}b...a^{i_n}bc^ta^{i_{n-t+1}}| 1\leq n; \forall k (1\le k \le n): i_k \ge 1; 1 \le t \le n\}[/tex].

Нужно построить автомат с магазинной памятью без переходов-эпсилон, принимащий этот язык.

Я затрудняюсь потому что с одной стороны нужно считать сколько a в каждой группе, поэтому нужно впихивать в стек много символов, с другой стороны когда нужно будет найти нужное значение можно будет снимать только по одному символу со стека на каждый символ ввода (т.к. нельзя применять переходы-эпсилон), и поэтому по-моему будет достаточно символов.


RawonaM

Цитата: Тайльнемер от декабря  9, 2011, 08:48
Цитата: RawonaM от декабря  9, 2011, 08:13Возможно ли это вообще?
Вряд ли.
Оказывается это вполне возможно, просто нужно взять i=0 и все в порядке.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр