Математическая теория формальных языков

Основные свойства автоматных языков

Разбить на страницы
Показывать лекцию целиком

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

В первых двух разделах этой лекции доказываются свойства замкнутости класса всех автоматных языков (относительно итерации, конкатенации, объединения, дополнения, пересечения и т. д.). Эти свойства можно использовать как достаточные условия автоматности. Например, если нужно выяснить, является ли язык L автоматным, и удается представить L в виде $$L_1 \cap L_2$$, где языки L1 и L2 автоматные, то и язык L обязательно является автоматным.

В последних двух разделах этой лекции доказывается так называемая лемма о разрастании (в англоязычной литературе pumping lemma), которая во многих случаях позволяет установить неавтоматность формального языка. К сожалению, эта лемма помогает не всегда, так как дает всего лишь необходимое условие, а не критерий автоматности.

3.1. Свойства замкнутости класса автоматных языков

Теорема 3.1.1. Класс автоматных языков замкнут относительно итерации, конкатенации и объединения.

Доказательство. Без ограничения общности можно предположить, что каждый из исходных языков задан конечным автоматом с одним начальным и одним заключительным состоянием. Тогда во всех трех случаях результирующий автомат получается из исходных путем добавления нескольких $$\varepsilon$$ -переходов и состояний и назначения новых начальных и заключительных состояний.

Пример 3.1.2. Пусть $$\Sigma = \{ a , b , c \}$$. Рассмотрим конечный автомат$$M_1 = \langle \{ 1 , 2 , 3 \}, \Sigma , \Delta_1 , \{ 1 \} , \{ 2 \} \rangle ,$$ где$$\Delta_1 = \{ \langle 1 , a , 2 \rangle ,\ \langle 2 , b , 3 \rangle ,\ \langle 3 , c , 1 \rangle \} .$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{1} \ar @`{+/l16mm/} [] ^{} \ar "1,2" ^{a} *=[o][F=]{2} \ar "2,2" ^{b} \\ % *=[o][F-]{3} \ar "1,1" ^{c} }$$ Тогда язык L(M1)* распознается конечным автоматом $$M_2 = \langle \{ 1 , 2 , 3 , 4 \} , \Sigma , \Delta_1 \cup \{ \langle 4 , \varepsilon , 1 \rangle ,\ \langle 2 , \varepsilon , 4 \rangle \} , \{ 4 \} , \{ 4 \} \rangle$$.$$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F=]{4} \ar @`{+/l16mm/} [] ^{} \ar "2,1" _{\varepsilon} \\ *=[o][F-]{1} \ar "2,2" ^{a} *=[o][F-]{2} \ar "3,2" ^{b} \ar "1,1" _{\varepsilon} \\ % *=[o][F-]{3} \ar "2,1" ^{c} }$$

Пример 3.1.3. Пусть $$\Sigma \peq \{ a , b , c \}$$. Рассмотрим конечный автомат M1 из примера 3.1.2 и конечный автомат$$M_2 = \langle \{ 4 , 5 \} , \Sigma , \Delta_2 , \{ 4 \} , \{ 5 \} \rangle ,$$ где$$\Delta_2 = \{ \langle 4 , c , 4 \rangle ,\ \langle 4 , a , 5 \rangle ,\ \langle 5 , c , 5 \rangle \} .$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{4} \ar @`{+/l16mm/} [] ^{} \rloop{0,1} ^{c} \ar "1,2" ^{a} *=[o][F=]{5} \rloop{0,1} ^{c} }$$ Тогда язык $$L ( M_1 ) \cdot L ( M_2 )$$ распознается конечным автоматом$$M_3 \peq \langle \{ 1 , 2 , 3 , 4 , 5 \} , \Sigma , \Delta_1 {{}\cup{}} \Delta_2 {{}\cup{}} \{ \lp 2 , \emptyword , 4 \rp \} , \{ 1 \} , \{ 5 \} \rangle ,$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{1} \ar @`{+/l16mm/} [] ^{} \ar "1,2" ^{a} *=[o][F-]{2} \ar "2,2" ^{b} \ar "1,3" ^{\varepsilon} *=[o][F-]{4} \rloop{0,1} ^{c} \ar "1,4" ^{a} *=[o][F=]{5} \rloop{0,1} ^{c} \\ % *=[o][F-]{3} \ar "1,1" ^{c} }$$ а язык $$L ( M_1 ) \cup L ( M_2 )$$ распознается конечным автоматом$$M_4 = \langle \{ 1 , 2 , 3 , 4 , 5 \} , \Sigma , \Delta_1 \cup \Delta_2 , \{ 1 , 4 \ }, \{ 2 , 5 }\ \rangle .$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{4} \ar @`{+/l16mm/} [] ^{} \rloop{0,1} ^{c} \ar "1,2" ^{a} *=[o][F=]{5} \rloop{0,1} ^{c} \\ *=[o][F-]{1} \ar @`{+/l16mm/} [] ^{} \ar "2,2" ^{a} *=[o][F=]{2} \ar "3,2" ^{b} \\ % *=[o][F-]{3} \ar "2,1" ^{c} }$$

Упражнение 3.1.4. Существует ли такой автоматный язык L, что язык LR не является автоматным?

Упражнение 3.1.5. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Pref(L) не является автоматным?

Упражнение 3.1.6. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Suf(L) не является автоматным?

Упражнение 3.1.7. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Subw(L) не является автоматным?

Упражнение 3.1.8. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Subseq(L) не является автоматным?

Упражнение 3.1.9. Существует ли такой автоматный язык L, что язык$$\mathrm{Cycle} ( L ) \rightleftharpoons \{ x y \mid y x \in L \; \text{для некоторых слов} \; x \; \text{и} \; y \}$$ не является автоматным?

Упражнение 3.1.10. Существует ли такой автоматный язык L, что язык$$\{ w \mid w \in L \text{ или } w^R \in L \}$$ не является автоматным?

Упражнение 3.1.11. Найти праволинейную грамматику, порождающую язык$$\{ w \in \{a,b\}^* \mid | w |_a \ \vdots \ 2 \} \cdot \{ w \in \{c,d\}^* \mid | w |_c \ \vdots \ 2 \} .$$

Упражнение 3.1.12. Найти праволинейную грамматику, порождающую язык L*, если язык L порождается грамматикой$$\begin{align*} S \; {\to} \; a T, \\ T \; {\to} \; b S, \\ T \; {\to} \; a R, \\ R \; {\to} \; c T, \\ R \; {\to} \; \varepsilon . \end{align*}$$

3.2. Пересечение и дополнение автоматных языков

Теорема 3.2.1. Класс автоматных языков замкнут относительно дополнения и пересечения.

Доказательство. Если язык L распознается полным детерминированным конечным автоматом $$\langle Q , \Sigma , \Delta , I , F \rangle$$, то язык $$\Sigma ^* - L$$ распознается конечным автоматом $$\langle Q , \Sigma , \Delta , I , Q - F \rangle$$.

Пересечение выражается через объединение и дополнение (закон де Моргана).

Замечание 3.2.2. Автоматность пересечения двух автоматных языков можно легко доказать и без привлечения теоремы 2.7.1. Для этого достаточно построить по двум конечным автоматам с однобуквенными переходами$$M_1 = \langle Q_1 , \Sigma , \Delta_1 , I_1 , F_1 \rangle ,\quad M_2 = \langle Q_2 , \Sigma , \Delta_2 , I_2 , F_2 \rangle$$ новый конечный автомат$$M = \langle Q_1 \times Q_2 , \Sigma , \Delta , I_1 \times I_2 , F_1 \times F_2 \rangle ,$$ где$$\Delta = \{ \langle \langle p_1 , p_2 \rangle , a , \langle q_1 , q_2 \rangle \rangle \mid \langle p_1 , a , q_1 \rangle \in \Delta_1, \; \langle p_2 , a , q_2 \rangle \in \Delta_2 \} .$$

Упражнение 3.2.3. Обозначим через L язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; a S , T \; {\to} \; a T , \\ S \; {\to} \; b S , T \; {\to} \; b T , \\ S \; {\to} \; abaa T , T \; {\to} \; \varepsilon . \\ S \; {\to} \; babb T , \end{align*}$$ Найти праволинейную грамматику, порождающую язык $$\{a,b\}^* - L$$.

Упражнение 3.2.4. Обозначим через L язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; F , M \; {\to} \; a M , F \; {\to} \; b F \\ S \; {\to} \; a a M , M \; {\to} \; b M , F \; {\to} \; ab F \\ S \; {\to} \; T , M \; {\to} \; \varepsilon , F \; {\to} \; ba F \\ T \; {\to} \; a T , F \; {\to} \; aba F \\ T \; {\to} \; b T , F \; {\to} \; aaa F \\ T \; {\to} \; a a , F \; {\to} \; \varepsilon . \end{align*}$$ Найти праволинейную грамматику, порождающую язык $$\{a,b\}^* - L$$.

Упражнение 3.2.5. Обозначим через L язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; a T , T \; {\to} \; a T , C \; {\to} \; a C , \\ S \; {\to} \; b C , T \; {\to} \; b T , C \; {\to} \; b C , \\ T \; {\to} \; b , C \; {\to} \; a . \end{align*}$$ Найти праволинейную грамматику, порождающую язык $$\{a,b\}^* - L$$.

Упражнение 3.2.6. Существуют ли такие детерминированные конечные автоматы M1 и M2, что язык $$L(M_1) \cup L(M_2)$$ не порождается ни одним детерминированным конечным автоматом с количеством состояний n1n2+n1+n2, где n1 - количество состояний автомата M1 и n2 - количество состояний автомата M2?

3.3. Лемма о разрастании для автоматных языков

Лемма 3.3.1 (pumping lemma, лемма о разрастании, лемма о накачке, лемма-насос). Пусть L автоматный язык над алфавитом $$\Sigma$$. Тогда найдется такое положительное целое число p, что для любого слова $$w \in L$$ длины не меньше p можно подобрать слова $$x , y , z \in \Sigma ^*$$, для которых верно xyz = w, $$y \neq \varepsilon$$, $$| x y | \leqslant p$$ и $$x y ^i z \in L$$ для всех $$i \geqslant 0$$.

Доказательство. Пусть язык L распознается конечным автоматом $$\langle Q , \Sigma , \Delta , I , F \rangle$$, содержащим только переходы с метками длины единица. Положим p = |Q|. Пусть слово w является меткой успешного пути$$\langle q_0 , e_1 , q_1 , e_2 , \ldots , q_n \rangle$$ и $$| w | = n \geqslant p$$. Согласно принципу Дирихле найдутся такие индексы j и k, что $$0 \leqslant j < k \leqslant p$$ и qj = qk (ведь множество индексов $$\{ 0 , 1 , \ldots , p \}$$ содержит p+1 натуральных чисел, а значения qi берутся из множества, содержащего всего p элементов). Выберем слова x, y и z так, что |x| = j, |y| = k - j и xyz = w.

Пример 3.3.2. Пусть $$\Sigma = \{ a , b \}$$. Рассмотрим автоматный язык$$L = \{ (ab)^n \mid n \geqslant 0 \ \cup \{ a (ab)^n \mid n \geqslant 0 \} .$$ Положим p = 3. Тогда для любого слова $$w \in L$$ длины не меньше p найдутся слова $$x , y , z \in \Sigma ^*$$, соответствующие утверждению леммы 3.3.1. Действительно, если w = abu для некоторого слова u, то положим $$x = \varepsilon$$, y = ab, z = u ; иначе w = aabu и можно положить x = a, y = ab, z = u.

Упражнение 3.3.3. Является ли автоматным язык$$\{ a^m b a^m \mid m \geqslant 0 \} ?$$

Упражнение 3.3.4. Является ли автоматным язык ?

Упражнение 3.3.5. Является ли автоматным язык$$\{ a^k b^m a^n \mid k \neq n \; \text{или } m = 0 \} ?$$

Упражнение 3.3.6. Является ли автоматным язык$$\{ (aab)^n a (aba)^n \mid n \geqslant 0 \} ?$$

Упражнение 3.3.7. Является ли автоматным язык$$\{ u a a v \mid u \in \{a,b\}^* ,\ v \in \{a,b\}^* ,\ | u |_b \geqslant | v |_a \} ?$$

Упражнение 3.3.8. Является ли автоматным язык$$\{ u a v \mid u \in \{a,b\}^* ,\ v \in \{a,b\}^* ,\ | u |_b \geqslant | v |_a \} ?$$

Упражнение 3.3.9. Является ли автоматным язык$$\{ a^k w b^k \mid k \geqslant 0 ,\ w \in \{a,b\}^* ,\ | w |_a \vdots 3 \} ?$$

Упражнение 3.3.10. Является ли автоматным язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; a S a , \\ S \; {\to} \; b S a , \\ S \; {\to} \; b S b , \\ S \; {\to} \; \varepsilon ? \end{align*}$$

3.4. Примеры неавтоматных языков

Пример 3.4.1. Рассмотрим язык $$L = \{ a b^n a^n \mid n \geqslant 0 \}$$ над алфавитом $$\Sigma = \{ a , b \}$$. Утверждение леммы 3.3.1 не выполняется ни для какого натурального числа p. Действительно, если w = abpap, то x = abk, y = bm, z = bp-k-map для некоторых $$k \geqslant 0$$ и $$m \geqslant 1$$ или $$x = \varepsilon$$, y = abl, z = bp-lap для некоторого $$l \geqslant 0$$. В обоих случаях $$x y y z \notin L$$. Таким образом, язык L не является автоматным.

Упражнение 3.4.2. Пусть $$\Sigma = \{ a , b , c \}$$. При каких словах $$u \in \{ a , b \}^*$$ и $$v \in \{ a , b \}^*$$ язык $$\{ u^m c v^m \mid m > 0 \}$$ является автоматным?

Замечание 3.4.3. Условие, сформулированное в лемме 3.3.1, является необходимым для автоматности, но не достаточным.

Пример 3.4.4. Пусть $$\Sigma = \{ a , b \}$$. Рассмотрим язык L = {akbman | k=0 или m=n}. Положим p = 1. Тогда для любого слова $$w \in L$$ длины не меньше p найдутся слова $$x , y , z \in \Sigma ^*$$, соответствующие утверждению леммы 3.3.1. Тем не менее язык L не является автоматным, так как$$L \cap \{ a b^m a^n \mid m \geqslant 0 , \; n \geqslant 0 \} = \{ a b^n a^n \mid n \geqslant 0 \} .$$

Лемма 3.4.5*. Пусть L - автоматный язык над алфавитом $$\Sigma$$. Тогда найдется такое положительное целое число p, что для любого слова $$w \in L$$ можно подобрать слова $$x , y , z \in \Sigma ^*$$, для которых верно xyz = w, $$| y | \geqslant [ | w | / p ]$$ и $$x y ^i z \in L$$ для всех $$i \geqslant 0$$. Здесь [m] означает целую часть числа m.

Доказательство. Пусть L распознается конечным автоматом $$\langle Q , \Sigma , \Delta , I , F \rangle$$, содержащим только переходы с метками длины единица. Положим p = |Q|. Пусть слово w является меткой успешного пути $$\langle q_0 , e_1 , q_1 , e_2 , \ldots , q_n \rangle$$. Обозначим l = [|w|/p]. Если l = 0, то положим $$x = \varepsilon$$ и $$y = \varepsilon$$. Пусть $$l > 0$$. Согласно принципу Дирихле найдутся такие натуральные числа j и k, что $$0 \leqslant j < k \leqslant p$$ и qjl = qkl. Выберем слова x, y и z так, что |x| = jl, |y| = kl - jl и xyz = w.

Упражнение 3.4.6. Является ли автоматным язык$$\{ a^m b^n \mid m \neq 1 \text{ или } n \text{ простое } \} ?$$

Упражнение 3.4.7. Является ли автоматным язык$$\{ u u \reverse v \mid u \in \{a,b\}^+ ,\ v \in \{a,b\}^* \} ?$$

Упражнение 3.4.8. Является ли автоматным язык

$$\{ w \in \{a,b\}^* \mid$$ множества $$\{ x \in \{a,b\}^* \mid x a a b \sqsubset w \}$$ и $$\{ x \in \{a,b\}^* \mid x b b a \sqsubset w \}$$ равномощны?

Упражнение 3.4.9. Является ли автоматным язык

$$\{ w \in \{a,b\}^* \mid$$ множества $$\{ x \in \{a,b\}^* \mid x a a b \sqsubset w \}$$ и $$\{ x \in \{a,b\}^* \mid x b a \sqsubset w \}$$ равномощны?

Упражнение 3.4.10. Является ли автоматным язык$$\{ a^k b^n a^n \mid k \geqslant 1 ,\ n \geqslant 0 \} \cup \{ b^k a b^m a^n \mid k \geqslant 0 ,\ m \neq n \} ?$$

Упражнение 3.4.11. Является ли автоматным язык, порождаемый грамматикой$$\begin{align*} F \; {\to} \; abb , \\ F \; {\to} \; abbb F F F , \\ F \; {\to} \; abbbb F F ? \end{align*}$$

Страницы:

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

В первых двух разделах этой лекции доказываются свойства замкнутости класса всех автоматных языков (относительно итерации, конкатенации, объединения, дополнения, пересечения и т. д.). Эти свойства можно использовать как достаточные условия автоматности. Например, если нужно выяснить, является ли язык L автоматным, и удается представить L в виде $$L_1 \cap L_2$$, где языки L1 и L2 автоматные, то и язык L обязательно является автоматным.

В последних двух разделах этой лекции доказывается так называемая лемма о разрастании (в англоязычной литературе pumping lemma), которая во многих случаях позволяет установить неавтоматность формального языка. К сожалению, эта лемма помогает не всегда, так как дает всего лишь необходимое условие, а не критерий автоматности.

3.1. Свойства замкнутости класса автоматных языков

Теорема 3.1.1. Класс автоматных языков замкнут относительно итерации, конкатенации и объединения.

Доказательство. Без ограничения общности можно предположить, что каждый из исходных языков задан конечным автоматом с одним начальным и одним заключительным состоянием. Тогда во всех трех случаях результирующий автомат получается из исходных путем добавления нескольких $$\varepsilon$$ -переходов и состояний и назначения новых начальных и заключительных состояний.

Пример 3.1.2. Пусть $$\Sigma = \{ a , b , c \}$$. Рассмотрим конечный автомат$$M_1 = \langle \{ 1 , 2 , 3 \}, \Sigma , \Delta_1 , \{ 1 \} , \{ 2 \} \rangle ,$$ где$$\Delta_1 = \{ \langle 1 , a , 2 \rangle ,\ \langle 2 , b , 3 \rangle ,\ \langle 3 , c , 1 \rangle \} .$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{1} \ar @`{+/l16mm/} [] ^{} \ar "1,2" ^{a} *=[o][F=]{2} \ar "2,2" ^{b} \\ % *=[o][F-]{3} \ar "1,1" ^{c} }$$ Тогда язык L(M1)* распознается конечным автоматом $$M_2 = \langle \{ 1 , 2 , 3 , 4 \} , \Sigma , \Delta_1 \cup \{ \langle 4 , \varepsilon , 1 \rangle ,\ \langle 2 , \varepsilon , 4 \rangle \} , \{ 4 \} , \{ 4 \} \rangle$$.$$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F=]{4} \ar @`{+/l16mm/} [] ^{} \ar "2,1" _{\varepsilon} \\ *=[o][F-]{1} \ar "2,2" ^{a} *=[o][F-]{2} \ar "3,2" ^{b} \ar "1,1" _{\varepsilon} \\ % *=[o][F-]{3} \ar "2,1" ^{c} }$$

Пример 3.1.3. Пусть $$\Sigma \peq \{ a , b , c \}$$. Рассмотрим конечный автомат M1 из примера 3.1.2 и конечный автомат$$M_2 = \langle \{ 4 , 5 \} , \Sigma , \Delta_2 , \{ 4 \} , \{ 5 \} \rangle ,$$ где$$\Delta_2 = \{ \langle 4 , c , 4 \rangle ,\ \langle 4 , a , 5 \rangle ,\ \langle 5 , c , 5 \rangle \} .$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{4} \ar @`{+/l16mm/} [] ^{} \rloop{0,1} ^{c} \ar "1,2" ^{a} *=[o][F=]{5} \rloop{0,1} ^{c} }$$ Тогда язык $$L ( M_1 ) \cdot L ( M_2 )$$ распознается конечным автоматом$$M_3 \peq \langle \{ 1 , 2 , 3 , 4 , 5 \} , \Sigma , \Delta_1 {{}\cup{}} \Delta_2 {{}\cup{}} \{ \lp 2 , \emptyword , 4 \rp \} , \{ 1 \} , \{ 5 \} \rangle ,$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{1} \ar @`{+/l16mm/} [] ^{} \ar "1,2" ^{a} *=[o][F-]{2} \ar "2,2" ^{b} \ar "1,3" ^{\varepsilon} *=[o][F-]{4} \rloop{0,1} ^{c} \ar "1,4" ^{a} *=[o][F=]{5} \rloop{0,1} ^{c} \\ % *=[o][F-]{3} \ar "1,1" ^{c} }$$ а язык $$L ( M_1 ) \cup L ( M_2 )$$ распознается конечным автоматом$$M_4 = \langle \{ 1 , 2 , 3 , 4 , 5 \} , \Sigma , \Delta_1 \cup \Delta_2 , \{ 1 , 4 \ }, \{ 2 , 5 }\ \rangle .$$ $$\objectwidth={5mm} \objectheight={5mm} \let\objectstyle=\scriptstyle \xymatrix { *=[o][F-]{4} \ar @`{+/l16mm/} [] ^{} \rloop{0,1} ^{c} \ar "1,2" ^{a} *=[o][F=]{5} \rloop{0,1} ^{c} \\ *=[o][F-]{1} \ar @`{+/l16mm/} [] ^{} \ar "2,2" ^{a} *=[o][F=]{2} \ar "3,2" ^{b} \\ % *=[o][F-]{3} \ar "2,1" ^{c} }$$

Упражнение 3.1.4. Существует ли такой автоматный язык L, что язык LR не является автоматным?

Упражнение 3.1.5. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Pref(L) не является автоматным?

Упражнение 3.1.6. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Suf(L) не является автоматным?

Упражнение 3.1.7. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Subw(L) не является автоматным?

Упражнение 3.1.8. Существует ли такой автоматный язык $$L \subseteq \Sigma ^*$$, что язык Subseq(L) не является автоматным?

Упражнение 3.1.9. Существует ли такой автоматный язык L, что язык$$\mathrm{Cycle} ( L ) \rightleftharpoons \{ x y \mid y x \in L \; \text{для некоторых слов} \; x \; \text{и} \; y \}$$ не является автоматным?

Упражнение 3.1.10. Существует ли такой автоматный язык L, что язык$$\{ w \mid w \in L \text{ или } w^R \in L \}$$ не является автоматным?

Упражнение 3.1.11. Найти праволинейную грамматику, порождающую язык$$\{ w \in \{a,b\}^* \mid | w |_a \ \vdots \ 2 \} \cdot \{ w \in \{c,d\}^* \mid | w |_c \ \vdots \ 2 \} .$$

Упражнение 3.1.12. Найти праволинейную грамматику, порождающую язык L*, если язык L порождается грамматикой$$\begin{align*} S \; {\to} \; a T, \\ T \; {\to} \; b S, \\ T \; {\to} \; a R, \\ R \; {\to} \; c T, \\ R \; {\to} \; \varepsilon . \end{align*}$$

3.2. Пересечение и дополнение автоматных языков

Теорема 3.2.1. Класс автоматных языков замкнут относительно дополнения и пересечения.

Доказательство. Если язык L распознается полным детерминированным конечным автоматом $$\langle Q , \Sigma , \Delta , I , F \rangle$$, то язык $$\Sigma ^* - L$$ распознается конечным автоматом $$\langle Q , \Sigma , \Delta , I , Q - F \rangle$$.

Пересечение выражается через объединение и дополнение (закон де Моргана).

Замечание 3.2.2. Автоматность пересечения двух автоматных языков можно легко доказать и без привлечения теоремы 2.7.1. Для этого достаточно построить по двум конечным автоматам с однобуквенными переходами$$M_1 = \langle Q_1 , \Sigma , \Delta_1 , I_1 , F_1 \rangle ,\quad M_2 = \langle Q_2 , \Sigma , \Delta_2 , I_2 , F_2 \rangle$$ новый конечный автомат$$M = \langle Q_1 \times Q_2 , \Sigma , \Delta , I_1 \times I_2 , F_1 \times F_2 \rangle ,$$ где$$\Delta = \{ \langle \langle p_1 , p_2 \rangle , a , \langle q_1 , q_2 \rangle \rangle \mid \langle p_1 , a , q_1 \rangle \in \Delta_1, \; \langle p_2 , a , q_2 \rangle \in \Delta_2 \} .$$

Упражнение 3.2.3. Обозначим через L язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; a S , T \; {\to} \; a T , \\ S \; {\to} \; b S , T \; {\to} \; b T , \\ S \; {\to} \; abaa T , T \; {\to} \; \varepsilon . \\ S \; {\to} \; babb T , \end{align*}$$ Найти праволинейную грамматику, порождающую язык $$\{a,b\}^* - L$$.

Упражнение 3.2.4. Обозначим через L язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; F , M \; {\to} \; a M , F \; {\to} \; b F \\ S \; {\to} \; a a M , M \; {\to} \; b M , F \; {\to} \; ab F \\ S \; {\to} \; T , M \; {\to} \; \varepsilon , F \; {\to} \; ba F \\ T \; {\to} \; a T , F \; {\to} \; aba F \\ T \; {\to} \; b T , F \; {\to} \; aaa F \\ T \; {\to} \; a a , F \; {\to} \; \varepsilon . \end{align*}$$ Найти праволинейную грамматику, порождающую язык $$\{a,b\}^* - L$$.

Упражнение 3.2.5. Обозначим через L язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; a T , T \; {\to} \; a T , C \; {\to} \; a C , \\ S \; {\to} \; b C , T \; {\to} \; b T , C \; {\to} \; b C , \\ T \; {\to} \; b , C \; {\to} \; a . \end{align*}$$ Найти праволинейную грамматику, порождающую язык $$\{a,b\}^* - L$$.

Упражнение 3.2.6. Существуют ли такие детерминированные конечные автоматы M1 и M2, что язык $$L(M_1) \cup L(M_2)$$ не порождается ни одним детерминированным конечным автоматом с количеством состояний n1n2+n1+n2, где n1 - количество состояний автомата M1 и n2 - количество состояний автомата M2?

3.3. Лемма о разрастании для автоматных языков

Лемма 3.3.1 (pumping lemma, лемма о разрастании, лемма о накачке, лемма-насос). Пусть L автоматный язык над алфавитом $$\Sigma$$. Тогда найдется такое положительное целое число p, что для любого слова $$w \in L$$ длины не меньше p можно подобрать слова $$x , y , z \in \Sigma ^*$$, для которых верно xyz = w, $$y \neq \varepsilon$$, $$| x y | \leqslant p$$ и $$x y ^i z \in L$$ для всех $$i \geqslant 0$$.

Доказательство. Пусть язык L распознается конечным автоматом $$\langle Q , \Sigma , \Delta , I , F \rangle$$, содержащим только переходы с метками длины единица. Положим p = |Q|. Пусть слово w является меткой успешного пути$$\langle q_0 , e_1 , q_1 , e_2 , \ldots , q_n \rangle$$ и $$| w | = n \geqslant p$$. Согласно принципу Дирихле найдутся такие индексы j и k, что $$0 \leqslant j < k \leqslant p$$ и qj = qk (ведь множество индексов $$\{ 0 , 1 , \ldots , p \}$$ содержит p+1 натуральных чисел, а значения qi берутся из множества, содержащего всего p элементов). Выберем слова x, y и z так, что |x| = j, |y| = k - j и xyz = w.

Пример 3.3.2. Пусть $$\Sigma = \{ a , b \}$$. Рассмотрим автоматный язык$$L = \{ (ab)^n \mid n \geqslant 0 \ \cup \{ a (ab)^n \mid n \geqslant 0 \} .$$ Положим p = 3. Тогда для любого слова $$w \in L$$ длины не меньше p найдутся слова $$x , y , z \in \Sigma ^*$$, соответствующие утверждению леммы 3.3.1. Действительно, если w = abu для некоторого слова u, то положим $$x = \varepsilon$$, y = ab, z = u ; иначе w = aabu и можно положить x = a, y = ab, z = u.

Упражнение 3.3.3. Является ли автоматным язык$$\{ a^m b a^m \mid m \geqslant 0 \} ?$$

Упражнение 3.3.4. Является ли автоматным язык ?

Упражнение 3.3.5. Является ли автоматным язык$$\{ a^k b^m a^n \mid k \neq n \; \text{или } m = 0 \} ?$$

Упражнение 3.3.6. Является ли автоматным язык$$\{ (aab)^n a (aba)^n \mid n \geqslant 0 \} ?$$

Упражнение 3.3.7. Является ли автоматным язык$$\{ u a a v \mid u \in \{a,b\}^* ,\ v \in \{a,b\}^* ,\ | u |_b \geqslant | v |_a \} ?$$

Упражнение 3.3.8. Является ли автоматным язык$$\{ u a v \mid u \in \{a,b\}^* ,\ v \in \{a,b\}^* ,\ | u |_b \geqslant | v |_a \} ?$$

Упражнение 3.3.9. Является ли автоматным язык$$\{ a^k w b^k \mid k \geqslant 0 ,\ w \in \{a,b\}^* ,\ | w |_a \vdots 3 \} ?$$

Упражнение 3.3.10. Является ли автоматным язык, порождаемый грамматикой$$\begin{align*} S \; {\to} \; a S a , \\ S \; {\to} \; b S a , \\ S \; {\to} \; b S b , \\ S \; {\to} \; \varepsilon ? \end{align*}$$

3.4. Примеры неавтоматных языков

Пример 3.4.1. Рассмотрим язык $$L = \{ a b^n a^n \mid n \geqslant 0 \}$$ над алфавитом $$\Sigma = \{ a , b \}$$. Утверждение леммы 3.3.1 не выполняется ни для какого натурального числа p. Действительно, если w = abpap, то x = abk, y = bm, z = bp-k-map для некоторых $$k \geqslant 0$$ и $$m \geqslant 1$$ или $$x = \varepsilon$$, y = abl, z = bp-lap для некоторого $$l \geqslant 0$$. В обоих случаях $$x y y z \notin L$$. Таким образом, язык L не является автоматным.

Упражнение 3.4.2. Пусть $$\Sigma = \{ a , b , c \}$$. При каких словах $$u \in \{ a , b \}^*$$ и $$v \in \{ a , b \}^*$$ язык $$\{ u^m c v^m \mid m > 0 \}$$ является автоматным?

Замечание 3.4.3. Условие, сформулированное в лемме 3.3.1, является необходимым для автоматности, но не достаточным.

Пример 3.4.4. Пусть $$\Sigma = \{ a , b \}$$. Рассмотрим язык L = {akbman | k=0 или m=n}. Положим p = 1. Тогда для любого слова $$w \in L$$ длины не меньше p найдутся слова $$x , y , z \in \Sigma ^*$$, соответствующие утверждению леммы 3.3.1. Тем не менее язык L не является автоматным, так как$$L \cap \{ a b^m a^n \mid m \geqslant 0 , \; n \geqslant 0 \} = \{ a b^n a^n \mid n \geqslant 0 \} .$$

Лемма 3.4.5*. Пусть L - автоматный язык над алфавитом $$\Sigma$$. Тогда найдется такое положительное целое число p, что для любого слова $$w \in L$$ можно подобрать слова $$x , y , z \in \Sigma ^*$$, для которых верно xyz = w, $$| y | \geqslant [ | w | / p ]$$ и $$x y ^i z \in L$$ для всех $$i \geqslant 0$$. Здесь [m] означает целую часть числа m.

Доказательство. Пусть L распознается конечным автоматом $$\langle Q , \Sigma , \Delta , I , F \rangle$$, содержащим только переходы с метками длины единица. Положим p = |Q|. Пусть слово w является меткой успешного пути $$\langle q_0 , e_1 , q_1 , e_2 , \ldots , q_n \rangle$$. Обозначим l = [|w|/p]. Если l = 0, то положим $$x = \varepsilon$$ и $$y = \varepsilon$$. Пусть $$l > 0$$. Согласно принципу Дирихле найдутся такие натуральные числа j и k, что $$0 \leqslant j < k \leqslant p$$ и qjl = qkl. Выберем слова x, y и z так, что |x| = jl, |y| = kl - jl и xyz = w.

Упражнение 3.4.6. Является ли автоматным язык$$\{ a^m b^n \mid m \neq 1 \text{ или } n \text{ простое } \} ?$$

Упражнение 3.4.7. Является ли автоматным язык$$\{ u u \reverse v \mid u \in \{a,b\}^+ ,\ v \in \{a,b\}^* \} ?$$

Упражнение 3.4.8. Является ли автоматным язык

$$\{ w \in \{a,b\}^* \mid$$ множества $$\{ x \in \{a,b\}^* \mid x a a b \sqsubset w \}$$ и $$\{ x \in \{a,b\}^* \mid x b b a \sqsubset w \}$$ равномощны?

Упражнение 3.4.9. Является ли автоматным язык

$$\{ w \in \{a,b\}^* \mid$$ множества $$\{ x \in \{a,b\}^* \mid x a a b \sqsubset w \}$$ и $$\{ x \in \{a,b\}^* \mid x b a \sqsubset w \}$$ равномощны?

Упражнение 3.4.10. Является ли автоматным язык$$\{ a^k b^n a^n \mid k \geqslant 1 ,\ n \geqslant 0 \} \cup \{ b^k a b^m a^n \mid k \geqslant 0 ,\ m \neq n \} ?$$

Упражнение 3.4.11. Является ли автоматным язык, порождаемый грамматикой$$\begin{align*} F \; {\to} \; abb , \\ F \; {\to} \; abbb F F F , \\ F \; {\to} \; abbbb F F ? \end{align*}$$

Вернуться к учебному плану