Введение в схемы, автоматы и алгоритмы


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


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

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

Примеры неавтоматных языков
1 } не является автоматным.

Предположим, что он автоматный. Тогда для него имеется n из утверждения теоремы 6.3. Рассмотрим следующее ("специальное" !) слово w = 0n 1n. Очевидно, что w

Примеры неавтоматных языков
L1. Предположим, что существует разбиение w = xyz, удовлетворяющего условиям (1) и (2) теоремы. Так как по условию (2) |xy|
Примеры неавтоматных языков
n, то y = 0i для некоторого i>0. Но тогда слово w0 = xz= 0n-i1n
Примеры неавтоматных языков
L1, что противоречит условию (3) теоремы. Следовательно язык L1 не автоматный.

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

Схема доказательства та же. В качестве специального слова выберем слово w = (n )n, оно, очевидно, принадлежит СКОБ. Тогда для всякого разбиения w = xyz такого, что |xy|

Примеры неавтоматных языков
n слово y = (i для некоторого i>0. И, как и в предыдущем примере, слово w0 = xz= (n-i)n
Примеры неавтоматных языков
СКОБ, что противоречит условию (3) теоремы. Следовательно, язык СКОБ не автоматный.

Пример 6.6.

Покажем, что язык L2 ={ w =0i 1j | i

Примеры неавтоматных языков
2j+1 } не является автоматным.

Здесь, предположив, что L2 автоматный язык и зафиксировав константу n из теоремы 6.3, рассмотрим слово w = 0{2n+1}1n

Примеры неавтоматных языков
L2. Для всякого разбиения w = xyz такого, что |xy|
Примеры неавтоматных языков
n слово y = 0i для некоторого i>0. Рассмотрим слово w2 = x y2 z = 0{2n+1+i}1n. Но
Примеры неавтоматных языков
. Следовательно, w2
Примеры неавтоматных языков
L2 и язык L2 не является автоматным.

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

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

Здесь, предположив, что L3 автоматный язык и зафиксировав константу n из теоремы 6.3, рассмотрим слово w = |{n2}. Для всякого разбиения w = xyz такого, что |xy|

Примеры неавтоматных языков
n слово y = |i для некоторого 0 < i
Примеры неавтоматных языков
n. Тогда
Примеры неавтоматных языков
. Но n2 - i
Примеры неавтоматных языков
n2 -n > n2 -2n +1 =(n-1)2. Следовательно, n2 - i не является полным квадратом и w0
Примеры неавтоматных языков
L3, т.е. язык "квадратов" L3 не является автоматным.

Пример 6.8.

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

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

Предположим, что 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' - составное число и wk
Примеры неавтоматных языков
Lpr. Следовательно, Lpr - не автоматный язык. Заметим, что в этом примере k выбирается для каждого n по-своему.
Еще один прием доказательства неавтоматности языка L состоит в том, чтобы вместо L рассмотреть некоторый язык L' = op(L,L1,… , Lk), полученный из L и автоматных языков L1,… , Lk
с помощью операций op, сохраняющих автоматность. Если доказать, что L' не является автоматным, то и исходный язык L не автоматен.
Пример 6.9. Рассмотрим язык L4 ={ 0i 1j | i
Примеры неавтоматных языков
j }.
Пусть L5= {0i1j | i
Примеры неавтоматных языков
1, j
Примеры неавтоматных языков
1}. Очевидно, что язык L5 автоматный. Нетрудно заметить, что его пересечение с дополнением L4 совпадает с языком L1
из примера 6.4, т.е. L1 = L5
Примеры неавтоматных языков
overline{L4}. Так как мы установили, что L1 не автоматный, то и L4 не является автоматным.
Являются ли условия теоремы 6.3 достаточными для того, чтобы язык оказался автоматным? Следующий пример показывает, что ответ на этот вопрос отрицателен.
Пример 6.10.Пусть L6 ={cr ai bi | r
Примеры неавтоматных языков
1 , i
Примеры неавтоматных языков
0 }, L7= { aibj | i
Примеры неавтоматных языков
0, j
Примеры неавтоматных языков
0}. Рассмотрим язык L8 = L6
Примеры неавтоматных языков
L7.
Для этого языка можно в качестве n выбрать 1. Каждое слово w из L8 принадлежит L6 или L7. Если слово w= cr ai bi
Примеры неавтоматных языков
L6 , то оно представимо в виде xyz, где x=?, y=c, z= cr-1 ai bi ( r
Примеры неавтоматных языков
1, i
Примеры неавтоматных языков
0 ). Тогда w0 = z= cr-1 ai bi ( r
Примеры неавтоматных языков
1, i
Примеры неавтоматных языков
1 ) и при r=1 слово w0 = ai bi
Примеры неавтоматных языков
L7, а при r > 1, очевидно, w0
Примеры неавтоматных языков
L6. При k
Примеры неавтоматных языков
1 имеем wk =cr+k-1 ai bi
Примеры неавтоматных языков
L6. Если слово w= ai bj
Примеры неавтоматных языков
L7 и i
Примеры неавтоматных языков
1, то его можно представить как в виде xyz, где x=?, y=a, z= ai-1 bj ( i
Примеры неавтоматных языков
1, j
Примеры неавтоматных языков
0 ) и для каждого k
Примеры неавтоматных языков
0 wk = aka i-1 bj
Примеры неавтоматных языков
L7. Если же i =0, то w= bj ( j
Примеры неавтоматных языков
1 ) и его можно разбить на части x=?, y=b, z= bj-1 ( j
Примеры неавтоматных языков
1 ). И в этом случае для каждого k
Примеры неавтоматных языков
0 wk =bk bj-1
Примеры неавтоматных языков
L7. Во всех случаях wk
Примеры неавтоматных языков
L8 и, следовательно язык L8 удовлетворяет условиям теоремы 6.3.


Но этот язык не автоматный. Действительно, пусть
Примеры неавтоматных языков
: {a, b, c}*
Примеры неавтоматных языков
{0, 1 }* - это гомоморфизм, заданный как
Примеры неавтоматных языков
(a)=0,
Примеры неавтоматных языков
(b) = 1,
Примеры неавтоматных языков
(c) =?. Тогда
Примеры неавтоматных языков
(L8 \ L7) =
Примеры неавтоматных языков
(L6) = L1 из примера 6.4. Так как язык L7 является автоматным, а L1 - нет, то и язык L8 не является автоматным.

Содержание раздела