Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 1683 / 243 | Оценка: 5.00 / 5.00 | Длительность: 14:18:00
ISBN: 978-5-94774-714-0
Специальности: Программист, Математик
Лекция 6:

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

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >

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

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

Теорема 6.3. (о разрастании для автоматных языков)

Пусть L - бесконечный автоматный язык. Тогда существует такая константа n, что любое слово w \in  L длины |w| > n можно разбить на три части x, y и z так, что w = xyz и

  1. |xy| <= n ;
  2. |y| > 0 ;
  3. для любого m >= 0 слово wm = x ym z принадлежит языку L.

(Здесь y^{0}= \varepsilon , y^{1}=y, y^{i+1} = y^{i}y ).

Доказательство Так как язык L автоматный, то существует ДКА A=<\Sigma , Q, q_{0}, F, \Phi  >, распознающий L. Пусть |Q|= n и слово w=w_{1}w_{2} \dots  w_{k} \in  L имеет длину k > n. Рассмотрим путь p=(q_0=q_{i_0},q_{i_1}, \ldots , q_{i_k}) в диаграмме A, который несет слово w. Очевидно, что среди первых (n+1) состояний этого пути хотя бы одно встречается дважды. Выберем первое из таких состояний q \in  Q. Тогда для некоторой пары чисел l < j <= n имеем q_{i_l} =q_{i_j}= q. Пусть x=w1w2 ... wl - это префикс w, который переводит q0 в q_{i_l}=q, y=w_{i+1}\ldots w_j - это подслово w, которое переводит q_{i_l}=q в q_{i_j}= q, и z = w_{j+1}\ldots w_k - это суффикс w, который переводит q_{i_j}= q в q_{i_k} \in F. x и z могут быть пусты, но |y| = j-l >= 1. Длина |xy| = j <= n. Таким образом, условия (1) и (2) теоремы выполнены. Нетрудно убедиться и в выполнении условия (3). Действительно, выбросив из пути p цикл q_{i_l}=q, \ldots , q_{i_j}, получим путь p0 из q0 в q_{i_k}\in F, который несет слово xz, а повторив этот цикл m раз, получим путь p0 из q0 в q_{\{ }i_{k}\} \in  F, который несет слово xym z. Следовательно, для любого m >= 0 w_{m} = x y^{m} z \in  L.

Содержательно, эта теорема утверждает, что у всякого достаточно длинного слова из автоматного языка имеется непустое подслово, которое можно вырезать или повторить сколько угодно раз, оставаясь внутри языка. Как, используя теорему ref{th-razr}, доказать, что некоторый язык L не является автоматным? Это можно сделать, используя схему доказательства "от противного":

  1. Предположим, что L автоматный язык. Тогда для него имеется константа n из утверждения теоремы ref{th-razr}.
  2. Определим по n некотрое "специальное" слово w из L длины > n и докажем, что для любого разбиения w = xyz, удовлетворяющего условиям (1) и (2) теоремы, найдется такое k >= 0, что слово wk=xyk z не принадлежит L.
  3. На основании полученного противоречия делаем вывод, что L - не автоматный язык.

Разумеется, в этой схеме самым сложным является выбор "специального" слова w в пункте (2). Что касается, подбора такого k >= 0, для которого w_{k} \notin  L, то, как правило, достаточно рассмотреть k = 0 или k = 2.

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

Рассмотрим несколько примеров применения теоремы о разрастании.

Пример 6.4. Покажем, что язык L1 ={ w =0i 1i | i >= 1 } не является автоматным.

Предположим, что он автоматный. Тогда для него имеется n из утверждения теоремы 6.3. Рассмотрим следующее ("специальное" !) слово w = 0n 1n. Очевидно, что w \in  L_{1}. Предположим, что существует разбиение w = xyz, удовлетворяющего условиям (1) и (2) теоремы. Так как по условию (2) |xy| <= n, то y = 0i для некоторого i>0. Но тогда слово w_{0} = xz= 0^{n-i}1^{n} \notin  L_{1}, что противоречит условию (3) теоремы. Следовательно язык L1 не автоматный.

Пример 6.5. Покажем, что язык СКОБ правильных скобочных последовательностей в алфавите { (, ) } не является автоматным.

Схема доказательства та же. В качестве специального слова выберем слово w = (n )n, оно, очевидно, принадлежит СКОБ. Тогда для всякого разбиения w = xyz такого, что |xy| <= n слово y = (i для некоторого i>0. И, как и в предыдущем примере, слово w_{0} = xz= (^{n-i})^{n} \notin  СКОБ, что противоречит условию (3) теоремы. Следовательно, язык СКОБ не автоматный.

Пример 6.6. Покажем, что язык L2 ={ w =0i 1j | i <= 2j+1 } не является автоматным.

Здесь, предположив, что L2 автоматный язык и зафиксировав константу n из теоремы 6.3, рассмотрим слово w = 0^{\{ }2n+1\} 1^{n} \in  L_{2}. Для всякого разбиения w = xyz такого, что |xy| <= n слово y = 0i для некоторого i>0. Рассмотрим слово w2 = x y2 z = 0{2n+1+i}1n. Но 2n+1+i \geq 2n+2 \not\leq 2n+1. Следовательно, w_{2} \notin  L_{2} и язык L2 не является автоматным.

Пример 6.7. Рассмотрим язык "квадратов" в унарном алфавите { | }:

L_3 =\{ |^{i^2}\ |\ i \geq 0 \}

Здесь, предположив, что L3 автоматный язык и зафиксировав константу n из теоремы 6.3, рассмотрим слово w = |{n2}. Для всякого разбиения w = xyz такого, что |xy| <= n слово y = |i для некоторого 0 < i <= n. Тогда w_0= xz = |^{n^2 - i}. Но n2 - i >= n2 -n > n2 -2n +1 =(n-1)2. Следовательно, n2 - i не является полным квадратом и w_{0} \notin  L_{3}, т.е. язык "квадратов" L3 не является автоматным.

Пример 6.8. Рассмотрим язык "простых чисел" в унарном алфавите { | }:

L_{pr} =\{ |^{p}\ |\ p - \textit{ простое число } \}

Предположим, что Lpr - автоматный язык и зафиксируем для него константу n из теоремы 6.3. Выберем простое число p > n и рассмотрим слово w = |p. Пусть w = xyz - произвольное разбиение w такое, что |xy| <= n. Тогда для некоторого 0 < i <= n слово y = |i и xz = |p -i. Положим k = p - i и рассмотрим слово wk = x yk z. Его длина p' равна |x| +k|y| + |z|= (p-i)(i+1). Так как 1 <= i < n+1 <= p, то p' - составное число и w_{k} \notin  L_{pr}. Следовательно, Lpr - не автоматный язык. Заметим, что в этом примере k выбирается для каждого n по-своему.

Еще один прием доказательства неавтоматности языка L состоит в том, чтобы вместо L рассмотреть некоторый язык L' = op(L,L1,... , Lk), полученный из L и автоматных языков L1,... , Lk с помощью операций op, сохраняющих автоматность. Если доказать, что L' не является автоматным, то и исходный язык L не автоматен.

Пример 6.9. Рассмотрим язык L_{4} =\{  0^{i} 1^{j} | i \ne  j \}.

Пусть L5= {0i1j | i >= 1, j >= 1}. Очевидно, что язык L5 автоматный. Нетрудно заметить, что его пересечение с дополнением L4 совпадает с языком L1 из примера 6.4, т.е. L_{1} = L_{5} \cap  o\verline\{ L_{4}\}. Так как мы установили, что L1 не автоматный, то и L4 не является автоматным.

Являются ли условия теоремы 6.3 достаточными для того, чтобы язык оказался автоматным? Следующий пример показывает, что ответ на этот вопрос отрицателен.

Пример 6.10.Пусть L6 ={cr ai bi | r >= 1 , i>= 0 }, L7= { aibj | i >= 0, j >= 0}. Рассмотрим язык L_{8} = L_{6} \cup  L_{7}.

Для этого языка можно в качестве n выбрать 1. Каждое слово w из L8 принадлежит L6 или L7. Если слово w= c^{r} a^{i} b^{i} \in  L_{6}, то оно представимо в виде xyz, где x=\varepsilon , y=c, z= c^{r-1} a^{i} b^{i} ( r \ge  1, i \ge  0 ). Тогда w0 = z= cr-1 ai bi ( r >= 1, i >= 1 ) и при r=1 слово w_{0} = a^{i} b^{i} \in  L_{7}, а при r > 1, очевидно, w_{0} \in  L_{6}. При k >= 1 имеем w_{k} =c^{r+k-1} a^{i} b^{i} \in  L_{6}. Если слово w= a^{i} b^{j} \in  L_{7} и i >= 1, то его можно представить как в виде xyz, где x=\varepsilon , y=a, z= a^{i-1} b^{j} ( i \ge  1, j \ge  0 ) и для каждого k>= 0 w_{k} = a^{k}a^{ i-1} b^{j} \in  L_{7}. Если же i =0, то w= bj ( j >= 1 ) и его можно разбить на части x=\varepsilon , y=b, z= b^{j-1} ( j \ge  1 ). И в этом случае для каждого k >= 0 w_{k} =b^{k} b^{j-1} \in  L_{7}. Во всех случаях w_{k} \in  L_{8} и, следовательно язык L8 удовлетворяет условиям теоремы 6.3. Но этот язык не автоматный. Действительно, пусть \varphi : \{ a, b, c\} ^{*} \to  \{ 0, 1 \} ^{*} - это гомоморфизм, заданный как \varphi (a)=0, \varphi (b) = 1, \varphi (c) =\varepsilon. Тогда \varphi (L_{8} \setminus  L_{7}) = \varphi (L_{6}) = L_{1} из примера 6.4. Так как язык L7 является автоматным, а L1 - нет, то и язык L8 не является автоматным.

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >